编译/引导EDK2 树莓派4

格蠹的幽兰代码本(RK3588)支持UEFI启动,在阅读RK3588代码的时候发现EDK2也对树莓派系列进行了支持。经过一番尝试,借助幽兰,我也在树莓派上bringup EFI bios(只能引导到Bios setup界面,不知道如何安装OS),在此记录SOP。

PS: 理论上在x86机器上也能生成适用于树莓派的引导文件,但是搭建cross-toolchain实在麻烦。正好幽兰代码本(内核版本:5.10.110-rockchip-rk3588)有完整的编译环境,更重要的是,其编译速度极快,那就拿幽兰本作为编译环境了~

Step1.科学上网,从github(https://github.com/pftf/RPi4)克隆树莓派4的代码:

geduer@ulan:~/Desktop/tianocore/RPi4$ pwd
/home/geduer/Desktop/tianocore/RPi4 #<-- RPi4代码位置

git config --global https.proxy "http://127.0.0.1:17890"
git clone https://github.com/pftf/RPi4.git --recurse #一定要带--recurse参数,用于clone edk/edk-platform等目录
git reset --hard 650cbcdcb76c91e9eff528a8cd64c27efa452b30 #使用RPi4 v1.38 2024/08/28这次提交

Step2.编译树莓派:

#下列命令序列参见edk-platforms的README部分

export WORKSPACE=/home/geduer/Desktop/tianocore/RPi4
cd $WORKSPACE
export PACKAGES_PATH=$PWD/edk2:$PWD/edk2-platforms:$PWD/edk2-non-osi
. edk2/edksetup.sh
make -C edk2/BaseTools
build -a AARCH64 -t GCC -p Platform/RaspberryPi/RPi4/RPi4.dsc

默认生成Debug版Bios,位于$(WORKSPACE)/Build/RPi4/DEBUG_GCC/FV/RPI_EFI.fd

如果需要生成Release版Bios,可向上述命令追加-b RELEASE参数

build -a AARCH64 -t GCC -p Platform/RaspberryPi/RPi4/RPi4.dsc -b RELEASE

Step3.制作引导SD卡:

这一步用到SDFormatter格式化SD卡及Raspberry Pi Imager烧录RPi4 eeprom固件。

以下是烧录RPI4 eeprom sd的步骤:

点击“Choose Device”--选择"Raspberry Pi4";

点击“选择操作系统”--选择“Use custom”--选择从RPi4 eeprom下载的固件;

最后点击"选择SD卡和"Next“,准备烧录固件.

Step4.更新RPi4 UEFI固件:

RPi4的作者会不定期release RPi4 EFI固件, 从中下载的固件包含下列内容:

将他们复制到Step 3制作的SD卡中,同时替换在幽兰本上编译生成的RPI_EFI.fd。一切就绪后即可引导UEFI版本的树莓派,如下图:

Step5.抓串口日志:

作为Bioser,以上当然不是仅好玩,是为了了解Arm处理器和EDK2的结合(其实是没机会摸高通处理器...)。这时就需要抓串口日志了。RPi4的GPIO原理图如下:

抓运行日志,只要接Gpp06和Gpp08(Gnd/Txd)即可, 实物连接图如下:

最后来一段熟悉的EFI日志输出(居然没有Pei Phase):

Step6.What's next?

试试源码级调试

To be continue.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值