Difference between revisions of "Building U-boot and Linux for H5/H3/H2+/zh"

From FriendlyELEC WiKi
Jump to: navigation, search
Line 6: Line 6:
 
==Mainline 简介==
 
==Mainline 简介==
 
Mainline即主线的意思,Linux内核的开发分为linus维护的主线、其他开发分支以及各种稳定版本。开发分支最终都会统一提交到linus维护的主线中。
 
Mainline即主线的意思,Linux内核的开发分为linus维护的主线、其他开发分支以及各种稳定版本。开发分支最终都会统一提交到linus维护的主线中。
最新版本的U-boot和主线Linux内核已经支持了全志的H3 CPU,我们在最新版本的的U-boot和主线Linux内核的基础上进行了定制开发,使其能支持上NanoPi H3系列的开发板。
+
最新版本的U-boot和主线Linux内核已经支持了全志的H3/H5 CPU,我们在最新版本的的U-boot和主线Linux内核的基础上进行了定制开发,使其能支持上NanoPi H3/H5系列的开发板。
  
 
==制作一张带运行系统的SD卡==
 
==制作一张带运行系统的SD卡==
 
===下载系统固件===
 
===下载系统固件===
首先访问[https://pan.baidu.com/s/1cAaWMi 下载地址]下载需要的固件文件(officail-ROMs目录)和烧写工具(tools目录):<br />
 
 
 
::{| class="wikitable"
 
::{| class="wikitable"
 
|-
 
|-
|colspan=2|使用以下固件:
+
|板子名称||固件下载地址||固件名称
 +
|-
 +
|NanoPi NEO||[http://pan.baidu.com/s/1boQFxN5 下载]|| official-ROMs/nanopi-neo_ubuntu-core-xenial_4.11.0.img.zip
 +
|-
 +
|NanoPi NEO Air||[https://pan.baidu.com/s/1kUMRucf 下载] || official-ROMs/nanopi-neo-air_ubuntu-core-xenial_4.11.0.img.zip
 +
|-
 +
|NanoPi M1||[https://pan.baidu.com/s/1dF7HL0P 下载] || official-ROMs/nanopi-m1_ubuntu-core-xenial_4.11.0.img.zip
 +
|-
 +
|NanoPi M1 Plus||[https://pan.baidu.com/s/1boNTLKF 下载] || official-ROMs/nanopi-m1-plus_ubuntu-core-xenial_4.11.0.img.zip
 
|-
 
|-
|h3-mainline-ubuntu-core-qte-sd4g.img.zip     || Ubuntu-Core with Qt-Embedded系统固件,仅支持NanoPi NEO                 
+
|NanoPi NEO2||[https://pan.baidu.com/s/1eRDbeG6 下载] || official-ROMs/nanopi-neo2_ubuntu-core-xenial_4.11.0.img.zip
 
|-
 
|-
|colspan=2|烧写工具: 
+
|NanoPi M1 Plus 2||[https://pan.baidu.com/s/xxx 下载] || official-ROMs/nanopi-m1_plus2_ubuntu-core-xenial_4.11.0.img.zip
 
|-
 
|-
|win32diskimager.rar || Windows平台下的系统烧写工具,Linux平台下可以用dd命令烧写系统
 
|-
 
 
|}
 
|}
  
 
===制作Ubuntu-Core with Qt-Embedded系统TF卡===
 
===制作Ubuntu-Core with Qt-Embedded系统TF卡===
将固件 h3-mainline-ubuntu-core-qte-sd4g.img.zip 和烧写工具 win32diskimager.rar 分别解压,在 Windows 下插入TF卡(限4G及以上的卡),以管理员身份运行 win32diskimager 工具,  
+
将固件和烧写工具 win32diskimager.rar 分别解压,在 Windows 下插入TF卡(限4G及以上的卡),以管理员身份运行 win32diskimager 工具,  
在 win32diskimager 工具的界面上,选择你的SD卡盘符,选择系统固件,点击 Write 按钮烧写即可。烧写完成后,将制作好SD卡插入 NanoPi H3 开发板,使用USB供电(5V/2A),看到板上的蓝色LED闪烁,这说明系统已经开始启动了。<br />
+
在 win32diskimager 工具的界面上,选择你的SD卡盘符,选择系统固件,点击 Write 按钮烧写即可。烧写完成后,将制作好SD卡插入 NanoPi H3/H5 开发板,使用USB供电(5V/2A),看到板上的蓝色LED闪烁,这说明系统已经开始启动了。<br />
  
 
==Mainline ROM特性==
 
==Mainline ROM特性==
 
===Ubuntu-Core with Qt-Embedded===
 
===Ubuntu-Core with Qt-Embedded===
::{| class="wikitable"
 
|-
 
|序号|| NanoPi NEO     
 
|-
 
|1  ||  使用U-boot-2017.03和Linux-4.10.y
 
|-
 
|2  ||  支持CPU频率和CPU电压动态调节         
 
|-
 
|3  ||  支持100M以太网,MAC地址固定   
 
|-
 
|4  ||  支持1路USB Host
 
|-
 
|5  ||  支持多款USB WiFi
 
|-
 
|6  ||  支持第一次开机自动扩展文件系统
 
|-
 
|7  ||  支持开机修复文件系统
 
|-
 
|8  ||  对比Linux-3.4,大大降低了发热量
 
|}
 
  
==如何编译==
+
 
===安装交叉编译器===
+
==如何编译mainline BSP==
 +
===如何为H3编译mainline BSP==
 +
====安装交叉编译器====
 
首先下载并解压编译器:
 
首先下载并解压编译器:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Line 87: Line 73:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
===编译U-boot===
+
====编译U-boot====
 
下载U-boot源码,切换到分支master-h3:
 
下载U-boot源码,切换到分支master-h3:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Line 107: Line 93:
 
/dev/sdx请替换为实际的TF卡设备文件名。
 
/dev/sdx请替换为实际的TF卡设备文件名。
  
===编译Linux内核===
+
====编译Linux内核====
 
下载Linux内核源码:
 
下载Linux内核源码:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Line 128: Line 114:
 
cp arch/arm/boot/dts/sun8i-h3-nanopi*.dtb /media/SD/boot/
 
cp arch/arm/boot/dts/sun8i-h3-nanopi*.dtb /media/SD/boot/
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
===如何为H5编译BSP==
 +
====安装交叉编译器====
 +
====编译U-boot====
 +
====编译Linux内核====

Revision as of 11:05, 14 April 2017

English

1 Mainline 简介

Mainline即主线的意思,Linux内核的开发分为linus维护的主线、其他开发分支以及各种稳定版本。开发分支最终都会统一提交到linus维护的主线中。 最新版本的U-boot和主线Linux内核已经支持了全志的H3/H5 CPU,我们在最新版本的的U-boot和主线Linux内核的基础上进行了定制开发,使其能支持上NanoPi H3/H5系列的开发板。

2 制作一张带运行系统的SD卡

2.1 下载系统固件

板子名称 固件下载地址 固件名称
NanoPi NEO 下载 official-ROMs/nanopi-neo_ubuntu-core-xenial_4.11.0.img.zip
NanoPi NEO Air 下载 official-ROMs/nanopi-neo-air_ubuntu-core-xenial_4.11.0.img.zip
NanoPi M1 下载 official-ROMs/nanopi-m1_ubuntu-core-xenial_4.11.0.img.zip
NanoPi M1 Plus 下载 official-ROMs/nanopi-m1-plus_ubuntu-core-xenial_4.11.0.img.zip
NanoPi NEO2 下载 official-ROMs/nanopi-neo2_ubuntu-core-xenial_4.11.0.img.zip
NanoPi M1 Plus 2 下载 official-ROMs/nanopi-m1_plus2_ubuntu-core-xenial_4.11.0.img.zip

2.2 制作Ubuntu-Core with Qt-Embedded系统TF卡

将固件和烧写工具 win32diskimager.rar 分别解压,在 Windows 下插入TF卡(限4G及以上的卡),以管理员身份运行 win32diskimager 工具, 在 win32diskimager 工具的界面上,选择你的SD卡盘符,选择系统固件,点击 Write 按钮烧写即可。烧写完成后,将制作好SD卡插入 NanoPi H3/H5 开发板,使用USB供电(5V/2A),看到板上的蓝色LED闪烁,这说明系统已经开始启动了。

3 Mainline ROM特性

3.1 Ubuntu-Core with Qt-Embedded

4 如何编译mainline BSP

5 =如何为H3编译mainline BSP

5.1 安装交叉编译器

首先下载并解压编译器:

git clone https://github.com/friendlyarm/prebuilts.git
sudo mkdir -p /opt/FriendlyARM/toolchain
sudo tar xf prebuilts/gcc-x64/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
Using built-in specs.
COLLECT_GCC=arm-linux-gcc
COLLECT_LTO_WRAPPER=/opt/FriendlyARM/toolchain/4.9.3/libexec/gcc/arm-cortexa9-linux-gnueabihf/4.9.3/lto-wrapper
Target: arm-cortexa9-linux-gnueabihf
Configured with: /work/toolchain/build/src/gcc-4.9.3/configure --build=x86_64-build_pc-linux-gnu
--host=x86_64-build_pc-linux-gnu --target=arm-cortexa9-linux-gnueabihf --prefix=/opt/FriendlyARM/toolchain/4.9.3
--with-sysroot=/opt/FriendlyARM/toolchain/4.9.3/arm-cortexa9-linux-gnueabihf/sys-root --enable-languages=c,c++
--with-arch=armv7-a --with-tune=cortex-a9 --with-fpu=vfpv3 --with-float=hard
...
Thread model: posix
gcc version 4.9.3 (ctng-1.21.0-229g-FA)

5.2 编译U-boot

下载U-boot源码,切换到分支master-h3:

git clone https://github.com/friendlyarm/uboot.git
cd u-boot
git checkout master-h3

编译U-boot:

make nanopi_h3_defconfig
make

更新SD上的U-boot:

dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8

/dev/sdx请替换为实际的TF卡设备文件名。

5.3 编译Linux内核

下载Linux内核源码:

git clone https://github.com/friendlyarm/linux.git
cd linux
git checkout h3-4.10.y

编译Linux内核:

touch .scmversion
make sunxi_defconfig
make zImage dtbs

编译完成后会在arch/arm/boot/目录下生成zImage,并且在arch/arm/boot/dts/目录下生成dtb文件。

假设SD卡的boot分区挂载在/media/SD/boot/,更新SD卡上的zImage和dtb文件:

cp arch/arm/boot/zImage /media/SD/boot/
cp arch/arm/boot/dts/sun8i-h3-nanopi*.dtb /media/SD/boot/

6 =如何为H5编译BSP

6.1 安装交叉编译器

6.2 编译U-boot

6.3 编译Linux内核