关于系统启动时候的疑问

发布于 2022-09-26 12:51:46 字数 166 浏览 15 评论 0

书上看的,cpu启动的时候,会到flash的零地址去执行我们的程序。
问题是,flash的地址空间还没映射,cpu是怎么找到这个地址的?

难道这时候不需要地址??或者说之前还有什么事要做?

如果是通过硬方法找到的,那就是说flash的地址在cpu开启动前就映射好了??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

假面具 2022-10-03 12:51:46

flash不用映射就可以直接寻址,不过这时候是物理地址。

分開簡單 2022-10-03 12:51:46

那地址是从0x00000000开始么?

那以后是在什么时候映射?

锦欢 2022-10-03 12:51:46

先对管脚跳线配置一下。
对于arm,一启动就将0xc0000000映射到0x0,执行bootloader。
(对于arm体系内核空间在0xc0000000以上,用户空间在0xc0000000以下)

捂风挽笑 2022-10-03 12:51:46

CPU启动时先经过Bootstarter后经过Bootloader,然后是Linuxkernel,请问这里说的“我们的程序”指的是哪部分?

双手揣兜 2022-10-03 12:51:46

至少arm肯定是从物理地址0开始执行的,当然有些cpu可能会通过一些管脚拉高拉低来进行设置,但一般都是从物理地址0开始执行代码。 物理地址0处一般放的bootloader, bootloader会引导os, os会开启mmu并建立页表,进行虚拟地址的映射,我想你所说的映射应该是指这里的映射吧

挽你眉间 2022-10-03 12:51:46

系统在上电的时候,会从一固定地址取一条指令执行。不一定是0地址.

之后,bootloader执行完毕,交给kernel处理,-》加载根文件系统->跑应用程序

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文