讲到U5,首先就不得不提就是TrustZone。) O7 w+ H# A+ N* M1 }4 Z 0 K7 i; v9 i* r5 Z- J& f 4 s4 }2 u% X; X/ j4 t: o 话说就在2016的时候ARM推出了两款ARMv8-M架构的新内核M23、M33,众多开发者一脸懵逼,为啥两位数了。M8、M9都不要啦?这玩意跟之前的有啥区别呢?下一代是不是叫M233?突然就从ARMv7-M升级到了ARMv8-M,臣妾好不适应啊。而且你这个M23、M33,性能也打不过M7啊,啥意思啊?你出这干啥,我用M0、M0+/M3、M4不香吗。* @( C9 f- `5 W7 x 7 i5 ~3 @3 J5 H3 V4 [8 ] 简单来说ARMv8-M主要就是增加了一个TrustZone(还有很多其他提升哈,并不是这么简单)。 ) H6 ^. C+ W5 T" v# d# {" {; n / `3 K1 A( g+ n8 a7 v" A1 c 那这个TrustZone到底是何方神圣?值得ARM为此升了一个大版本呢?% L2 u# |$ l5 ]6 h4 l 7 Y7 i! w" Q1 Y) `0 ]& _7 l0 n X5 G/ X0 U0 K; S 首先TrustZone不是啥新鲜玩意,在Cortex-A系列里面早已被使用。现在聊的这个,更准确的说法应该是TrustZone for ARMv8-M。也就是专供于Cortex-M使用的(下文讲的TrustZone都专指TrustZone for ARMv8-M)。 至于TrustZone实现的安全到底是什么,笔者在此说说自己的拙见,各位大佬一笑而过就是。它是为了在新的信息化时代保护自己产品或者说代码的一项技术。比如最常见的代码入侵、网络入侵等等。而在Iot时代,慢慢提供模块已经满足不了新一代开发的需要了、而提供lib更是把自己的命脉交给了别人。 $ N& D C) B7 L 在新的需求层出不穷之际,TrustZone应运而生,拿出来了安全最终极的技术----隔离。 $ f+ K3 F. ~* l9 S3 ^ 对于程序来说安全区域的程序就是真大哥,它有访问所有资源的能力,而非安全区域的就是假大哥,它觉得自己可以,其实不行,只能访问非安全的资源,还有安全区大哥允许它访问的资源。 % l3 n7 I$ Q! N; ?+ x 0 a% l# P! h0 u9 y 而这个隔离的实现,代价可以说是巨大的。CPU本身分成了安全模式与非安全模式,代码空间与RAM空间也被分成了两个区域,很多核心资源也被分成了两份(在STM32CubeMX里面配置项使用_NS与_S进行区分),而很多外设也可以配置为安全外设或者非安全外设。 * a h% j0 X0 J8 r& S/ r+ H B 虽然TrustZone如此强大,实现它使用的资源也耗费巨大,但仅仅是一个TrustZone并不能真正实现保护,它只是一个基础,而更重要的一层还是在我们开发者这里。TrustZone是一把安全的神兵利器,而如何去保护自己的产品的核心,什么是产品的核心部分,则是我们应该考虑的问题。* V$ ?6 ]& x7 K% H4 y 不知不觉又扯这么多,再单开一篇把,咳咳,文人的事情,怎么能叫水文呢。 # \+ P- |& E5 T L |
实战经验 | 基于 STM32U5 创建 USBx_CustomHID 通信
STM32U5 x E-BIKE,记录你的骑行多巴胺
基于STM32U5系列TIMER+DMA+DAC应用经验分享
实战经验 | 基于 STM32U5 片内温度传感器正确测算温度
【文末有礼】新款STM32U5:让便携产品拥有惊艳图效
STM32的CAN FD位定时设置注意事项
【STM32U599】5.聊聊手表菜单
【STM32U599】6.界面切换
【STM32U599】3.写个表盘
【STM32U599】4.引入RTC与MVP开发
了解不多。。。0 K$ {) u- Z) Q( p/ w9 V, [
6 }2 k( u# Y8 h# |