trustZone学习

安全状态(放重要的信息),正常状态(放一些正常信息的放在这里)

在armv7-m 是两个状态一个线程模式一个异常模式
在armv8-m时分成了四个状态,一个是正常状态的线程模式和异常模式
另外一个是安全状态下的线程模式和异常模式

引入trustZone后中断也有差异,最主要的差异存在一个清0的操作

先把所有的寄存器入栈,入栈后把全部寄存器清0,然后在切换cpu的运行状态,
中断运行完以后先切换cpu的运行状态,在把全部寄存器进行出栈,

为什么要把寄存器清0,清0的作用,把PSR寄存器复位了,让黑客找不到栈的一些内容

另外一个变化是整个cortex -m的4GB地址空间在每一块空间里面分成了安全状态下的一块
正常状态的一块

在切换安全和正常状态下的cpu寄存器状态也做了更改

之前的时候R13只有msp和psp
在v8带了trustZone的
MSP_NS,MSPLIM_NS
psp同理

在v8时系统加入了栈溢出检测,还有栈溢出中断

引入了,non-secure内存和secure内存那程序之间怎么调用?
arm引入看sg列表的概念

比如在non-secure中调用了一个secure里的函数,先call在sg列表中
在到sg列表找到你的函数入口地址,在把函数地址送到pc,然后在运行secure里的函数
整个运行环境切换到安全状态,在这个环境下访问cpu会受到各种安全条件的检测和限制
(在m33的权威指南)

sg列表怎么实现的,通过代码对你的各个函数的安全的函数的注册(可能是)以后,、
c编译器会自动产生一个sg列表放在一个区域中


在renesas的RA MCU怎么用trustzone

renesas会有一个安全加密引擎v9


安全的软件可以同时访问安全的和非安全的内存和资源,而非安全的软件只能访问非安全的内存和资源。


内存分离代码闪存、
数据闪存和SRAM被分为安全(S)、
非安全(NS)和非安全可调用(NSC)区域。
当设备生命周期为“安全软件开发(SSD)”状态时,

通过串行编程命令将这些内存安全属性设置到非易失性内存中。


瑞萨IDAU区域设置IDAU(实现定义的属性单元)区域只能在引导模式下使用SCI( 串行通信接口)或USB进行设置,
不能在远程更新期间进行操作(例如,OTA)

调试和编程接口可以通过设备生命周期管理进行完全锁定。
支持Arm®TrustZone®的RAMCU使用设备生命周期管理系统来控制三个调试级别:
DBG2:允许使用调试器连接,并且不限制访问内存和外设。
DBG1:允许使用调试器连接,并且仅限于访问非安全的内存区域和外设。
DBG0:不允许使用调试器连接。

定义属性单元(IDAU)来设置安全区域。


后面靠jlink来,从一种状态到另一种状态的转换
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值