交叉工具链配置

1
2
3
4
# 下载需要的交叉编译链
# 解压到目录
# 加入环境变量 /etc/profile
eg: export PATH=$PATH:/home/hangqi-ren/tools/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin:/home/hangqi-ren/qemu/qemu-7.2.12/build

Uboot 编译

1
2
3
4
5
6
7
# 拉取 2022.10 版本的 Uboot 且只拉取最新的 Commit.
git clone https://github.com/u-boot/u-boot.git --depth 1\
--branch v2022.10
# 生成 .config 文件
make qemu_arm64_defconfig
# 交叉编译
make -j$(nproc) CROSS_COMPILE=aarch64-none-linux-gnu-

Linux 编译

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 官网下载 Linux 任意版本源码
https://cdn.kernel.org
# 使用默认配置
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig
# 配置 .config 自行配置:
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
# 配置 .config 采用现有配置:
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- (config名称)
# 全部编译
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)
# 编译内核
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image -j$(nproc)
# 编译模块
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules -j$(nproc)

ATF 编译

由于 BL33 本质是 Uboot / Uefi 等 bootloader,所以需要提供编好的 bootloader 作为输入。

1
2
3
4
5
# 编译
make PLAT=qemu bl1 fip BL33=u-boot.bin QEMU_USE_GIC_DRIVER=QEMU_GICV2
# 打包
dd if=bl1.bin of=flash.bin
dd if=fip.bin of=flash.bin seek=64 bs=4096 conv=notrunc