2012-11-14 64 views
1

据我所知,代码指令的地址是虚拟地址,但为了访问各种设备(例如RAM,并行NOR闪存),这些虚拟地址需要转换为物理地址,这项任务由MMU完成。问题是这个翻译过程如何在系统复位时运行(在加电时,我认为MMU中没有入口),这样第一条指令就可以从并行NOR闪存中获取并开始执行。任何人都可以请解释这个过程(对于任何CPU架构ARM,PowerPC,...,我只是猜测这种行为在架构中是通用的)。任何建议表示赞赏。先谢谢了!系统复位时的内存映射

回答

4

加电时,实际上MMU将被禁用。这很通用。

要访问NOR闪存,将会有(至少)一些地址空间的默认映射。第一条指令通常取自0xFFFF0000(ARM)或0xFFFFFFFC(Power PC)及其附近。但是有可以影响这一点的pinstrap选项。启动处理器并不是一般的。

还有很多其他选项(NAND闪存,SPI ROM,MMC)用于存储启动代码。对于一般概念,Hallinan包含一个启动章节。有关详细信息,您需要查看特定CPU的技术手册,例如OMAP4 TRM是ARM的示例,然后找到描述引导过程的部分。

+0

嗨JoeKul,非常感谢您的详细解释和参考资料!看来,在引导加载程序代码真正开始于复位向量之前,引导程序(CPU引导选项)将执行一些初始化,包括将TLB条目映射到适当的引导设备,读取引导加载程序代码并最终跳转到复位向量。如果这个结论不正确,请纠正我。再次感谢! –