TrustZone-M 与 MPU 区别

越来越多厂商跟进Cortex-M23/33/35P了,大概进程如下.

  • ARM 发布M23/M33内核
  • 新唐最先发布M2351(M23内核)
  • Microchip发布SAML10/SAML11(M23内核)
  • NXP最先发布LPC5500(M33内核)
  • ST发布STM32L5(M33内核)
  • NXP发布i.MX 600
  • ARM 发布M35P内核

他们都有一个特点,就是没有MPU,取而代之是TrustZone-M(下面简称SAU),目前已经量产的有新唐M2351.

先说说MPU的缺点:

  • 只能设置2^n次方保护区域大小.
  • 只能管理4G大小(32位单片机地址空间只有4G,但是再64位单片机就不同了.)
  • MPU的可以被任意可执行代码配置(只要代码不在XN属性的地方,就有可能改变MPU配置.)

再看TrustZone特征:

  • 任意大小可配置
  • 安全区和非安全区,非安全区就算代码是可执行的,也不能修改配置.这是由于安全区所在的总线可以访问所有资源,而非安全区,只能访问部分资源.
  • 安全区和非安全区之间不能自由切换,必须通过中转,中转是受保护的.
  • 存在内存中的资源加密存放,就算别的程序窃取到其中的内存片段,也无法知道具体内容.

所以,可以理解成TrustZone是MPU的Plus版本,如果之前对MPU一点都不了解,那么这个上手就有点难度了.大多数Cortex-A都带了TrustZone,可以提前了解下,但是有一些小小的差别.

i.MX我还是挺看好的,就是封装很蛋疼.

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注