0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞萨RA产品家族初学者指南-第11章(2)

瑞萨嵌入式小百科 来源:未知 2023-01-18 12:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

瑞萨RA产品家族初学者指南》系列文章已收录成合集,欢迎点击上方查看合集并订阅!

11. 安全性和TrustZone

本章目录

  1. 什么是TrustZone,它有什么作用?

  2. 安全环境和非安全环境的划分

  3. 器件生命周期管理

  4. TrustZone用例

11.2 安全环境和非安全环境的划分

现在我们已经清楚,程序需要划分为安全和非安全环境,我们该如何相应地对软件进行分区?为此,基于TrustZone的系统始终包含两个不同的项目:一个安全项目,另一个是非安全项目。二者都可以利用SRAM以及代码和数据闪存,但只有安全代码可以直接访问两个(安全和非安全)分区。

可借助e2 studio中的项目配置器设置这些项目。创建新项目后,系统将提示您选择项目应具有的类型:

  • 扁平化(非TrustZone)项目

  • TrustZone安全项目

  • TrustZone非安全项目

faa0dd06-96e6-11ed-bfe3-dac502259ad0.jpg

图11-4:通过项目配置器的“Type Selector”(类型选择器)页面,可以在扁平化、安全和非安全项目之间进行选择

请注意,如果选择扁平化(非TrustZone)项目,则微控制器将在引导后保持安全模式。另外,在设置TrustZone项目时需要格外小心,以确保正确管理安全和非安全分区之间的连接。在项目配置器中创建非安全项目时,将非安全项目与安全项目或捆绑包进行关联以实现此要求。在“Project Type Selection”(项目类型选择)屏幕上选择“TrustZone Non-secure Project”(TrustZone非安全项目)并单击“Next”(下一步)后,e2 studio将要求您为非安全项目指定一个对应的安全项目。

创建安全项目后,即可将安全的堆和驱动程序提供给非安全环境。为此,右键单击最上面的模块,从弹出的菜单中选择“Non-secure Callable”(非安全可调用)。选择该条目后,请注意左侧的小箭头:它指示此模块现在为非可安全调用模块(参见图11-5)。

fab2ec76-96e6-11ed-bfe3-dac502259ad0.jpg

图11-5:可以将安全项目中堆栈的最顶层模块设为非安全可调用模块

最后一点是,也可以在e2 studio内对内存进行分区:转到“Run → Renesas Device Partition Manager”(运行 → 瑞萨器件分区管理器),将运行一个实用程序。器件分区管理器可以在开发期间执行生命周期状态管理,另外还允许设置和查询IDAU区域,以及解锁已擦除的闪存模块。

fabf9da4-96e6-11ed-bfe3-dac502259ad0.jpg

图11-6:器件分区管理器可以定义各种内存分区的大小

如果要深入了解用于配置RA产品家族微控制器专用的Arm TrustZone的工具和相关工作流程,您可以识别下方二维码或复制对应的网址在浏览器中打开查看瑞萨网站上提供的RA Arm TrustZone工具入门,介绍有关使用工具和设置项目的基础知识:

facbb620-96e6-11ed-bfe3-dac502259ad0.jpg

https://www.renesas.cn/cn/zh/document/apn/ra-arm-trustzone-tooling-primer

11.2.1 跨边界的函数调用

现在,如果位于非安全环境的应用程序的一部分要调用位于安全环境的闪存外设,以对非安全数据闪存进行编程,会发生什么情况?为此,Arm v8M Cortex-M33内核的指令集中添加了一条新指令:SG或安全网关。该指令必须位于内存的安全和非安全部分之间的非安全可调用(NSC)区域。这可确保即使在安全环境的其他位置找到SG操作码,也不能将其用作入口点。在SG指令之后,可以对安全端的代码进行调用(参见图11-7)。

fad796c0-96e6-11ed-bfe3-dac502259ad0.jpg

图11-7:从非安全环境中调用安全函数

将通过BXNS LR(BXNS = 跳转并交换到非安全状态)操作码从安全端返回到非安全端,此操作将跳转到BL Func_A_Entry分支期间放置在链接寄存器(LR)中的地址。在函数返回时,函数的返回状态被存储在LR中返回地址的LSB中。这一位的数值将和返回到调用函数时的状态进行比较,以防止从非安全代码调用的安全API返回到一个指向安全地址的假返回地址。

在第一条指令不是NSC区域中的SG操作码的情况下,执行位于非安全环境中的代码对安全环境中的代码的调用,则在带CM33内核的微控制器上会发生安全故障。将在安全状态下处理该故障。

还可以从安全代码调用非安全代码,但不建议这样做,因为这有可能导致数据泄露,导致安全问题。安全代码可以通过参数将某些寄存器值传输到非安全环境,并且编译器将从其余寄存器中清除其他安全数据。该机制还隐藏了安全软件的返回地址,从而确保非安全环境中的代码不会操纵返回地址(参见图11-8)。

fae75f38-96e6-11ed-bfe3-dac502259ad0.jpg

图11-8:从安全环境中调用非安全函数

