本节以正点原子的AtomPi-CA1进行说明,主要讲述I.MX6ULL SDK平台和应用移植功能。
参考网址: http://www.openedv.com/docs/atompi/AtomPi/AtomPi-CA1.html
串口连接(TTL),波特率: 1500000(15M)
引脚 | 功能说明 | 串口模块连接 |
---|---|---|
G | GND | GND |
T | TX | RX |
R | RX | TX |
通过OTG连接(和USB共用一个接口,同时只能一个连接)
atompi-ca1是正点原子出品的类似树莓派的产品,此方案使用正点原子的SDK版本为,ATOMPI-CA1_SDK_v1.1.tar.xz。
cd u-boot/
./make.sh atompi-ca1
cd kernel/
# 执行kernel的编译
./make.sh
# 执行打包命令
cd ../
./mkboot.sh
###################################################################################################
# 手动打包生成boot.img
if [ -d ./tmp ]; then
sudo umount ./tmp
rm -rf ./tmp
fi
if [ -e ./boot.img ]; then
rm ./boot.img
fi
dd if=/dev/zero of=boot.img bs=1M count=256
mkfs.vfat -F 32 -n boot boot.img
mkdir ./tmp
sudo mount -o loop ./boot.img ./tmp
sudo rm -rf tmp_modules/lib/modules/5.10.*/build
sudo rm -rf tmp_modules/lib/modules/5.10.*/source
cd ./tmp
sudo mkdir extlinux
sudo mkdir dtbs
sudo cp ../extlinux.conf ./extlinux/
sudo cp ../kernel/arch/arm64/boot/Image ./
sudo cp ../kernel/arch/arm64/boot/dts/rockchip/rk3568-atk-atompi-ca1.dtb ./rk-kernel.dtb
sudo cp ../kernel/arch/arm64/boot/dts/rockchip/overlay/*.dtbo ./dtbs/
sudo cp -rf ../tmp_modules/lib/modules/5.10.* ./
cd ..
sudo rm -rf tmp_modules
sleep 1
sync
sleep 1
sudo umount ./tmp
sudo rm -rf ./tmp
sleep 1
sync
echo "Making bootfs finsh!"
exit_if_last_error
###################################################################################################
debian文件系统
cd debian/
#下载安装debian的基础库
RELEASE=bullseye TARGET=desktop ARCH=arm64 ./mk-base-debian.sh
#安装重要组件
RELEASE=bullseye ARCH=arm64 ./mk-rootfs.sh
#创建
./mk-image.sh
固件名称 | 固件说明 | 来源 |
---|---|---|
MiniLoaderAll.bin | 该镜像是运行在RK3568平台U-Boot之前的一段Loader代码(也就是比U-Boot更早阶段的Loader)。 MiniLoaderAll.bin由TPL和SPL两部分组成,TPL用于初始化DDR,运行在SRAM;而SPL运行在DDR,主要负责加载、引导uboot.img。 MiniLoaderAll.bin会烧录到开发板uboot分区 |
编译u-boot生成 |
uboot.img | uboot.img是一种FIT(flattened image tree)格式镜像,它由多个镜像合并而成。 其中包括trust镜像(ARM Trusted Firmware+OP-TEE OS)、u-boot镜像、uboot-dtb; 编译 U-Boot时会将这些镜像打包成一个uboot.img。 uboot.img 会烧录到开发板uboot分区 |
编译u-boot生成 |
boot.img | boot.img也是FAT32格式的镜像,它也是由多个镜像合并而成,其中包括内核镜像、内核 DTB、资源镜像resource.img。 boot.img 会烧录到开发板boot分区 |
编译内核 |
parameter.txt | 一个txt文本文件,是RK3568平台的分区表文件(记录分区名以及每个分区它的起始地址、结束地址);烧写镜像时,并不需要将parameter.txt文件烧写到Flash,而是烧录软件会读取它的信息去定义分区 | - |
rootfs.img | 正常启动模式下对应的根文件系统镜像,包含有大量的库文件、可执行文件等。rootfs.img 会烧录到开发板rootfs分区 | 编译文件系统 |
recovery.img | recovery模式镜像,recovery.img 用于进入recovery模式,recovery.img 会烧录到开发板recovery分区。recovery模式是一种用于对设备进行修复、升级更新的模式。recovery.img 也是FIT格式镜像,也是由多个镜像合并而成,其中包括ramdisk(进入recovery模式时挂载该根文件系统)、内核镜像(进入recovery 模式时启动该内核镜像)、内核dtb以及resource.img。 | 打包内核和文件系统 |
misc.img | 包含BCB(Bootloader Control Block)信息,该镜像会烧写到开发板misc分区。 misc分区是一个很重要的分区,其中存放了BCB数据块,主要用于Android/Linux系统、 U-Boot 以及 recovery 之间的通信 |
- |
userdata.img | 给用户使用,可用于存放用户的App或数据; 该镜像会烧写至开发板 userdata 分区,系统启动之后,会将其挂载到/userdata 目录 | - |
oem.img | 给厂家使用,用于存放厂家的APP或数据,该镜像会烧写至开发板oem 分区,系统启动之后会将其挂载到/oem 目录 | - |
cd linux_sdk/
tar -xvf atk-rk3568_linux_release_v1.2_20240129.tgz
.repo/repo/repo sync -l -j10
cd u-boot/
./make.sh rk3568
# 生成spl文件: rk356x_spl_loader_v1.13.112.bin => MiniLoaderAll.bin
# 生成u-boot打包: uboot.img
cd ../
cp -rv u-boot/rk356x_spl_loader_v1.13.112.bin rockdev/MiniLoaderAll.bin
cp -rv u-boot/uboot.img rockdev/uboot.img
cd kernel/
# 编译dtb和image
RK_ARCH=arm64
RK_JOBS=16
make ARCH="${RK_ARCH}" rockchip_linux_defconfig
make ARCH="${RK_ARCH}" Image -j"${RK_JOBS}"
make ARCH="${RK_ARCH}" rockchip/rk3568-atk-evb1-ddr4-v10-linux.dtb -j"${RK_JOBS}"
make ARCH="${RK_ARCH}" rockchip/rk3568-atk-evb1-mipi-dsi-1080p.dtb -j"${RK_JOBS}"
make ARCH="${RK_ARCH}" rockchip/rk3568-atk-evb1-mipi-dsi-720p.dtb -j"${RK_JOBS}"
make ARCH="${RK_ARCH}" rockchip/rk3568-atk-evb1-mipi-dsi-10p1_800x1280.dtb -j"${RK_JOBS}"
#生成resource.img
scripts/mkmultidtb.py RK3568-ATK-EVB1
#生成打包版本的boot.img
make ARCH="${RK_ARCH}" rockchip/rk3568-evb1-ddr4-v10-linux.dtb -j"${RK_JOBS}"
cd ../
"$(pwd)"/device/rockchip/common/mk-fitimage.sh "$(pwd)"/kernel/boot.img "$(pwd)"/device/rockchip/rk356x/boot.its
cp -rv kernel/boot.img rockdev/boot.img
cp -rv kernel/resource.img rockdev/resouce.img
cd buildroot/
#如果执行失败,此语句重复执行一次
source build/envsetup.sh rockchip_rk3568
make all -j16
cd ../
cp -rv buildroot/output/rockchip_rk3568/images/rootfs.ext2 rockdev/rootfs.img
#step1: 生成recovery.img前,要先编译完成kernel,生成Image和相应的dtb文件
#step2. 编译recovery版本的文件系统
cd buildroot/
#如果执行失败,此语句重复执行一次
source build/envsetup.sh rockchip_rk356x_recovery
make all -j16
#生成recovery.img镜像
cd ../
"$(pwd)"/device/rockchip/common/mk-fitimage.sh $(pwd)/buildroot/output/rockchip_rk356x_recovery/images/recovery.img $(pwd)/device/rockchip/rk356x/boot4recovery.its $(pwd)/buildroot/output/rockchip_rk356x_recovery/images/rootfs.cpio.gz
cp buildroot/output/rockchip_rk356x_recovery/images/recovery.img rockdev/
#oem.img
#oem资源: device/rockchip/oem/oem_normal
source buildroot/build/envsetup.sh rockchip_rk3568
./device/rockchip/common/mk-image.sh device/rockchip/oem/oem_normal rockdev/oem.img ext2 0K
#userdata.img
#oem资源: device/rockchip/userdata/userdata_normal
./device/rockchip/common/mk-image.sh device/rockchip/userdata/userdata_normal rockdev/userdata.img ext2 0K
#misc资源: device/rockchip/rockimg/*.img
cp -rv device/rockchip/rockimg/blank-misc.img rockdev/misc.img
cp -rv device/rockchip/rk356x/parameter-buildroot-fit.txt rockdev/parameter.txt
直接开始下一章节说明: 全志t113-i平台编译和应用方法