高通msm8916平台设备启动过程之SBL

高通msm8916平台设备启动过程之SBL_第1张图片

1.

首先当芯片复位的时候,芯片会执行内部固化的一段程序PBL

这段程序是芯片厂商固化的,我们无法看到其内部代码,但是我们知道PBL执行的目的

就是加载SBL1并运行,SBL1的代码是提供的

2.

SBL1的主要工作是什么呢,首先对硬件环境进行初始化,然后将从存储设备上加载QSEEQHEERPMAPPSBL1到内存,然后执行相关程序


3.

QSEE的主要工作是执行并建立一个安全的工作环境,但是不开源,具体如何实现不得而知

QHEE不开源

RPM不开源

ALLSBL其实就是LK,是安卓的bootloader,代码开发的,主要功能是启动内核,LK的具体流程后面会有博文去说

高通msm8916平台设备启动过程之SBL_第2张图片

高通msm8916平台设备启动过程之SBL_第3张图片


其实最主要的是关注最后一个C函数

高通msm8916平台设备启动过程之SBL_第4张图片

高通msm8916平台设备启动过程之SBL_第5张图片

遍历boot_config_table


寻找满足 host_img_id == host_img的项  然后调用

boot_config_process_entry

在上面这个函数中

主要就是

执行 pre_procs

根据load标志 加载 img

根据 load标志 exec标志  jump标志 执行 exec_func

执行 post_procs

根据load标志 exec标志 jump标志 执行 jump_func


boot_config_table

一般至少有4个

QSEE QHEE RPM APPSBL


一直加载到APPSBL的img

然后才会执行jump_func

这个jump_func直接跳转到QSEE的入口


所以整个SBL过程就是加载boot_config_table中的img

然后跳转到QSEE入口去,交给QSEE干活


一些厂家就会定制自己需要的功能在 pre_procs post_procs  exec_func  jump_func 还有定制 boot_config_table中的项


后面我会分析 QSEE中的trust_zome和APPSBL即LK


你可能感兴趣的:(高通msm8916平台设备启动过程之SBL)