http://weibo.com/GTY55IW 首先2440init.s里有复制nand代码的功能,即能从nandflash启动,也有复制nor代码的功能,说明也能从norflash启动,由于我们在编译器里设置了RO BASE为0x30000000,而启动代码里有adr 指令判断reset entry 的地址是不是跟RO BASE相同,从而判断要不要进行代码复制,代码也有判断是从nor 还是从 nand 启动,两种为了加快速度都是把代码复制到内存,nand的复制好像只有128K,代码里也有默认的时钟设置,我这里是400M,由于从nor和从内存起动的的判断是相同的,所以我用USB下载程序到内存时,reset entry的相对地址为0x30000000所以判断的结果是不会进代码复制的,但这里有一个前提,就是你的USB下载必须下载到0x30000000,因为它的复制过程是这样的,如果RO BASE 与reset entry 不相同,则从reset entry处开始复制代码到0x30000000,假设你的USB 下载地址为0x30000001,则复制的代码会被覆盖,但这里还有另外一个技巧,假设你的USB 下载地址为0x31000000,而代码又没有那么长的话,则不会被覆盖。 给个资料参考:http://bbs.csdn.net/ http://bbs.csdn.net/