This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

TEE中异常级别的跳转问题

看完了ATF源代码,现在正在将代码移植到开发板上,配置了SCR_EL3=0x830(安全,AARCH32), SPSR_EL3=0x1d3(svc_mode,AARCH32,ARM指令集),ELR_EL3=0x40200000(BL32入口点地址),成功从BL31进入BL32初始化完成,返回BL31配置SCR_EL3=0x35(非安全),SPSR_EL3=0x1d3(svc_mode,AARCH32,ARM指令集),ELR_EL3=0x42000000(BL33入口点地址)却无法进入BL33,请问为什么?是虚拟化层EL2影响的吗?ps:源代码是默认执行AARCH64模式的BL33,但我的UBOOT是32位的,我修改了上诉寄存器期望进入32位的UBOOT执行,但失败了

Parents
  • 从EL3通过eret返回到non secure EL1,这个是ARMv8架构支持的,应该不存在受EL2的影响。

    能否更详细描述你的问题吗:

        1)  “无法进入BL33”, 是在调用 el3_exit(bl31_entrypoint.S) 里面的最后一条指令eret ,没有切换到BL33的entry?

                有串口输出log吗? 在Makefile里面吧LOG_LEVEL改成50会给出更多log。

                能用JTAG debugger调试更好了,比如DS-5,这样可以看出哪条指令出的问题。

       2)请问你是在我们的开发板Juno上做的实验吗? 要是其他SOC厂商的方案,可能不是完全遵循ATF的实现来用。

     

    3)关于memory使用,在你的配置下:      Secure OS entry: ELR_EL3=0x40200000

          uboot entry:          ELR_EL3=0x42000000

     

      uboot运行在非安全模式下,请问你的memory是非安全的memory吗? 要是在芯片里面有TZC400,需要配置memory region。

Reply
  • 从EL3通过eret返回到non secure EL1,这个是ARMv8架构支持的,应该不存在受EL2的影响。

    能否更详细描述你的问题吗:

        1)  “无法进入BL33”, 是在调用 el3_exit(bl31_entrypoint.S) 里面的最后一条指令eret ,没有切换到BL33的entry?

                有串口输出log吗? 在Makefile里面吧LOG_LEVEL改成50会给出更多log。

                能用JTAG debugger调试更好了,比如DS-5,这样可以看出哪条指令出的问题。

       2)请问你是在我们的开发板Juno上做的实验吗? 要是其他SOC厂商的方案,可能不是完全遵循ATF的实现来用。

     

    3)关于memory使用,在你的配置下:      Secure OS entry: ELR_EL3=0x40200000

          uboot entry:          ELR_EL3=0x42000000

     

      uboot运行在非安全模式下,请问你的memory是非安全的memory吗? 要是在芯片里面有TZC400,需要配置memory region。

Children