Android 休眠流程(三)
上一篇《Android 休眠流程(二)》简单讲解内核阶段进入休眠流程,本篇继续深挖,简单讲解休眠进入ATF。ATF(ARM Trusted Firmware) 的体系架构里将整个系统分成四种安全等级,分别为:EL0、EL1、EL2、EL3。将整个安全启动的流程阶段定义为:BL1、BL2、BL31、BL32、BL33,其中 ARM Trusted Firmware 自身的源代码里提供了 BL1、BL2、BL31 的功能。Rockchip 平台仅使用了其中的 BL31 的功能,BL1 和 BL2则使用瑞芯微自由实现方案。在 Rockchip 平台一般默认的 ATF(ARM Trusted Firmware) 指的就是 BL31,而 BL32 使用的则是 OP-TEE OS。
BL1阶段:BL1是AP Trusted ROM,一般为BootRom。在这一阶段,BL1完成了将BL2镜像文件加载到RAM中的操作、中断向量表的设定以及其他CPU相关设定。BL1_main函数会解析出BL2镜像文件的描述信息,获取入口地址,并设定下一个阶段的CPU上下文。这些操作完成之后,调用el3_exit函数来实现BL1到BL2的跳转,进入BL2中开始执行。
BL2阶段:BL2是Trusted Boot Firmware,一般为Trusted Bootloader。在BL2中,会加载BL31、BL32、BL33的镜像文件到对应权限的内存中,并将这三个镜像文件的描述信息保存到组成一个链表,以备BL31启动BL32和BL33使用。BL33为正常使用状态的镜像文件,例如uboot、EKD2等。从BL2跳转到BL31是通过带入BL31的入口点信息作为参数,然后调用安全监控模式调用指令,触发在BL1中设定的安全监控模式调用请求。该请求处理完成后,会将中央处理器的执行权限交给BL31,并跳转到BL31中去执行。
作者:炭烤毛蛋 ,点击博主了解更多。
提示:芯片深度休眠到进入ATF,该阶段仅响应系统设定的唤醒源。
文章目录
- Android 休眠流程