这是一个与u-boot相关的基本问题。
为什么 u-boot 代码会自行重新定位?
好吧,如果 u-boot 是从 NOR-flash 或启动 ROM 空间执行,那么这是有道理的,但如果它已经从 SDRAM 运行,为什么它必须再次重新定位自己呢?
这个问题经常出现。好的答案 https://stackoverflow.com/a/5263069/1821972有时也是。
我同意在开发过程中将构建加载到 SDRAM 很方便。这对我有用,我一直这样做。我在闪存中有一些特殊的启动代码,它不启用 MMU/缓存。对于我的 u-boot 构建,我在 flash 和 ram 构建之间切换 CONFIG_SYS_TEXT_BASE。我经常以这种方式运行我的开发构建。
实际上,处理 MMU/高速缓存的重新初始化将是一件非常重要的事情。在我看来,U-Boot 的优点在于简单性,因为它省去了类似的事情。
Denx 的技术主管表达了他的观点opinion http://lists.denx.de/pipermail/u-boot/2004-August/006808.html。 IIRC 他的其他帖子的措辞比那一篇更加强烈。我的印象是他不喜欢重复自己的话。
update: why搬迁。从 RAM 访问内存比从 ROM 访问内存更快,如果目标没有指令缓存,这一点尤其重要。从 RAM 执行允许闪存重新编程;此外(更次要)它允许使用“陷阱”指令设置软件断点;它也更像是目标的正常操作模式,所以如果例如从 RAM 中突发读取是不确定的,在早期启动时会看到失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)