环境准备
高通 Sectools 需要使用 Python 2.
固件签名 (secimage)
查询 Chipset
sectools.py secimage -h --chipset=LIST
查询 Sign ID
sectools.py secimage -h --chipset=sm8250 --sign_id=LIST
签名固件
需要注意 config_path
和 chipset
参数二者只用提供一个即可。
以签名 QCS8250 的 ABL 独立固件为例,使用高通测试签名进行签名:
sectools.py secimage --config_path=QCS8250.LA.2.0/common/sectools/config/sm8250/sm8250_secimage.xml --sign_id=abl -i abl.elf -s
随后可在 Sectools 目录的子目录 secimage_output
中,找到已签名的固件。
本例中为QCS8250.LA.2.0/common/sectools/secimage_output/sm8250/abl/abl.elf
已知问题与解决方案
编译好的 ABL 刷入不开机,开机日志显示:
pil-abl failed to validate firmware metadata return Device Error
查询 BSP 中的 XBL 源码可知:
在 PilValidateMetadata()
函数中,将 ABL 映像信息通过 PilScmStdCall()
发送给安全环境中的 TA 校验,校验通过后,TA 才会将 ABL 加载到安全内存中。
结合高通设备启动流程:<Power On> -> PBL -> XBL Sec (Start QSEE) -> XBL Core [XBL] -> ABL (Fastboot/LinuxLoader) -> Linux Kernel -> HLOS (Android/Debian/Ubuntu)
。
对比高通提供的 Bootloader 包中的 abl.elf
文件发现,自己编译的 ABL 固件缺少签名。由于设备暂未开启安全启动,因此使用高通测试签名进行签名并刷入测试。经过测试,固件可以开机并加载。
评论 (0)