前言
这个系列是记录一下自己做BSP,我准备先让系统启动起来,最后再调驱动。
这几天尝试着编译了H618的安卓和Ubuntu,只是正常能用的状态,现在尝试着从u-boot开始搭建H618的镜像
配置环境
sudo apt install cmake gcc bison flex
首先是前两天有记录到,orangepi的那个仓库是从
https://github.com/orangepi-xunlong/u-boot-orangepi/tree/v2021.07-sunxi
这个地方拉取的u-boot,所以也从这里获取镜像,(如果这里一直下不下来,可以酌情添加参数 -c http.proxy=”http://ip:port”,但是具体怎么用需要自己去查)
mkdir -p Qubot-H618-BSP cd Qubot-H618-BSP git clone -b v2021.07-sunxi https://github.com/orangepi-xunlong/u-boot-orangepi u-boot-sunxi
根据opi官方的wiki,编译H618 u-boot源码使用的交叉编译工具链为:
gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu
所以下载编译链工具:
mkdir toolchains cd toolchains wget https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz tar -xf gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz rm gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz
添加环境变量
nano ~/.bashrc
在最后一行添加(这里路径要根据你的实际情况改):
export PATH=$PATH:/home/pi/Qubot-H618-BSP/toolchains/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/bin
因为ARMv7和ARMv8支持ATF启动,所以还需要获得ATF源码包:
git clone https://github.com/ARM-software/arm-trusted-firmware.git
进入目录编译
cd arm-trusted-firmware make CROSS_COMPILE=aarch64-none-linux-gnu- PLAT=sun50i_h616 DEBUG=1 bl31
编译成功
配置u-boot
接下来就开始配置u-boot,既然要做我们自己的源码,那就需要新建自己的defconfig文件和dts文件
cd ../u-boot-sunxi cp configs/orangepi_zero3_defconfig configs/qubot_m2h_defconfig
可以看到,qubot_m2h_defconfig里面有一项:
CONFIG_DEFAULT_DEVICE_TREE="sun50i-h616-orangepi-zero3"
将它改成sun50i-h616-qubot-m2h
CONFIG_DEFAULT_DEVICE_TREE="sun50i-h616-qubot-m2h"
vscode里面ctrl+p,可以找到sun50i-h616-orangepi-zero3文件在~/Qubot-H618-BSP/u-boot-sunxi/arch/arm/dts/目录下面
复制一份副本,名字改成sun50i-h616-qubot-m2h.dts
cp ~/BPI-H618-BSP/u-boot-sunxi/arch/arm/dts/sun50i-h616-orangepi-zero3.dts ~/BPI-H618-BSP/u-boot-sunxi/arch/arm/dts/sun50i-h616-qubot-m2h.dts
然后把里面的设备名字型号等字样改成你自己的,保存
将同目录的Makefile文件中的CONFIG_MACH_SUN50I_H616部分删掉(红框中的)
加上要生成的dtb
sun50i-h618-qubot-m2h.dtb
编译u-boot
配置版型
make CROSS_COMPILE=aarch64-none-linux-gnu- BL31=~/Qubot-H618-BSP/arm-trusted-firmware/build/sun50i_h616/debug/bl31.bin qubot_m2h_defconfig
编译
make CROSS_COMPILE=aarch64-none-linux-gnu- BL31=~/Qubot-H618-BSP/arm-trusted-firmware/build/sun50i_h616/debug/bl31.bin -j12
编译成功,可以看到u-boot目录下有uboot等文件
最后dd进sd卡里面
sudo dd if=Qubot-H618-BSP/u-boot-sunxi/u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1K seek=8
插到板子上面,可以看到日期是对的,8月2号,由于u-boot后面没有东西,就启动失败了
编译结束,剩下的就是kernel的编译了
参考
https://blog.csdn.net/m0_54251560/article/details/131586527
暂无评论