首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

两阶段bootloader, 什么时候在内存储器中运行

2013-03-27 
两阶段bootloader, 什么时候在内存中运行?本帖最后由 Cline 于 2012-10-23 16:56:17 编辑1.reset后从0x000

两阶段bootloader, 什么时候在内存中运行?
本帖最后由 Cline 于 2012-10-23 16:56:17 编辑 1.reset后从0x00000000运行.
2.....
3.Copy代码(自己/第二阶段)到内存中.
4.....
5.ldr pc, _start_armboot
6.运行于内存中?

难道就是因为_start_armboot的link 地址在_TEXT_BASE 之后?
[解决办法]
不太理解你碰到的问题。
bootloader跑出错拉,需要修改?

还是你在学习某个开发板?
[解决办法]
_start_armboot指向哪了?是你自己的代码么?

感觉你理解没问题啊,将pc指向新的内存地址,CPU开始跑_start_armboot指向的代码段。
[解决办法]
不知道你说的是哪一个片子,在S5pv210中无论是NAND还是SD卡启动,都依赖于CPU中的一段内部代码进行过度启动,这段代码存在于iROM中。iROM有64K被映射到boot区,而96K的iRAM就是用于过渡启动的内部缓存区,与iROM一起被映射到iROM的后面。iROM会将第一段的启动代码从外部存储介质拷贝到iRAM这个这个区域中。(第一阶段的Bootloader是从0xD0020010处开始执行的)
[解决办法]
像我用的LPC3250的开发板,当上电启动后会有一个映射,是把IROM映射到地址0x0000000还是把IRAM映射到地址0x0000000,默认都是IROM,然后会拷贝flash里面的程序到RAM中,之后跳转到RAM中去执行,这个是LPC3250的开发板启动过程和别的可能不太一样。

像S3c6410上电就把flash里面前4K的程序考到RAM中,然后跳转到RAM中,1.reset后从0x00000000运行的东西并不是RAM的地址。
[解决办法]
我大概跟LZ有相同的问题,也在探索中,
我用的是三星的S3C2450,关于开机后 从IROM到step stone到外部SDRAM的跳转过程以及他们各自的内存编址感觉很困惑,发了帐帖子:http://topic.csdn.net/u/20121024/09/d223b0a2-62f6-4601-8702-d11698a481a7.html?85149
希望大侠赐教
[解决办法]
ldr pc, _start_armboot
这是位置相关代码。前面的都是位置无关的,前面的是的SRAM里或者norflash里面(地址为0x0开始)运行,然后遇到位置相关代码就根据 链接脚本里的 链接地址 处接着运行代码(一般是sdram ,比如0x30000000)

热点排行