关于系统启动时候的疑问
书上看的,cpu启动的时候,会到flash的零地址去执行我们的程序。
问题是,flash的地址空间还没映射,cpu是怎么找到这个地址的?
难道这时候不需要地址??或者说之前还有什么事要做?
如果是通过硬方法找到的,那就是说flash的地址在cpu开启动前就映射好了??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
flash不用映射就可以直接寻址,不过这时候是物理地址。
那地址是从0x00000000开始么?
那以后是在什么时候映射?
先对管脚跳线配置一下。
对于arm,一启动就将0xc0000000映射到0x0,执行bootloader。
(对于arm体系内核空间在0xc0000000以上,用户空间在0xc0000000以下)
CPU启动时先经过Bootstarter后经过Bootloader,然后是Linuxkernel,请问这里说的“我们的程序”指的是哪部分?
至少arm肯定是从物理地址0开始执行的,当然有些cpu可能会通过一些管脚拉高拉低来进行设置,但一般都是从物理地址0开始执行代码。 物理地址0处一般放的bootloader, bootloader会引导os, os会开启mmu并建立页表,进行虚拟地址的映射,我想你所说的映射应该是指这里的映射吧
系统在上电的时候,会从一固定地址取一条指令执行。不一定是0地址.
之后,bootloader执行完毕,交给kernel处理,-》加载根文件系统->跑应用程序