不管是64M还是128M NAND Flash, 要用S3C2440A的NAND Boot方式启动, 就必须把bootloader的第一阶段(包括初始化CPU, SDRAM, NAND Flash controller等等为把第二阶段bootloader从NAND Flash里读取到SDRAM中所做的准备工作)所有代码链接在bootloader的前4K中.
而在U-boot中,实现这一功能唯一的方式就是把对应的.o写在链接脚本lds文件的相应位置. 官方发布的u-boot 2008.10和2009.8都没有支持NAND启动,因此链接顺序没有这一限制.你的做法是对的, 也是唯一可行的办法.
事实上,你可以看到所有支持NAND启动的u-boot都这样修改过lds文件.
如果不在lds文件中指定链接的顺序, 则默认的.o或者.a文件链接顺序按照编译时链接生成u-boot的传递给ld的顺序决定.