树莓派移植U-boot

本文是本人将Uboot 移植到树莓派上的过程, 其中由于树莓派的特殊性, 参考 https://www.embbnux.com/2014/04/21/raspberry_bootloader_startup/ , 因此并不能算真正意义上的移植, 但是对于Uboot的学习还是非常有帮助的.

目前仅仅是能从串口读取出u-boot 的打印,能进入命令行, 其中有一些问题还没有整明白,不过先记录下来,慢慢填坑。有疑问或者发现本文有错误,请发邮件至[email protected]  , 欢迎交流!

注: 

1) 树莓派版本 : raspberry pi3B

2)   u-boot 版本(注:没有在该版本上做任何改动):  

步骤如下:

1)树莓派连接串口(显示器也可以接HDMI),参考  http://www.cnblogs.com/syyxy/p/9030868.html 

2)获取树莓派交叉编译工具链 

 git clone git://github.com/raspberrypi/tools.git raspberrypi_tools/

3)将工具链拷贝到自己服务器的常用路径, 我是将 raspeberrypi_src/tools/arm-bcm2708   拷贝到了  /usr/local/rpi/目录下:

4)获取U-boot 源代码(请注意我使用的版本) 

 git clone git://git.denx.de/u-boot.git u-boot/

5) cd 到u-boot/ 目录下,编译 rpi_2_defconfig 文件

注: 我们通过 查看根目录下的 config/ 目录,可以看到 和树莓派相关的config文件 有4 个:

可是明显可以根据命名规则, 看出 rpi_2_defconfig 是树莓派2代的 config,   rpi_3_32b_defconfig 是树莓派3B的config,  rpi_3_defconfig 是树莓派3代的config.  rpi_defconfig 不确定。但是我这边只有make  rpi_2_defconfig  才能起来,其他的要么编译报错,要么起不来(串口无任何输出,HDMI 显示彩虹屏)。这是一个坑, 原因待查。我百度的网上所有的资料都说 3 代需要 make rpi_3_defconfig,但是起不来。

 

6) 指定交叉编译工具链, 编译u-boot.bin  

   make CROSS_COMPILE=/usr/local/rpi/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-

最后将 u-boot 的根目录下的 u-boot.bin 拷贝到 树莓派SD卡的根目录,并且在SD卡的同一级目录下的config.txt中,指定kernel文件为u-boot.bin

7) 将SD 卡插回到板子上,  查看串口,或者HDMI ,我串口打印如下:

8) 至此, u-boot 学习, 万里长征的第一步完成了。在我移植的过程中, 由于树莓派的原生bootloader的DMI,串口没有任何显示和打印,因此如果遇到什么问题, 都只能靠猜测。 make rpi_2_defconfig 也是我试了好久(之前一直以为是rpi_3_defconfig,rpi_3_32b_defconfig,rpi_defconfig,压根都没有想过用rpi_2_defconfig), 实在是没办法了,蒙出来的。所以说我能移植出来原因很大程度上是运气好。希望这篇文章能够帮助到遇到问题的朋友。

猜你喜欢

转载自www.cnblogs.com/syyxy/p/9033030.html