Armv8-M的TrustZone技术之SAU寄存器总结

每个SAU寄存器是32位宽。下表显示了SAU寄存器概要。

5289e1f2ffad4021aaa01ea71424719d.png

5.1 SAU_CTRL register

SAU_CTRL寄存器的特征如下图和表所示:

9593c92b94c8492a9f03e9ac076879f8.png

5.2 SAU_TYPE register

5bff02be04104098b3a5c7aa54d9701e.png

5.3 SAU_RNR register

d2e0a1a8e9c94ff6857b89e567263bae.png

5.4 SAU_RBAR register

df81b8dea94b49b2b929519f4dda6433.png

5.5 SAU_RLAR register

2b5288c9bf7b462c9b413f6e8b2186a8.png

5.6 SAU区域配置

当SAU启用时,未由已启用的SAU区域覆盖的内存是安全的。区域可以单独使用SAU_RLAR启用。

da43bb6ae8d24382adced47dbf236545.png

  • 当SAU_RLAR.ENABLE = 1且SAU_RLAR.NSC = 0时,该区域为非安全。
  • 当SAU_RLAR.ENABLE = 1且SAU_RLAR.NSC = 1时,该区域既是安全的,又是非安全可调用的。

5.7 配置示例

下面的示例CMSIS代码展示了如何为两个区域配置SAU。

// Configure SAU using CMSIS
// Configure SAU Region 0
// Start Address 0x00200000
// Limit Address 0x003FFFE0
// Secure non-secure callable
// Use CMSIS to access SAU Region Number Register (SAU_RNR) 
// Select region 0
SAU->RNR = (0);
// Set SAU Region Base Address Register (SAU_RBAR)
SAU->RBAR = (0x00200000U & SAU_RBAR_BADDR_Msk);
// Set SAU Region Limit Address Register (SAU_RLAR)
SAU->RLAR = (0x003FFFE0U & SAU_RLAR_LADDR_Msk) | 
((1U << SAU_RLAR_NSC_Pos) & SAU_RLAR_NSC_Msk) | 1U;
// Configure SAU Region 1
// Start Address 0x20200000
// Limit Address 0x203FFFE0
// Non-secure
// Select region 1
SAU->RNR = (1);
// Set SAU Region Base Address Register (SAU_RBAR)
SAU->RBAR = (0x20200000U & SAU_RBAR_BADDR_Msk);
// Set SAU Region Limit Address Register (SAU_RLAR)
SAU->RLAR = (0x203FFFE0U & SAU_RLAR_LADDR_Msk) | 
((0U << SAU_RLAR_NSC_Pos) & SAU_RLAR_NSC_Msk) | 1U;
// Enable SAU
// Use CMSIS to access SAU Control Register (SAU_CTRL) 
// Set ENABLE bit[0] to 1 
// Set ALLNS bit[1] to 1 
// All memory is secure when SAU is disabled
SAU->CTRL = ((SAU_INIT_CTRL_ENABLE << SAU_CTRL_ENABLE_Pos) & SAU_CTRL_ENABLE_Msk) |
((SAU_INIT_CTRL_ALLNS << SAU_CTRL_ALLNS_Pos) & SAU_CTRL_ALLNS_Msk);

 

相关推荐

  1. Armv8-MTrustZone技术简介

    2024-01-27 10:38:02       47 阅读
  2. Armv8-MTrustZone技术解决安全需求

    2024-01-27 10:38:02       37 阅读
  3. ARMTrustZone技术

    2024-01-27 10:38:02       37 阅读
  4. ARM TrustZone技术介绍

    2024-01-27 10:38:02       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-27 10:38:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-27 10:38:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-27 10:38:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-27 10:38:02       18 阅读

热门阅读

  1. 嵌入式——从入门到精通第十一天

    2024-01-27 10:38:02       33 阅读
  2. linux部署es8.0版本以及启动了浏览器访问不了

    2024-01-27 10:38:02       30 阅读
  3. C# 中的接口

    2024-01-27 10:38:02       32 阅读
  4. 目标检测中目标的尺寸差异大会存在什么问题?

    2024-01-27 10:38:02       38 阅读
  5. Compose中添加Android原生控件

    2024-01-27 10:38:02       43 阅读
  6. vue3中页面传参汇总

    2024-01-27 10:38:02       40 阅读
  7. sql注入之into outfile语句写入一句话木马

    2024-01-27 10:38:02       42 阅读
  8. 我要成为嵌入式高手之1月26日第十一天!!

    2024-01-27 10:38:02       32 阅读
  9. 04_前后端交互技术之Ajax异步请求

    2024-01-27 10:38:02       28 阅读
  10. RuoYi微服务部署运行报错

    2024-01-27 10:38:02       44 阅读