1 OP-TEE OS的入口函数
- • OP-TEE镜像的入口函数是在编译OP-TEE OS时通过链接文件来确定的,
- • OP-TEE在编译时是按照optee_os/core/arch/arm/kernel/kern.ld.S文件链接生成OP-TEE OS的镜像文件,
- • 在kern.ld.S文件中通过ENTRY宏来指定OP-TEE OS的入口函数,在OP-TEE中指定的入口函数是_start,
- • 对于ARM32位系统,该函数定义在optee_os/core/arch/arm/generic_entry_a32.S文件中,
- • 对于ARM64位系统而言,该函数定义在optee_os/core/arch/arm generic_entry_a64.S文件中。
2 OP-TEE的内核初始化过程
** _start会调用reset函数进入OP-TEE OS的启动过程**。
由于对称多处理(Symmetr ical Multi-Processing, SMP)架构的原因,在reset函数中会对主核和从核进行不同的启动操作,分别调用reset_primary函数和reset_secondary函数来完成。
1. reset入口函数执行内容
reset函数是主核和从核启动的第一个函数,该函数的执行流程如图所示。
reset函数执行流程
进入到reset函数后, 系统会将_start的地址写入VBAR寄存器作为中断向量表的起始地址使用 ,
在启动从核时, 从核知道会到该地址去获取应该执行代码来完成从核的启动 。整个reset函数的内容和注释如下:
LOCAL_FUNC reset , :
UNWIND( .fnstart)
UNWIND( .cantunwind)
bootargs_entry //获取启动带入的参数,主要是启动地址、device tree地址等
/* 使能对齐检查并禁用数据和指令缓存 */
read_sctlr r0 //读取sctlr中的数据,获取当前CPU控制寄存器中的值
#if defined(CFG_SCTLR_ALIGNMENT_CHECK)
orr r0, r0, #SCTLR_A //设定对齐校验
#else
bic r0, r0, #SCTLR_A
#endif
bic r0, r0, #SCTLR_C //关闭数据cache
bic r0, r0, #SCTLR_I //关闭指令cache
#if defined(CFG_HWSUPP_MEM_PERM_WXN) && defined(CFG_CORE_RWDATA_NOEXEC)
orr r0, r0, #(SCTLR_WXN | SCTLR_UWXN)
#endif
write_sctlr r0 //将r0写入到sctlr中,用于关闭cache
isb
/* 早期ARM核安全监控模式态的特殊配置 */
bl plat_cpu_reset_early //执行CPU早期初始化
ldr r0, =_start //设定r0寄存器的值为_start函数的地址
write_vbar r0 //将_start函数的地址写入VBAR寄存器中,用于启动时使用
#if defined(CFG_WITH_ARM_TRUSTED_FW)
b reset_primary //支持ATF时跳转到reset_primary中执行
#else
bl get_core_pos //判定当前CPU CORE的编号
cmp r0, #0 //将获得的CPU编号与0对比
beq reset_primary //如果当前core是主核,则使用reset_primary进行初始化
b reset_secondary //如果当前core是从核,则使用reset_secondary进行初始化
#endif
UNWIND( .fnend)
END_FUNC reset
plat_cpu_reset_early函数将会设定SCR寄存器中的安全标志位 ,用于标记当前CPU是处于安全世界状态中,并且将_start地址写入VBAR寄存器,用于在需要启动从核时系统能找到启动代码的入口地址,
reset_primary函数是主核启动代码的入口函数,该函数将会启动主核的基本初始化、配置运行环境,然后再开始执行唤醒从核的操作。
- • 对于从核的唤醒操作,如果系统支持PSCI,从核的唤醒是在REE OS启动时 ,发送PSCI给EL3或Monitor模式的代码来启动从核;
- • 如果不使用PSCI,而是选择在OP-TEE中使能CFG_SYNC_BOOT_CPU,则OP-TEE会在主核启动结束后唤醒从核。
-
寄存器
+关注
关注
31文章
5342浏览量
120301 -
函数
+关注
关注
3文章
4329浏览量
62590 -
架构
+关注
关注
1文章
513浏览量
25468 -
TEE
+关注
关注
0文章
29浏览量
10260
发布评论请先 登录
相关推荐
评论