TrustZone 寄存器相关配置

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

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

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


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

TrustZone 寄存器相关配置_第1张图片

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

 

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

 

TrustZone 寄存器相关配置_第2张图片

 

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

TrustZone 寄存器相关配置_第3张图片

 

TrustZone 寄存器相关配置_第4张图片

 

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

TrustZone 寄存器相关配置_第5张图片

.

 

TrustZone 寄存器相关配置_第6张图片

 

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.csdn.net/crosskernel/article/details/21225591



你可能感兴趣的:(trustzone)