板子使用的是友善之臂的zeropi。

关于uboot和kernel,有两份源码,一份是全志官方发布的源码,一份是友善之臂发布的

两者的差异

1.全志H3-Uboot编译_全志H3

目前使用的友善之臂发布的Uboot

安装交叉编译器

下载交叉编译器arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz,然后解压编译器:

$ mkdir -p /opt/FriendlyARM/toolchain
$ tar xf arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz -C /opt/FriendlyARM/toolchain/

然后将编译器的路径加入到PATH中,用vi编辑vi ~/.bashrc,在末尾加入以下内容:

$ export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH
$ export GCC_COLORS=auto

执行一下~/.bashrc脚本让设置立即在当前shell窗口中生效,注意"."后面有个空格:

$ . ~/.bashrc

这个编译器是64位的,不能在32位的Linux系统上运行,安装完成后,你可以快速的验证是否安装成功:

$ arm-linux-gcc -v
gcc version 4.9.3 (ctng-1.21.0-229g-FA)

 编译U-boot

下载U-boot源码,并切换分支:

$ git clone https://github.com/friendlyarm/u-boot.git -b sunxi-v2017.x --depth 1

编译U-boot:

$ apt-get install swig python-dev python3-dev
$ cd u-boot
$ make nanopi_h3_defconfig ARCH=arm CROSS_COMPILE=arm-linux-
$ make ARCH=arm CROSS_COMPILE=arm-linux-

这里使用的配置文件nanopi_h3_defconfig可以支持友善电子所有的H3/H2+的开发板。
编译成功后会生成文件u-boot-sunxi-with-spl.bin。

更新SD上的U-boot:
将SD卡插入PC中,然后执行如下命令:

$ cd u-boot
$ dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8
$ sync && eject /dev/sdX

/dev/sdx请替换为实际的TF卡设备文件名。
sync命令可以确保数据成功写到TF卡中,eject命令用于弹出TF卡。

当正在使用SD卡运行系统时,也可以先用scp命令拷贝u-boot-sunxi-with-spl.bin到开发板上,然后用dd命令更新SD卡上的U-boot:

$ scp u-boot-sunxi-with-spl.bin root@192.168.1.230:/root/
$ dd if=/root/u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8

如果是带有eMMC的开发板,当正在使用eMMC运行系统时,也可以先用scp命令拷贝u-boot-sunxi-with-spl.bin到开发板上,然后用dd命令更新eMMC上的U-boot:

$ scp u-boot-sunxi-with-spl.bin root@192.168.1.230:/root/
$ dd if=/root/u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8

NanoPi H3/H2+开发板的启动设备的设备节点总是/dev/mmcblk0。

烧录之后测试

1.全志H3-Uboot编译_全志H3_02