• 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来,从一种状态到另一种状态的转换
     

  • 相关阅读:
    云计算-存算一体-EDA-技术杂谈
    在git上先新建仓库-把本地文件提交远程
    vite+ceisum 图片JSON 报错问题404
    Python学习之CSDN21天学习挑战赛计划之6
    java计算机毕业设计springboot+vue电影推荐系统
    面试经典150题——求根节点到叶节点数字之和
    Kotlin 学习笔记(七)operator约定
    idea插件(free mybatis plugin)
    阿里云ACP考试内容是什么?考试时间是什么时候?
    jquery加载初始化的三种方法
  • 原文地址:https://blog.csdn.net/weixin_46942417/article/details/126676687