|
越来越多厂商跟进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我还是挺看好的,就是封装很蛋疼。
本文转载自《TaterLi 个人博客》:TrustZone-M 与 MPU 区别/ |