This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM2632:AM2632中 MPU 的用法

Guru**** 2042910 points
Other Parts Discussed in Thread: AM2632, SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1425228/am2632-usage-of-mpu-in-am2632

器件型号:AM2632
主题中讨论的其他器件: SysConfig

工具与软件:

您好!

我们在 lookstep 模式中使用 AM2632。  


群集 R5SS1当前已启动、并且已针对 R5SS0内存区域执行 pBIST、目前没有其他任务。
集群 R5SS0是我们的"主"内核、 应用于我们的功能安全任务。 但是、固件中仍然有很大一部分与安全无关。


在主内核(R5SS0)上、我们不想使固件的所有部分都符合安全相关代码、因为要获得整个固件的安全认证要比仅针对安全相关部分要费力得多。
我们不在系统上使用操作系统、而是使用裸机选项。


在此背景下、我想了解 AM263x 的 MPU 单元、但此刻我有点困惑。

为了我的理解、AM263x 将 ARM MPU 和系统 MPU 固件(由 HSM 提供)区分开来。 我的理解是否正确?
的可能性

我们的目标是:

我们希望通过一项功能(即"功能安全任务")来执行所有与安全相关的任务。  
我的想法是、功能安全任务使用自己的存储器区域来保存与安全相关的运行时数据。 因此、我在链接器命令文件中的特定 RAM 地址上针对该安全数据实现了一个自有存储器区域。

安全数据应由"功能安全任务"读取和写入、并且仅可由其余固件("非功能安全固件器件")读取(不可写)。

我的质询如下。
是否可以使用可由 SysConfig 配置的 MPU 实现这种数据分离和保护?

在 SysConfig-Configuration 中、我引入了一个新区域(区域5)、表示安全数据区域。 只有 在管理员模式下才能完全访问安全数据、用户模式只能读取数据。



我的问题现在是:

-在一个内核上实现功能安全和非功能安全的数据分离,这是一个好方法吗?  这是 MPU 的正确应用吗?


-我的系统仍无法使用该配置运行。 我可以切换到用户模式、但我不知道如何切换管理员模式、在我的安全应用程序开始时、您能给我举个例子吗?




此致
JO


 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jo:

    [quote userid="561607" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1425228/am2632-usage-of-mpu-in-am2632为方便起见、AM263x 将 ARM MPU 和系统 MPU 固件(由 HSM 提供)分为两部分。 我的理解是否正确?
    [/报价]的可能性

    是的、这是正确的 Jo。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="561607" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1425228/am2632-usage-of-mpu-in-am2632 "]我们希望从一个功能(我们的"功能安全任务")执行所有与安全相关的任务。  
    我的想法是、功能安全任务使用自己的存储器区域来保存与安全相关的运行时数据。 因此、我在链接器命令文件中的特定 RAM 地址上针对该安全数据实现了一个自有存储器区域。

    安全数据应由"功能安全任务"读取和写入、并且仅可由其余固件("非功能安全固件器件")读取(不可写)。

    我的质询如下。
    是否可以使用可由 SysConfig 配置的 MPU 实现这样的数据分离和保护?[/QUOT]

    我有几个问题: 1. 安全和不安全任务都在同一个内核上运行?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、安全和非安全固件部件应在同一内核上运行

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Jo  

    很少有人为了说明防火墙和 MPU 的区别而说明它们:

    防火墙是 SoC 特定的功能、而 MPU 是核心特定功能。 使用这两者的目的是防止对存储器区域进行不必要的访问。 现在、您使用哪一个将取决于您要阻止不必要访问的环境。 因此、这意味着当您  为存储器区域配置防火墙时、将影响中的事务 存在的任何实体进行通信  而 MPU 配置是核心的本地配置。。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、我现在了解了这个差异。 但是、如果我想确保我的数据受到保护以防止不必要的修改、这听起来可以同时激活这两个功能。

    那么,我怎么能得到一个私有的边缘从我的 saatey 函数获得数据的写入访问权限呢? 那么、在用户模式下使用内核并切换到管理员模式的正确方法是什么?


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有关如何启用预隔离模式的详细信息、请参阅 ARM R5F 技术参考手册

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此外、我强烈建议阅读来自 Wittenstein 的关于单核架构安全解决方案的白皮书

    https://highintegritysystems.com/downloads/white_papers/Using_an_MPU_to_Enforce_Spatial_Separation.pdf

    它讨论了您计划使用的架构以及面临的挑战。  

    如果您有任何其他问题、请告诉我。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Nilabh:

    非常感谢你提供的信息,它帮助我很多,特别是白皮书包含有价值的信息。


    我试图通过执行 SVC 指令切换到 SVC 模式



    这可行、我的应用程序将跳转到我修改过的 SDK 库的 SVC 处理程序函数。

    如何在完成工作后使 SVC 处理程序正确跳回我的应用程序?
    在我的示例中、系统在退出 SVC 处理程序函数后崩溃。
    SVC 之后有什么特别的事情吗?

    您能举个例子、如何返回到我的应用吗?

    此致
    JO

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jo:

    在执行跳转之前、您需要保存用户模式的上下文、因为我建议在 SDK 中查看该文件、该文件在进入中断前保存上下文、在退出前将其恢复。

    source\kernel_nortos\dpl\r5\Hwip_armv7r_handler_nortos_asm.s

    另请注意、SDK 中使用 Svc 模式来实现软件中断。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jo、您能让上述解决方案发挥作用吗? 如 白皮书中所述、如果您使用软件中断作为代码执行、而软件中断将在相同模式下发生、可能会存在挑战。因此、一旦出现问题、我发现如果您是从安全代码触发 SW 中断、它将尝试重新进入 Svc 模式、这不是预期状态、并且会导致中断信号丢失。