rCore-Tutorial-Book-v3
rCore-Tutorial-Book-v3 copied to clipboard
rCore-Tutorial-Book-v3/chapter1/3first-instruction-in-kernel1
内核第一条指令(原理篇) - rCore-Tutorial-Book-v3 3.6.0-alpha.1 文档
https://rcore-os.github.io/rCore-Tutorial-Book-v3/chapter1/3first-instruction-in-kernel1.html
这一课很精彩,Qemu 的介绍、计算机加电启动流程以及链接器的链接过程,都是很好的原理性介绍。:heart:
太精彩了。
赞
内容深入浅出,让人获益匪浅,多谢作者的劳动
深入浅出,对于我这种各个地方都了解一点但是没有将知识串联起来的人非常有帮助。
赞 谢谢
第一次读懂,已年过34岁
勘误:”在前八章我们主要用到 CPU 和物理内存“
@learning310 好像没问题?
@learning310 好像没问题?
理解错误,抱歉。
可以在端序的旁注里添加一张示意图:
"注意这里我们载入的文件带有 .bin 后缀,它并不是上一节中我们移除标准库依赖后构建得到的内核可执行文件,而是还要进行加工处理得到内核镜像。”这句话有语病,刚开始读好几次没看懂;而且这里第一次提到内核镜像,应当加以强调。也许可以改成以下句式,虽然不太简洁但也算是能理解:“注意这里我们载入的文件(内核镜像)带有 .bin 后缀,它并不是上一节中我们移除标准库依赖后构建得到的内核可执行文件。我们还要进行一些加工处理才能得到正确的内核镜像。”
"注意这里我们载入的文件带有 .bin 后缀,它并不是上一节中我们移除标准库依赖后构建得到的内核可执行文件,而是还要进行加工处理得到内核镜像。”这句话有语病,刚开始读好几次没看懂;而且这里第一次提到内核镜像,应当加以强调。也许可以改成以下句式,虽然不太简洁但也算是能理解:“注意这里我们载入的文件(内核镜像)带有 .bin 后缀,它并不是上一节中我们移除标准库依赖后构建得到的内核可执行文件。我们还要进行一些加工处理才能得到正确的内核镜像。”
重写了一下,感谢反馈。
这里建议还是把“在此期间链接器主要完成两件事情:第二件事情是将符号替换为具体地址。”修改一下,“链接器在链接外部目标文件的时候,会将符号转化为地址”,但是你又说“当一个模块被转化为目标文件之后,它的内部符号就已经在目标文件中被转化为具体的地址了”,所以有矛盾。
"不同的段会被编译器放置在内存不同的位置上" 这里应该是被链接器放置在内存不同的位置上吧
Qemu 的启动流程的第一段: ……:即作把作为 bootloader 的 rustsbi-qemu.bin 加载到物理内存以物理地址 0x80000000 开头的区域上,同时…… “即作”应该是多一个“作”字。
没有必要纠结别人用哪几个字表述吧=。= 能理解就行了呗,我觉得已经写很好了
写的太好了, 都串联起来了👍
qemu-system-riscv64
-machine virt
-nographic
-bios ../bootloader/rustsbi-qemu.bin
-device loader,file=target/riscv64gc-unknown-none-elf/release/os.bin,addr=0x80200000
qemu-system-riscv64: Unable to load the RISC-V firmware "../bootloader/rustsbi-qemu.bin"
这个报错是什么原因呢
qemu-system-riscv64 -machine virt -nographic -bios ../bootloader/rustsbi-qemu.bin -device loader,file=target/riscv64gc-unknown-none-elf/release/os.bin,addr=0x80200000 qemu-system-riscv64: Unable to load the RISC-V firmware "../bootloader/rustsbi-qemu.bin" 这个报错是什么原因呢
应该是缺少bootloader这个文件夹