现在的位置: 首页 > 综合 > 正文

uboot无法识别部分命令的解决办法

2016年11月28日 ⁄ 综合 ⁄ 共 472字 ⁄ 字号 评论关闭

在研究lowlevel_init.s这个文件的时候,发现被编译到4K以外的地址上了,结果导致芯片上电的时候程序一跳到这里就跑飞了,后来在网上找资料,发现可以修改LD的链接顺序,保证NAND FLASH上前4K的内容是我们想要的。

要修改LD的选项就要研究Makefile的内容了。先查看lowlevel_init.s所在目录的Makefile,知道其被编译进libfl2440.o中了。然后再查看uboot根目录底下的Makefile,知道LIBBOARD的值就是libfl2440.o,又有以下语句

$(obj)u-boot : depend /

       $(SUBDIR) $(OBJS) $(LIBBOARD) $(LIBS) $(LIBSCRIPT) $(obj) u-boot.lds

所以我修改u-boot.lds,在start.o的下面按照其格式强制加上libfl2440.o。

修改完成后重新编译,查看System.map文件,发现lowlevel_init这个函数的入口地址变为0x33f80bf0,而SMRDATA的地址变为0x33f80c1c了,说明修改成功。

抱歉!评论已关闭.