经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Android » 查看文章
高通MSM8998 ABL的调试
来源:cnblogs  作者:sunrain_hjb  时间:2018/10/18 8:55:40  对本文有异议

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

        

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号