OP-TEE的内核初始化过程

描述

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控制寄存器中的值#ifdefined(CFG_SCTLR_ALIGNMENT_CHECK)orr r0, r0,#SCTLR_A //设定对齐校验#elsebic r0, r0,#SCTLR_A#endifbic r0, r0,#SCTLR_C //关闭数据cachebic r0, r0,#SCTLR_I //关闭指令cache#ifdefined(CFG_HWSUPP_MEM_PERM_WXN) && defined(CFG_CORE_RWDATA_NOEXEC)orr r0, r0,#(SCTLR_WXN | SCTLR_UWXN)#endifwrite_sctlr r0//将r0写入到sctlr中,用于关闭cacheisb /* 早期ARM核安全监控模式态的特殊配置 */ bl plat_cpu_reset_early//执行CPU早期初始化ldr r0, =_start//设定r0寄存器的值为_start函数的地址write_vbar r0//将_start函数的地址写入VBAR寄存器中,用于启动时使用#ifdefined(CFG_WITH_ARM_TRUSTED_FW)b reset_primary//支持ATF时跳转到reset_primary中执行#elsebl get_core_pos//判定当前CPU CORE的编号cmp r0,#0 //将获得的CPU编号与0对比beq reset_primary//如果当前core是主核,则使用reset_primary进行初始化b reset_secondary//如果当前core是从核,则使用reset_secondary进行初始化#endifUNWIND( .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会在主核启动结束后唤醒从核。
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分