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

高通MSM8998 ABL的调试

2018年10月18日  | 移动技术网IT编程  | 我要评论

终极人鱼岛高清,斗罗大陆之史莱克九怪,张译吧

        高通在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项,达到预期目的,详细如下图所示。

        

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网