本帖最后由 STM新闻官 于 2025-3-14 14:24 编辑
感谢大家对直播 | STM32MP2x资源隔离架构(RIF)介绍与使用热情参与!本文给大家汇总了本次直播回放视频、直播答疑Q&A、直播讲义等。
直播回放
直播课件下载
直播答疑汇总 我们从直播答疑中选一些比较有代表性的提问在这里与大家分享,供大家回顾。 Q:RIF配置,STM32CubeMX需要升级到哪个版本?A:6.13及以上。
Q:已经部署的设备,还可以追加使用RIF吗?A:可以的,但是需要重新部署,不支持动态调整。
Q:CID1在正常情况下对SRAM的访问权限是如何配置的?它是否有权访问预留给cm33_cube_data的区域?
A:SRAM的访问权限是通过RIF设备树配置的,CID1没有权限访问预留给cm33_cube_data的区域。
Q:在开发STM32MP2x项目时,如何判断是否需要使用RIF架构?
A:STM32MP2系列中,RIF架构无论如何都存在,开发时需要考虑的是应用的需求和使用场景是怎样的,然后决定需要对RIF做什么样的配置。比如A35控制哪些外设,M33控制哪些外设,memory如何在两个内核之间做分配等等。
Q:在实际项目中,如何配置和使用RIF来保护敏感数据和资源?
A:针对开发板的默认配置中已经使用RIF保护optee使用的memory和外设资源,包括访问隔离机制,以及DDR加密。
Q:Lockstates在RISUP设备树配置中表示什么?它们如何控制配置的锁定状态?
A:lockstate表示RISUP的某个RIF配置是否锁定。
Q:RIF在处理低功耗模式时的行为是怎样的?哪些配置可能会丢失?
A:如果进入了standby模式,唤醒后相当于重启,需要重新配置RIF,其他低功耗模式下唤醒后RIF IP基本不需要重新配置。
Q:如何确定特定IP的RCC寄存器的访问权限?这一权限是如何根据RCC index或RISUP的配置来设定的?
A:可以通过RCC的RIF配置进行调整,找到对应的ID然后修改配置即可。
Q:STM32MP2通过SESIP Level 3认证和PSA 1级认证了吗?
A:认证正在进行中,通过后证书可以在相关网站查询到。
Q:在软件层面,如何通过编程接口(如API)来控制RIF架构?是否有具体的代码示例可以参考?
A:A35上的RIF配置可以通过设备树进行配置,不需要调用函数,M33侧如果需要配置RIF,有相关的driver API。
Q:这个CID可以再详细讲一下吗?
A:CID就是给总线主设备分配的一个标识号码,让slave知道当前的某个访问是来自哪个bus master的,其中比较特别的是TDCID和DDCID,TDCID标记了具有最高可信权限的那个master,通常是A35或者M33,DDCID是给调试端口使用的CID,通常也具有很高的访问权限,主要用于调试功能。
Q:TF-A安全启动可以用RIF吗?也是通过CID访问吗?
A:TF-A启动时已经会对RIF做一些配置,后面optee运行起来的时候还会做系统完整的RIF配置。
Q:CID过滤规则是什么?违反这一规则会导致什么后果?
A:CID过滤通常支持几种模式:1)不过滤,任何一个master都可以访问改资源,2)启用过滤,且静态分配给一个master,只有该master可以访问该资源,3)启用过滤,且动态分配给多个master,该资源可以在白名单中的多个master之间共享,master通过信号量获得访问权限,4)启用过滤,使能共享模式,但是白名单为空,用于完全禁止某个资源的使用。
Q:RIF架构在STM32MP2x系列不同型号之间是否存在差异?如果有,主要体现在哪些方面?
A:RIF架构在STM32MP2x系列中基本没有差异,微小的差异主要体现在一些外设上。
Q:如果我想用STM32MP2x做一个小型机器人,RIF能帮我隔离电机控制和图像处理任务吗?
A:如果电机控制部署在M核,图像处理部署在A核的话,那么是可以做到隔离的。
Q:CPUwo/TZ(不带信任区域的CPU)如何与RIF感知系统集成?它有哪些限制?A:不带TZ的CPU无法发起携带安全信号的访问,只能访问非安全属性的资源。
Q:隔离配置出错怎么办?比如误隔离了关键资源,系统会崩溃吗?有没有快速恢复或调试的方法?
A:错误的配置很可能导致系统崩溃,这中问题通常在开发的早期阶段就会遇到,可以根据log等信息检查修改配置,解决错误配置带来的冲突问题。
Q:RISUP的非法访问,可能通日志来查看吗?如果有,最多可以支持多少条的查询?
A:在默认的设置中,只要出现非法访问事件,Linux会panic,并输出非法访问相关信息的log。
Q:调整隔离策略,RIF是否支持动态重配置,或者是否需要重启系统?
A:RIF支持动态配置,没有锁定的配置项可以由授权的security domain(例如Trusted Domain)修改配置。如果某些配置已经锁定,则锁定的配置项只有复位之后才能重新配置。
Q:A35和M33都支持Trustzone,RIF如何协调两个内核的安全/非安全标记。
A:RIF引入了CID概念,每个内核用不同的CID标记各自发起的访问,RIF架构可以基于CID过滤不同内核发起的访问。
Q:在多任务操作系统(如Linux或RTOS)中,RIF架构如何支持不同任务的资源隔离?
A:多任务之间的隔离通常由操作系统内核来管理,可以通过动态修改memory的访问权限实现。
Q:功能安全和普通应用数据区隔离是怎么实现的?
A:如果由M33核来执行功能安全部分的操作,那么M33核使用的memory和外设资源都可以通过RIF配置为只允许M33核访问,A35以及其他master都没有权限访问分配给M33的memory,如果M33启用TrustZone功能,而且功能安全运行于M33的安全侧,那么M33核上的非安全侧代码也无法访问到功能安全使用的数据区。
Q:这个如何保护用户代码不被泄露?
A:用户代码泄露的问题可以从多个层面进行保护,RIF能够提供的主要是运行时期的DDR加密,保护optee一侧的执行安全,对于用户代码本身,STM32MP2的安全启动功能可以支持FSBL(TF-A)和optee的签名和加密。
Q:ST是否提供RIF相关的API?对Linux内核的资源管理是否冲突。
A:A35这边的RIF可以通过设备树进行配置,已经分配给Linux侧管理的资源Linux可以完全管控,不冲突。M33一侧如果需要配置RIF,会有相关的HAL driver API。
Q:软件隔离还是硬件隔离?
A:RIF本身是硬件隔离,配合CPU中运行的不同的软件实现软硬结合的系统级隔离。
Q:RIF和TrustZone有什么区别?
A:TrustZone是内核的特性,RIF是把TrustZone的隔离机制延申到SOC的整个系统,并且引入了CID的概念,除了可以区分安全/非安全,特权非特权,还可以区分不同的总线主设备,包括CPU和其他master,例如DMA。
|