通过BLXNS(通过链接跳转并交换到非安全状态)指令从安全代码调用非安全代码的推荐方法是:在第一次启动时初始化安全环境中的代码,然后将程序控制传递给非安全环境。此后,从非安全环境到安全环境的任何数据传输均应通过FSP回调进行管理。


原文标题:瑞萨RA产品家族初学者指南-第11章(2)

文章出处:【微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18605

    浏览量

    387033
  • 瑞萨
    +关注

    关注

    36

    文章

    22429

    浏览量

    89748
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RA6E2】开箱测试报告_ZGZZ

    ;amp;vd_source=7ab92f6a337b22fda39554fd6e70f01a] ****有幸参加RA6E2开发板试用活动并得到资格,我一直是个电子 DIY 爱好者,平时在家折腾点
    发表于 12-01 22:25

    RA家族RA4C1低功耗MCU发布

    RA家族在2025年8月推出RA4C1低功耗MCU,基于Arm Cortex-M33(CM33)内核,提供低功耗/低电压操作、LCD段码
    的头像 发表于 08-22 15:00 1989次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b><b class='flag-5'>家族</b><b class='flag-5'>RA</b>4C1低功耗MCU发布

    RA8系列教程 | RA8 开发环境搭建,并点亮一个LED

    今天就给大家讲讲基于Cortex-M85内核RA8单片机快速上手指南
    的头像 发表于 06-04 17:32 1465次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>8系列教程 | <b class='flag-5'>瑞</b><b class='flag-5'>萨</b> <b class='flag-5'>RA</b>8 开发环境搭建,并点亮一个LED

    RA-Eco-RA4M2开发板评测】初学-使用flash programmer烧录程序

    本人刚入坑不久,对单片机的热情很高,于是也加入了的板子申请队伍,很荣幸也成为了试用者之一,此前对于的板子从未接触过,包括对于使用e2
    发表于 04-29 17:28

    RA8D1单片机IO中断配置实现方法

    本文为结合e2 studio工具,以及CPKCOR_RA8D1B评估板,给大家讲述
    的头像 发表于 04-09 15:05 1517次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>8D1单片机IO中断配置实现方法

    RA系列MCU的命名方法与选型

    初学者来说,要理解RA产品家族产品型号中的不同数字和字母并不容易。我们首先以RA系列MCU中的
    的头像 发表于 03-27 14:32 2267次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>系列MCU的命名方法与选型

    RA8快速上手指南:Cortex-M85内核RA8开发环境搭建 并点亮一个LED

    因为Cortex-M内核,RA8系列单片机支持多种市面上常见的开发环境,像Keil MDK、IAR EWARM等,而本文讲述的是自家
    的头像 发表于 03-17 14:35 1564次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>8快速上手<b class='flag-5'>指南</b>:Cortex-M85内核<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>8开发环境搭建 并点亮一个LED

    RA2L1入门学习】+开箱评测

    R7FA2L1AB2DFL。RA2L1 产品组采用优化的制程和电子的低功耗工艺技术,是业界一流水平的超低功耗微控制器。 本次收到的开发板
    发表于 03-09 07:40

    RA4L1产品特色功能及应用场景

    近日电子推出了一款最新的RA产品RA4L1,它有哪些特性以及适用于什么样的应用场景呢?本篇文章给大家带来详细介绍。
    的头像 发表于 03-04 15:51 1040次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>4L1<b class='flag-5'>产品</b>特色功能及应用场景

    RA家族RA4L1低功耗MCU量产上市

      RA家族RA4L1低功耗MCU产品系列于2025年2
    的头像 发表于 02-20 13:39 1264次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b><b class='flag-5'>家族</b><b class='flag-5'>RA</b>4L1低功耗MCU量产上市

    EE-269:以太网802.3初学者指南

    电子发烧友网站提供《EE-269:以太网802.3初学者指南.pdf》资料免费下载
    发表于 01-05 09:48 1次下载
    EE-269:以太网802.3<b class='flag-5'>初学者</b><b class='flag-5'>指南</b>

    RA家族精品RA2L1产品介绍

    RA2L1MCU是RA家族RA2系列广受欢迎的一款产品
    的头像 发表于 12-27 18:07 1128次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b><b class='flag-5'>家族</b>精品<b class='flag-5'>RA2</b>L1<b class='flag-5'>产品</b>介绍

    电子RZ MPU家族精品RZ/N2L产品介绍

    生态合作伙伴RT-Thread推出了一款高性能、多功能以太网MPU开发板EtherKit,搭载电子RZ/N2L,并携手
    的头像 发表于 12-23 14:10 1369次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子RZ MPU<b class='flag-5'>家族</b>精品RZ/N<b class='flag-5'>2</b>L<b class='flag-5'>产品</b>介绍

    FPB-RA6E2 评估板入门学习

    FPB-RA6E2 评估板入门学习
    的头像 发表于 12-11 09:22 1243次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b> FPB-<b class='flag-5'>RA6E2</b> 评估板入门学习

    电子RA2L1 MCU产品介绍

    RA2L1 MCU是RA家族RA2系列广受欢迎的一款产品
    的头像 发表于 12-10 10:51 1543次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子<b class='flag-5'>RA2</b>L1 MCU<b class='flag-5'>产品</b>介绍