TrustZone 寄存器相关配置

本文探讨了在IMX6板子上进行安全扩展的实验,重点关注了安全模式与非安全模式下U-boot的加载、Kernel的启动,以及GIC中断配置的影响。通过设置特定寄存器如cp15、SCR、MVBAR、NSACR等,实现了从非安全状态进入monitor模式,进而成功启动多核Kernel。同时,文章还分享了关于如何在非安全状态下启动Kernel的技术细节,并提供了相关链接供深入研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在imx6的板子上做了一些试验,以前也写了一些测试代码,https://github.com/shc5840/mx6q-collage-trustzone

好像记得最后是我在uboot以前以安全的状态写了一个while循环,然后切换到非安全模式加载了uboot,启动kernel,

发现非安装状态下当时只能起一个核,多核启动就有问题了,还有就是关于gic中断这边的配置貌似也有点影响。


这里分享一下个人理解的哪些寄存器需要设置:


这里记录一下看的armv7-a的架构文档和cortex-a9的manual文档中提到关于secure和non-secure的知识点

 

实现安全扩展的cp15寄存器:

 


 

cp15的banked寄存器for secure and non-secure:


 


 

安全扩展实现cp15访问受限制的寄存器:


.

 


 

cpu在non-secure时要进入monitor模式可以通过interrput 、abort、smc命令

cpu在secure时进入monitor模式可以直接设置cpsr寄存器

目前理解的设置有

①设置cpu模式,强制进入monitor模式

②设置SCR寄存器,0b110000  AW-1 FW-1 EA-0 FIQ-0 IRQ-0 NS-0

③设置MVBAR

④设置NSACR0b1110011111111111111 Bit[18]NS_SMP-1Bit[17]TL-1Bit[16]PLE-1, Bit[15]NSASEDIS-0Bit[14]NSD32DIS-0, Bit[0-13] coprocessor - 1( enable 0-13协处理器能够在non-secure状态下访问,如果设置enable,就必须设置CPACR寄存器来决定访问的level) Bit19-20这里我没有设置,Bit14 Bit15必须是相同的值

⑤设置CPACR0x05555555bit[31]ASEDIS-0bit[30]D32DIS-0cp0-13-b01 

 

现在发现gic的配置问题,如何在non-secure状态启动kernel

https://gitorious.org/freedreno/kernel-msm/commit/26e44869e1e730ec7434e899dfd5857530b63415

 

http://blog.youkuaiyun.com/crosskernel/article/details/21225591



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值