今日在看韦东山老师的第二期Linux Driver视频,看到毕业部分的移植最新版的uboot到JZ2440,所以蠢蠢欲动,自己也来试着移植uboot。从来没写过CSDN博客,从前都是看别人的,受益匪浅,帮我填平了很多坑。想在博客中记录自己遇到的问题,希望能帮到别人。
首先下载了uboot最新的源代码,是2017.11版的,解压后发现里面的board目录下根本没有smdk2410.因为2440的架构跟2410很类似,因此在原有的smdk2410的基础上移植会方便很多。所以下载了近期uboot的版本,对比发现uboot 2017.01版中删除了smdk2410,而在uboot 2016.11中还有,于是改由2016.11移植。手上还有tiny4410的板子,打算将uboot 2017.11在这个uboot移植完成之后再移植在4410的板子上。毕竟新版本的就要用新一点的硬件来跑了,都熟悉以下挺好。
首先检查自己的编译链是否能成功编译这个版本的源代码。
我查看了自己系统的arm-linux-gcc版本号,为4.3.2.
之后在uboot的根目录下执行
make smdk2410_defconfig
配置成功,接着执行
make
发现提示以下错误:
lib/asm-offsets.c:1:0: error: bad value (armv4t) for -march= switch
/*
网上查了下,原来是在config的时候没有指定编译链,解决方法如下:
make ARCH=arm CROSS_COMPILE=arm-linux-
之后可以看到编译顺利完成,说明使用这个版本的编译工具编译它没有问题。