在基于arm的开发平台下,系统启动需要内核,BootLoader,根文件系统
三大块,今天博主记录给ARM开发平台编译并烧写Uboot
的步骤
PS:在本次过程开始前,务必安装对应版本的arm-linux-gcc交叉编译器~
获取Uboot源码
如若不是自己设计的开发板,一般厂家会提供配套的开发源码,可以针对SOC进行配置,这里博主用的是X6818开发平台,已经获取到厂商源码。
对Uboot进行编译
1.把对应的源码包解压到本地文件夹并进入
tar vxf u-boot-2014.07_v3_mipi.tar.bz2
cd u-boot-2014.07
2.还原到出厂状态
使用如下命令进行还原,防止源码在到手前有人对其进行过不需要的改动。
make distclean
3.选定开发平台版本
使用make *_config
(*代表开发平台版本,不同厂商平台名字可能会略有不同),博主的是x6818平台,所以应该是:
make x6818_config
出现如下提示则说明选定成功
4.开始编译
在对源码进行完必要的改动后,在源码根目录使用make
命令,对源码进行编译。
在出现Generate destination file:ubootpak.bin
字样时,则编译完成,可以再源码根目录中找到名为ubootpak.bin
的uboot镜像文件。
Uboot镜像的烧写
启动开发板时按任意键进入BootLoader,输入fast
或者fastboot
进入fastboot
模式,并用OTG线连接电脑与开发板。
使用platform-tools的fastboot工具对uboot镜像进行烧写
fastboot flash ubootpak ./ubootpak.bin
这样就是烧写完成,可以重启啦~
注意:要是烧写出现错误,uboot损坏咋办
这里博主在烧写uboot的时候用错了镜像,导致uboot损坏,后使用SD卡引导的方式使开发板又恢复了过来。
在桌面端linux中插入sd卡,然后cd到uboot源码根目录下,然后在镜像编译完成的情况下使用
sudo dd if=ubootpak.bin of=/dev/sdc bs=512 seek=1 conv=sync
把镜像释放到SD卡上。
PS:这里的/dev/sdc是博主的SD卡位置,在此操作时务必确认自己的SD卡位置,一般sda为主硬盘,sdb为第一个插入的外置存储设备,sdc为第三个,以此类推。
然后把SD卡插入开发板上SD0的位置,再次重启使用SD卡引导启动,若成功引导Uboot,则使用fastboot重新刷写uboot镜像即可。