02.orangepi one H3 u-boot/kernel编译

orangepi one H3 u-boot/kernel编译


1. 相关文件下载链接

交叉编译工具链:https://github.com/orangepi-xunlong/toolchain
uboot:https://github.com/orangepi-xunlong/toolchain
kernel:https://github.com/orangepi-xunlong/linux-orangepi
编译环境:
	基于ubuntu20.04的vmwarea虚拟机:
	用户名密码:work/work、root/root
	虚拟机静态IP:192.168.5.239/255.255.0.0/桥接
	虚拟机安装的服务服务有:
	1)ssh,用于远程登录
	2)samba,用于windows直接访问虚拟机目录(无密码登录,输入 \\192.168.5.239\home)
	3) vmware-tools,用于在虚拟机里面访问windows目录

2. 安装toolchain

在这里插入图片描述

如上图解压后,运行如下命令,让编译工具链生效:
export PATH=$PATH:/home/work/orangepi_one/toolchain-master/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf/bin
export CROSS_COMPILE=arm-linux-gnueabihf-
export CROSS=arm-linux-gnueabihf-
export CC=arm-linux-gnueabihf-gcc
export CXX=arm-linux-gnueabihf-g++
export AR=arm-linux-gnueabihf-ar
export RANLIB=arm-linux-gnueabihf-ranlib
export STRIP=arm-linux-gnueabihf-strip
export LD=arm-linux-gnueabihf-ld

3. 编译u-boot

cd u-boot-orangepi-2020.04
# 清除编译过程文件
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
# 生成OrangePi One的默认配置
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- orangepi_one_defconfig
# 编译 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

备注:
ARCH = ?			CPU的架构
CROSS_COMPILE = ?	使用的编译工具链头

配置uboot功能(一般不用)
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
在u-boot-orangepi-2020.04目录下添加了一个编译脚本build_orange_one.sh,内容如下:
#!/bin/sh

echo ""
echo "build orangepi one u-boot......"
echo ""

#make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- clean
#make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- orangepi_one_defconfig
#make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
cp config_orangepi_one .config
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

if [ $? -eq 0 ]; then
	echo "build orangepi one u-boot success"
else
	echo "build orangepi one u-boot fail"
fi

编译出来的文件是:u-boot-sunxi-with-spl.bin

4. 烧录u-boot

将开发板上的SD卡通过读卡器接入到虚拟机中,进入u-boot目录,执行如下命令:

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

备注:我的是/dev/sdb,有可能是sdc等,根据实际情况修改。

5. 运行u-bot情况

板和电脑的连接如下:
在这里插入图片描述
串口只用连接RX、TX、GND三根线。

运行后串口看到如下信息,说明u-boot烧录成功:
在这里插入图片描述

6. 编译kernel

tar -zxvf linux.tar.gz
编译确认toolchain已经配置好。
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean 
# 生成内核的板级配置,对应于arch/arm/configs/sunxi_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig
# 编译
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

备注:
# 配置内核功能
make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
在linux-orangepi-orange-pi-5.4目录下添加了一个编译脚本build_orange_one.sh,内容如下:
#!/bin/sh

echo ""
echo "build orangepi one kernel......"
echo ""

#make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- clean
#make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig
#make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
cp config_orangepi_one .config
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

if [ $? -eq 0 ]; then
	echo "build orangepi one kernel success"
else
	echo "build orangepi one kernel fail"
fi

生成的内核和设备树路径是:
arch/arm/boot/zImage
arch/arm/boot/dts/sun8i-h3-orangepi-pc.dtb

7 kernel烧录、运行

烧录:
将TF卡接入PC电脑,直接将生成的zImage和sun8i-h3-orangepi-pc.dtb放到TF止顶层目录,我这里没有将TF卡分区
修改uboot环境变量:
setenv bootcmd 'load mmc 0:1 0x43000000 sun8i-h3-orangepi-pc.dtb; load mmc 0:1 0x42000000 zImage; bootz 0x42000000 - 0x43000000';saveenv

如下图,跑到文件系统会卡住,因为没有烧录文件系统。
在这里插入图片描述

8 编译过程中遇到的问题

问题1:libz.so.1: cannot open shared object file: No such file or directory
解决:apt-get install lib32z1

问题2:dtc: command not found
解决:apt install device-tree-compiler

问题3:mkimage: command not found
解决:apt install u-boot-tools

问题4/usr/bin/env: ‘python2’: No such file or directory
解决:sudo apt-get install python2
	
问题5/bin/sh: 1: bison: not found
解决:sudo apt-get install bison -y
	
问题6/bin/sh: 1: flex: not found
解决:sudo apt-get install flex -y

问题7:ModuleNotFoundError: No module named 'distutils.core'
解决:sudo apt-get install python3-pip
	
问题8:unable to execute 'swig': No such file or directory
解决:sudo apt install swig

安装的其它包:
	sudo apt-get install libncurses5-dev
问题9:u-boot运行时报错,Loading Environment from FAT... *** Warning - bad CRC, using default environment
解决:在u-boot命令行运行saveenv

9. 参考

香橙派One(全志H3芯片)编译烧写U-boot、Linux内核zImage、dtb

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值