【发布时间】:2018-09-23 11:31:02
【问题描述】:
Cortex M23/33 的 TrustZone 和 Cortex A 的 TrustZone 有什么区别?我是否可以开始在 Cortex A 处理器上对我的 Cortex M23 应用程序进行原型设计,然后在具有此内核的芯片可用时迁移到 Cortex M23?
【问题讨论】:
标签: cortex-m cortex-a trust-zone
Cortex M23/33 的 TrustZone 和 Cortex A 的 TrustZone 有什么区别?我是否可以开始在 Cortex A 处理器上对我的 Cortex M23 应用程序进行原型设计,然后在具有此内核的芯片可用时迁移到 Cortex M23?
【问题讨论】:
标签: cortex-m cortex-a trust-zone
免责声明:我不是 TrustZone 专家,我已经阅读了一些文章,并在 Aarch64 状态的 Armv8-a 处理器和 EL3/EL2 异常级别上尝试了 Arm 可信固件。
根据这个link,他们看起来很不一样:
归根结底,您可能不应该使用 Cortex-A 来开始开发您的 Cortex-M23 软件。
您应该看一下Arm MPS2+ FPGA Prototyping Board,确认它非常适合您的需求并购买:根据 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状态之间切换,所以你有三种类型的内存属性:安全,非-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
【讨论】: