Cortex-M23 / 33的TrustZone与Cortex-A的TrustZone相比

时间:2018-04-13 07:14:53

标签: cortex-m cortex-a trust-zone

Cortex M23 / 33的TrustZone和Cortex A的TrustZone有什么区别?我是否可以开始在Cortex A处理器上对Cortex M23应用程序进行原型设计,然后在具有此内核的芯片可用时迁移到Cortex M23?

3 个答案:

答案 0 :(得分:3)

免责声明:我不是TrustZone专家,我已经阅读了一些文章,并在Aarch64状态的Armv8-a处理器和EL3 / EL2异常级别上使用Arm Trusted Firmware进行了实验。

根据这个link,它们似乎非常不同:

  • Cortex-A正在使用SMC指令在非安全和安全世界之间切换,并且需要编写一些特定的部分或软件,例如可信启动,安全世界交换机监视器,小型可信操作系统和可信任的应用程序。
  • Cortex-M正在使用他们的硬件在非安全和安全的世界之间实现更快的过渡和更高的功效。不需要任何安全的监控软件。

最重要的是,您可能不应该使用Cortex-A开始开发Cortex-M23软件。

您应该查看Arm MPS2+ FPGA Prototyping Board,确认它非常适合您的需求并购买一个:根据ARM,它提供了所有Cortex-M处理器的固定加密FPGA实现。",包括Cortex-M23和Cortex-M33实现。

FPGA实现与真正的Cortex-M23实现之间在性能方面显然会有所不同,但从TrustZone感知软件的角度来看,应该没有./
如果你考虑一下,495.00美元不到10小时,嵌入式软件开发人员每小时花费50美元。这对于消除项目中的巨大风险并不是太大的代价 - 我的两分钱。

答案 1 :(得分:2)

我通过另一个渠道得到了ARM关于这个问题的答案,因为这个话题可能对社区很有意思,我想在这里分享。这是ARM所说的:

  

虽然它们都被称为TrustZone并且处于高级别   概念类似,在架构的低层次上有很多   Cortex-M23 / M33上的TrustZone与Cortex-A之间的差异。该   以下网站总结了主要差异:

     

https://developer.arm.com/technologies/trustzone

     

由于这些架构差异,您无法使用Cortex-A   平台为Cortex-M开发TrustZone软件。

答案 2 :(得分:0)

Cortex-A 中的 Trustzone 使用专用模式来处理安全状态之间的切换,该模式为监控模式。 在监控模式下,处理器将始终处于安全状态,并且可以访问 SCR 寄存器中的 NS 位,该魔术位将定义 CPU 将在监控模式后切换到的模式的安全状态。 因此,安全和非安全状态之间的任何切换都将通过监控模式的单一入口点。

带有安全扩展的ARMv8m有不同的方法,虽然概念相同,具有安全和非安全两种状态,但我们可以实现多个入口点在CPU状态之间切换,因此您具有三种类型的内存属性:安全,非-secure and non-secure callable 和 non-secure callable 将代表确保从非安全过渡到安全的入口点。

非安全可调用内存中的入口点具有独特的结构:它必须以SG(安全门)指令开始,一旦执行,CPU 将切换到安全状态。 切换回非安全状态是通过执行其他专用指令来处理的:BXNS 和 BLXNS

ARMv8M 遵循不同的方法,具有多个可由用户实现的入口点,并且在 3 个内存属性之间划分了可寻址的内存空间

更多详情可以参考以下课程: https://www.udemy.com/course/arm-cortex-m33-trust-zone/?referralCode=6BDA6DF1E47A7CF53175