SM4350 启动流程及充电
Posted bobuddy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SM4350 启动流程及充电相关的知识,希望对你有一定的参考价值。
1, 基础知识:
a, UEFI
UEFI 统一可扩展固件接口(Unified Extensible Firmware Interface)是一套规范,定义了操作系统 (OS) 与平台固件之间的软件接口。可以简单理解为操作系统启动之前运行的一个程序。
其作用主要是初始化DDR、USB、PMIC等硬件设备,为操作系统提供合适的运行环境。
高通平台从MSM8998 用UEFI取代了LK。其使用 Tianocore EDK2 实现UEFI 规范的要求,Tianocore EDK2是一套UEFI的开源实现。
b, 高通UEFI
高通UEFI 通过两部分实现:
1,XBL 包含芯片组特有的核心协议(芯片的驱动程序)以及核心应用程序(如充电)。XBL代码位于vendor/qcom/nonhlos/BOOT.XF.4.2/boot_images,属于高通的私有代码,编译生成为xbl.elf。
2,ABL 包含包括Linux加载启动及fastboot等功能组件。代码位于bootable/bootloader/edk2,编译生成为abl.elf。
c, soc启动流程
软件层面的启动流程为:PBL(BOOTROM) > XBL(Preloader) > QSEE > ABL (LK)> Kernel > android
PBL: Primary BootLoader, 固化在soc内部的一段代码,soc上电后会执行。作用是加载XBL到处理器的缓存中
XBL: Secondary Bootloader 位于EMMC中,由PBL加载,主要作用有:
1,从EMMC中加载QSEE、devcfg、abl到内存
2,实现usb、display、vibrator、charger等驱动为开机画面、充电画面做准备
3,将rpm镜像加载到RPM处理器的RAM中,为各芯片、器件供电做准备。
QSEE: Qualcomm Trusted Execution Environment, 高通的TEE实现。 创建安全环境用于处理keymaster, 生物信息,熔丝等
ABL: Application Bootloader 配置cmdline参数启动kernel或者进入fastboot
Kernel: linux内核, 包括内存管理、进程管理、设备驱动程序、文件系统和网络管理等
Android: Init, Zygote, System_server等进程依次启动,进入Android世界
2,关机充电
从原理图看battery的VBAT并非直接连接到usb的VBUS,而是都连接到充电管理芯片pm7250b
因此手机在关机状态下插入DC后,并非直接向电池充电,而是触发开机后通过软件控制pmic决定给电池的电压和电流。
流程如下:
1,关机状态下插入DC,XBL阶段通过usb、pmic驱动判断当前有charger插入
2, XBL阶段加载QcomChargerApp,该app循环读取电池状态并作出以下动作:(详见https://blog.csdn.net/Ciellee/article/details/113759442)
1, 关机 :原因可能是电池异常
2, 继续充电:不满足开机条件,则显示充电画面,调用charger驱动接口继续充电
3, 开机:满足开机条件,继续加载abl
3,abl中判断DevInfo.is_charger_screen_enabled,决定是否设置ro.bootmode为charger
4, init进程启动后判断上述属性为charger,只启用class 为charger的服务,不启动late_start服务(也就不继续加载android)
5, system/bin/charger启动后,通过android.hardware.health@2.0-impl-2.1-qti.so
调用到healthd,最终完成对/sys/class/power_supply下相关节点的读取并显示充电画面
3,开机充电
流程如下(详见https://www.cnblogs.com/linhaostudy/p/14998123.html):
1,开机完成后内核的psy子系统(power supply)在驱动中检测到电池、DC、USB的状态变化,通过uevent上报给用户空间
2, 守护进程android.hardware.health@2.1-service通过epoll_wait来监听kernel中的uevent事件
3,该进程将相关事件上报给framework中的BatteryService
4,SystemUI等app监听framework中相关广播实现充电、电量等状态的更新
以上是关于SM4350 启动流程及充电的主要内容,如果未能解决你的问题,请参考以下文章