u-boot移植问题
s3c2410,u-boot 从nandflash启动现在的问题是:在start.s中完成u-boot自拷贝到内存之后,从什么时候或者说什么地方跳转到内存开始执行。
因为从Nandflash启动时u-boot第一阶段是在cpu内部的4KB ram中执行的,具体从什么时候开始跳转到外部的SDRAM中的33f80000开始执行!
请指教!先谢了! 最近直接在内存仿真.还没注意这个问题.看一下start.s吧 ls的意思是你直接将u-boot下载到内存中执行,我也试过,好像不可以啊。我移植的u-boot1.3.4在nandflash启动没有问题,不过直接下载到内存,go ...的话好像不行 你注释掉内存初始化部分.就可以了.那个是绝对地址flash寻址.
bl到c中才时候,就跳到内存中了.
start.s是基于0链接的.而c语言的代码基于TEXT_BASE的内存地址.网上搜吧有解释 记得是在进入c语言的同时,就进入了SDRAM,你把U-Boot镜像反汇编看看。 拷贝完就跳到内存执行了,就在START.S里面就可以看到跳转程序,注意看拷贝后面那几行 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
页:
[1]