首先是 连接脚本与 实际的内核映像大小的关系:
关于ELF 格式的了解:
如何通过 ELF 头, 找到各个段。
网上的关于elf 的截图:
那么 segment 与 section 有什么区别呢?
也就是说, section值得是 单个C文件的各个段,
segment 是指 合成之后的 程序中体的各个段。
然后是 修改 elf 文件的生成。
然后是新的存储规划: elf 文件格式 是不能 直接运行的,他首先将 elf 格式的文件放到1M的地方,然后自己提取处 代码 + 数据,放到 64KB的地方。然后 loarder 执行 64KB的代码。
然后去改 连接脚本到 64K .
然后查看 kernel.elf
可以看到已经改过来了。
然后是修改 loader32.c ,这里有个细节, 就是 真正的 代码的地址,并不是 64KB 的地方,有些出入。这里还不是很理解。