[嵌入式linux] u-boot移植问题

[复制链接]
 楼主| Pingo_zp 发表于 2009-12-7 22:05 | 显示全部楼层 |阅读模式
s3c2410,u-boot 从nandflash启动
现在的问题是:在start.s中完成u-boot自拷贝到内存之后,从什么时候或者说什么地方跳转到内存开始执行。
因为从Nandflash启动时u-boot第一阶段是在cpu内部的4KB ram中执行的,具体从什么时候开始跳转到外部的SDRAM中的33f80000开始执行!
请指教!先谢了!
icecut 发表于 2009-12-8 15:30 | 显示全部楼层
最近直接在内存仿真.还没注意这个问题.看一下start.s吧
 楼主| Pingo_zp 发表于 2009-12-8 18:41 | 显示全部楼层
ls的意思是你直接将u-boot下载到内存中执行,我也试过,好像不可以啊。我移植的u-boot1.3.4在nandflash启动没有问题,不过直接下载到内存,go ...的话好像不行
icecut 发表于 2009-12-9 08:51 | 显示全部楼层
你注释掉内存初始化部分.就可以了.那个是绝对地址flash寻址.

bl到c中才时候,就跳到内存中了.
start.s是基于0链接的.而c语言的代码基于TEXT_BASE的内存地址.网上搜吧有解释
arm9-11 发表于 2009-12-16 12:15 | 显示全部楼层
记得是在进入c语言的同时,就进入了SDRAM,你把U-Boot镜像反汇编看看。
sodwell 发表于 2009-12-18 08:48 | 显示全部楼层
拷贝完就跳到内存执行了,就在START.S里面就可以看到跳转程序,注意看拷贝后面那几行
jzy23 发表于 2009-12-23 18:31 | 显示全部楼层
start.S里
执行
     ldr        pc, _start_armboot

_start_armboot:        .word start_armboot
就是跳转到SDRAM里面了,
因为通过对start_armboot链接后已经把这个函数地址已经绑定在RAM中,当执行完ldr pc, label 指令,程序将从标号绑定地址开始执行,

查看u-boot.map可以知道start_armboot标号的地址值:
.text          0x33f810d4      0x300 lib_arm/libarm.a(board.o)
                0x33f811bc                hang
                0x33f811cc                start_armboot
                0x33f810d4                sbrk
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

18

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

6

主题

18

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部