当前位置: 萬仟网 > 移动技术>移动开发>Android > 高通MSM8998 ABL的调试

高通MSM8998 ABL的调试

2018年10月18日  | 萬仟网移动技术  | 我要评论
高通在MSM8998上引入了UEFI,用来代替LK(Little Kernel)。高通UEFI由XBL和ABL两部分组成。XBL负责芯片驱动及充电等核心应用功能。ABL包括芯片无关的应用如fastboot。XBL核心是none-HLOS boot_image代码的一部分,属于高通私有代码。ABL则在 ...

        高通在msm8998上引入了uefi,用来代替lk(little kernel)。高通uefi由xbl和abl两部分组成。xbl负责芯片驱动及充电等核心应用功能。abl包括芯片无关的应用如fastboot。xbl核心是none-hlos boot_image代码的一部分,属于高通私有代码。abl则在开源linux android代码树里。lk的设备驱动都放在了xbl核心,linux加载启动及fastboot等功能组件则作为独立的uefi应用存在。有关uefi、xbl及abl的详细介绍,请参见高通文档《80_p2484_37_linux_android_uefi_overview.pdf》。

        abl的编译非常简单,依次执行命令source build/envsetup.sh、lunch 32、make aboot,即可在out目录下生成abl.elf。这次调试abl主要碰到了两个问题,一是没有生成abl.elf,二是生成abl.elf后没有做签名。高通原生代码并不存在问题,是项目中修改了代码导致的。费了一番周折,最终成功编译出可正常工作的abl.elf。未签名的abl.elf大概98kb,签名后的abl.elf约108kb。需要注意的是,abl在android代码树下,而签名工具(secimage)在高通私有代码目录(vendor/qcom/proprietary)下,在编译abl时,一定要将高通提供的私有代码全部放到相应的目录下。未签名的abl.elf会让系统无法启动,上电直接进入edl紧急下载模式。

        这次调试abl还是为了解决误入ffbm的问题。之前是通过修改init来解决的,即在设置系统property时忽略内核命令行参数中的ffbm模式。而修改abl则是打算在读取misc分区时做处理,直接不生成内核命令行参数的相应配置项。注释掉bootlinux.c中getffbmcommand的相关代码,具体如下,

        

        烧录经过签名的abl.elf到abl分区,并将misc分区内容写为ffbm,重启机器,系统果然可以正常进入android,并且内核命令行参数也无androidboot.mode=ffbm项,达到预期目的,详细如下图所示。

        

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
Copyright © 2017-2021  萬仟网 保留所有权利. 粤ICP备17035492号-1
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com