言归正传了。这篇博文的主要内容是:使用官方提供的系统镜像,重新进行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中,官方提供了很多的源代码,可以自己下载;官方所有源代码地址。如图:

RK3568 支持dts修改显示镜像_RK3568 支持dts修改显示镜像

这里我们目前只需要暂时下载uboot源代码即可,uboot源代码地址

3、下载好了后,把这两个文件移动到虚拟机主机中,并解压。建议放在Home目录下,这样会比较好一点,当然你也可以像我这样,创建一个文件夹来存放。注意,路径中不能有中文,否则会出错的。

RK3568 支持dts修改显示镜像_RK3568 支持dts修改显示镜像_02


三、烧写系统镜像:
上面的准备工作做好了后,就可以开始烧写系统镜像了。

首先将下载好的系统镜像烧写到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 的启动镜像文件,如图:

RK3568 支持dts修改显示镜像_华硕rk3288 u-boot_03


五、更新U-boot:
1、将烧写好的SD卡系统镜像插入到读卡器,并接入到虚拟机中;
2、查看当前SD在虚拟机中的设备块符号地址,命令如下:

lsblk

执行指令后,查找和自己U盘(SD卡)大小一样的设备块,我的是64G的。查看如下,sdb为我的SD卡设备块。

RK3568 支持dts修改显示镜像_linux_04


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盘,更新完成。