Cortex M23/33 的 TrustZone 和 Cortex A 的 TrustZone 有什么区别?我可以开始在 Cortex A 处理器上对我的 Cortex M23 应用程序进行原型设计,然后在具有此内核的芯片可用时迁移到 Cortex M23 吗?
3 回答
免责声明:我不是 TrustZone 专家,我已经阅读了一些文章并在 Armv8-a 处理器上以 Aarch64 状态和 EL3/EL2 异常级别对 Arm 可信固件进行了实验。
根据此链接,它们似乎非常不同:
- Cortex-A 正在使用 SMC 指令在非安全和安全世界之间切换,并且需要编写一些特定的部分或软件,例如可信启动、安全世界切换监视器、小型可信操作系统和可信应用程序。
- Cortex-M 正在使用他们的硬件在非安全和安全世界之间实现更快的转换和更高的能效。不需要任何安全的监控软件。
最重要的是,您可能不应该使用 Cortex-A 来开始开发您的 Cortex-M23 软件。
您应该看看Arm MPS2+ FPGA 原型板,确认它非常适合您的需求并购买:根据 ARM,它“提供了所有 Cortex-M 处理器的固定加密 FPGA 实现。”,包括 Cortex-M23 和 Cortex-M33 实现。
FPGA 实现和真正的 Cortex-M23 实现在性能方面显然会有差异,但从 TrustZone 感知软件的角度来看,应该没有。
如果你仔细想想,495.00 美元对于一个每小时 50 美元的嵌入式软件开发人员来说还不到 10 小时。从您的项目中消除巨大风险的代价并不是太大——我的两美分。
我通过另一个渠道从 ARM 那里得到了这个问题的答案,因为这个话题可能对社区来说很有趣,所以我想在这里分享它。这是 ARM 所说的:
虽然它们都被称为 TrustZone,并且在高级别的概念是相似的,但在架构的低级别,Cortex-M23/M33 和 Cortex-A 上的 TrustZone 之间存在许多差异。以下网站总结了主要区别:
https://developer.arm.com/technologies/trustzone
由于这些架构差异,您不能使用 Cortex-A 平台为 Cortex-M 开发 TrustZone 软件。
Cortex-A 中的 Trustzone 使用一种专用模式来处理安全状态之间的切换,这种模式就是监控模式。在监视模式下,处理器将始终处于安全状态,并且可以访问 SCR 寄存器中的 NS 位,该魔术位将定义 CPU 在监视模式后将切换到的模式的安全状态。因此,安全和非安全状态之间的任何切换都将通过单一入口点,即监控模式。
带有安全扩展的 ARMv8m 有不同的方法,虽然概念是相同的,有安全和非安全两种状态,但我们可以实现多个入口点在 CPU 状态之间切换,所以你有三种类型的内存属性:安全、非安全和非安全可调用和非安全可调用将代表确保从非安全过渡到安全的入口点。
非安全可调用内存中的入口点具有独特的结构:它必须以 SG(安全门)指令开始,一旦执行,CPU 将切换到安全状态。通过执行其他专用指令来处理切换回非安全状态:BXNS 和 BLXNS
ARMv8M 遵循不同的方法,具有多个可由用户实现的入口点,并在 3 个内存属性之间划分可寻址内存速度
有关更多详细信息,您可以参考以下课程: https ://www.udemy.com/course/arm-cortex-m33-trust-zone/?referralCode=6BDA6DF1E47A7CF53175