Pingo_zp 发表于 2009-12-7 22:05

u-boot移植问题

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
页: [1]
查看完整版本: u-boot移植问题