Building U-boot and Linux for H5/H3/H2+
Contents
1 Introduction to Mainline
Linux kernel distributions have several lines. The Mainline is maintained by Linus. Other variants and distributions are maintained by various groups and organizations. All the variants and distributions are submitted to Linux and will be merged to the Mainline. The latest mainline of U-boot and Linux kernel already has support for H3/H5 SoC. FriendlyElec customized the latest mainline u-boot and Linux kernel and made that u-boot and kernel work for all FriendlyElec's H3/H5 boards.
2 Make an Installation SD Card
2.1 Download Image Files
Board Type Download Link to Image File Image File NanoPi NEO Download official-ROMs/nanopi-neo_ubuntu-core-xenial_4.11.0.img.zip NanoPi NEO Air Download official-ROMs/nanopi-neo-air_ubuntu-core-xenial_4.11.0.img.zip NanoPi M1 Download official-ROMs/nanopi-m1_ubuntu-core-xenial_4.11.0.img.zip NanoPi M1 Plus Download official-ROMs/nanopi-m1-plus_ubuntu-core-xenial_4.11.0.img.zip NanoPi NEO2 Download official-ROMs/nanopi-neo2_ubuntu-core-xenial_4.11.0.img.zip
2.2 Make an Installation TF Card with Ubuntu-Core with Qt-Embedded
Extract an image file and win32diskimager.rar. Insert a TF card(at least 8G) into a Windows PC and run the win32diskimager utility as administrator. On the utility's main window select your TF card's drive, the wanted image file and click on "write" to start flashing the SD card till it is done.Insert this card into your H3/H5 board's MicroSD card slot and power on (with a 5V/2A power source). If the blue LED blinks this indicates your board has successfully booted.
3 Mainline Linux Development Timetable
4 How to Compile Mainline BSP
4.1 How to Compile Mainline BSP for H3
4.1.1 Install Cross Compiler
Download and extract cross compiler:
$ git clone https://github.com/friendlyarm/prebuilts.git $ mkdir -p /opt/FriendlyARM/toolchain $ tar xf prebuilts/gcc-x64/arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz -C /opt/FriendlyARM/toolchain/
Add the compiler's path to the "PATH" variable by appending the following lines in the ~/.bashrc file:
$ export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH $ export GCC_COLORS=auto
Run the ~/.bashrc script to make the changes in effect immediately in your working shell. Attention: there is a space after ".":
$ . ~/.bashrc
This is a 64-bit compiler and it cannot run on a 32-bit Linux. You can check whether or not your compiler is setup correctly by running the following commands:
$ arm-linux-gcc -v gcc version 4.9.3 (ctng-1.21.0-229g-FA)
4.2 Compile U-boot
Download the U-boot source code and enter the master-h3 branch:
$ git clone https://github.com/friendlyarm/u-boot.git $ cd u-boot $ git checkout sunxi-v2017.03
Compile U-boot:
$ make nanopi_neo_defconfig ARCH=arm CROSS_COMPILE=arm-linux- $ make ARCH=arm CROSS_COMPILE=arm-linux-
Update U-boot on SD Card:
$ dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8
Note: you need to replace "/dev/sdx" with the device name in your system.
4.3 Compile Linux Kernel
Download Linux Kernel Source Code:
$ git clone https://github.com/friendlyarm/linux.git $ cd linux $ git checkout sunxi-4.11.y
Compile Linux Kernel:
$ touch .scmversion $ make sunxi_defconfig ARCH=arm CROSS_COMPILE=arm-linux- $ make zImage dtbs ARCH=arm CROSS_COMPILE=arm-linux-
If your compilation is successful a zImage will be generated under "arch/arm/boot/" and a dtb file will be generated under "arch/arm/boot/dts/".
If your SD card's boot section is mounted at "/media/SD/boot/" you can update the zImage and dtb files by running the following commands:
$ cp arch/arm/boot/zImage /media/SD/boot/ $ cp arch/arm/boot/dts/sun8i-h3-nanopi*.dtb /media/SD/boot/
4.4 如何为H5编译mainline BSP
4.4.1 安装交叉编译器
首先下载并解压编译器:
$ mkdir -p /opt/FriendlyARM/toolchain $ tar xf gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz -C /opt/FriendlyARM/toolchain/
然后将编译器的路径加入到PATH中,用vi编辑vi ~/.bashrc,在末尾加入以下内容:
$ export PATH=/opt/FriendlyARM/toolchain/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu/bin:$PATH $ export GCC_COLORS=auto
执行一下~/.bashrc脚本让设置立即在当前shell窗口中生效,注意"."后面有个空格:
$ . ~/.bashrc
安装完成后,你可以快速的验证是否安装成功:
$ aarch64-linux-gnu-gcc -v gcc version 6.3.1 20170109 (Linaro GCC 6.3-2017.02)
4.4.2 编译U-boot
下载U-boot源码,并切换分支:
$ git clone https://github.com/friendlyarm/u-boot.git $ cd u-boot $ git checkout sunxi-v2017.03
编译U-boot:
$ make nanopi_neo2_defconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
更新SD上的U-boot:
$ dd if=spl/sunxi-spl.bin of=/dev/sdX bs=1024 seek=8 $ dd if=u-boot.itb of=/dev/sdg bs=1024 seek=40
/dev/sdx请替换为实际的TF卡设备文件名。
4.4.3 编译Linux内核
下载Linux内核源码,并切换分支:
$ git clone https://github.com/friendlyarm/linux.git $ cd linux $ git checkout sunxi-4.11.y
编译Linux内核:
$ touch .scmversion $ make sunxi_arm64_defconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- $ make Image dtbs ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
编译完成后会在arch/arm64/boot/目录下生成Image,并且在arch/arm64/boot/dts/allwinner/目录下生成dtb文件。
假设SD卡的boot分区挂载在/media/SD/boot/,更新SD卡上的Image和dtb文件:
$ cp arch/arm64/boot/Image /media/SD/boot/ $ cp arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi*.dtb /media/SD/boot/
5 Update Log
5.1 March-05-2017
- Released English Version