言归正传了。这篇博文的主要内容是:使用官方提供的系统镜像,重新进行U-boot的编译。
一:编译环境配置:
1、编译主机:ubuntu 18.04 64bit
2、编译工具链:Linaro GCC 7.0(这个工具链很重要,后面的一切工作都是由它来进行指挥的)
3、micro SD Card(建议使用32G class10 的,速度贼快)
4、安装编译源代码的相关环境:
sudo apt-get update
sudo apt-get install git-core gitk git-gui gcc-arm-linux-gnueabihf gcc-arm-linux-gnueabi device-tree-compiler gcc-aarch64-linux-gnu mtools parted libssl-dev fakeroot
(其中:gcc-arm-linux-gnueabihf 是Linaro GCC 7.0编译工具链)
二:相关文件下载:
1、下载系统镜像,用于模板镜像,以后所有的更新都是在这个系统镜像的基础之上。我使用的是:Debian linaro-stretch-alip-v2.0.8.zip 镜像下载地址。
2、下载u-boot源代码,在github tinkerboard中,官方提供了很多的源代码,可以自己下载;官方所有源代码地址。如图:
这里我们目前只需要暂时下载uboot源代码即可,uboot源代码地址。
3、下载好了后,把这两个文件移动到虚拟机主机中,并解压。建议放在Home目录下,这样会比较好一点,当然你也可以像我这样,创建一个文件夹来存放。注意,路径中不能有中文,否则会出错的。
三、烧写系统镜像:
上面的准备工作做好了后,就可以开始烧写系统镜像了。
首先将下载好的系统镜像烧写到sd卡中,烧录工具可以用win32diskwriter(好像是这个名字),也可以用这个软件Etcher(力推,软件下载地址),然后将SD卡插上板子,测试系统是否能正常工作,如果系统成功进入主界面,说明系统和板子均正常工作,否则就需要你自己去排除问题了。
四、编译U-boot:
1、解压U-boot源代码,并进入文件夹,然后执行如下命令:
cd debian_u-boot
make CROSS_COMPILE=arm-linux-gnueabihf- O=miniarm-rk3288 tinker-rk3288_defconfig all -j4
./miniarm-rk3288/tools/mkimage -n rk3288 -T rksd -d miniarm-rk3288/spl/u-boot-spl-dtb.bin u-boot.img
cat miniarm-rk3288/u-boot.bin >> u-boot.img
注:编译完成后,在主目录下会生成 u-boot.img 的启动镜像文件,如图:
五、更新U-boot:
1、将烧写好的SD卡系统镜像插入到读卡器,并接入到虚拟机中;
2、查看当前SD在虚拟机中的设备块符号地址,命令如下:
lsblk
执行指令后,查找和自己U盘(SD卡)大小一样的设备块,我的是64G的。查看如下,sdb为我的SD卡设备块。
3、更新 u-boot:
找到与自己对应的sd卡设备块后,执行如下指令:
sudo dd if=/home/zhangh/tinkerboard/debian_u-boot-develop/u-boot.img of=/dev/sdb seek=64
注意:
/home/zhangh/tinkerboard/debian_u-boot-develop/u-boot.img 需要写你自己的路径,这个是我的路径,你要替换掉。
sdb 是我的设备块,你自己要替换为你电脑中显示的设备块,有可能不一样的。
4、卸载U盘,更新完成。