看完了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执行,但失败了
"整个移植都是你自己做的吗? "
自己做的,他们只提供芯片手册
“ 尝试把SCR_EL3.EA bit使能,这样让exception都路由到EL3的exception handler,然后你在EL3 handler里面加打印,看看能否有一些错误信息。”
这是个好方法!
“你这个问题感觉和memory的配置有关”
问题找到了,不是内存配置的问题,是安全外设的问题,没有配置TZPC寄存器,串口默认为安全的,在安全世界正常打印出数据,进入到BL33非安全世界就打印不了了,实际上是进入了BL33的,将串口配置成非安全的就行了
非常感谢你的回答