8 ^9 f! s. a! J
$ f- U$ B! E n/ {! B: ^; f
+ m+ D7 @: l4 o2 L% A5 l$ r4 O
; i/ N5 i0 Y9 P0 P q从使用角度,我们有以下六类设计资源,提供给开发者,做基于STM32L5的安全应用开发。 技术文档、评估板、参考固件例程、配合应用开发的软件工具、中文培训材料、本地方案(ST本地支持团队和中国合作伙伴开发的方案,都会在这里向大家集中展示) 4 U6 b& n4 k( b& w" {. c/ b
技术文档
4 Q& o# Y G6 l8 u% _7 J基础技术文档 | | |
8 |* X3 D/ X" P% s& x3 ~: i | | |
' R) K' p* S) C& S | | | L6 h4 ]% G8 m4 X* D% l
| | |
, k& J2 T- M; u$ ^* V2 _ | | 【STM32L552xx/562xx系列】勘误手册 | , D5 @/ |/ M8 v# ^
| 应用笔记/用户手册 | | Octo-SPI interface on STM32 《STM32的Octo-SPI接口外设》 | | | FDCAN peripheral on STM32 devices 《STM32的FDCAN接口外设》 | | FDCAN protocol used in the STM32 bootloader 《STM32启动程序使用的FDCAN协议》 | | Using STM32L5 cache to optimize performance and power efficiency 《使用STM32L5的cache来优化性能和能效》 | | Managing memory protection unit in STM32 MCUs 《管理STM32的MPU》 | 支持L5新版本MPU
7 J) E, g$ Y! ~$ v" G4 \" _) Z* v! }
| M1 Q" n4 l. M
基础文档,除了参考手册,数据手册,勘误手册之外,由于STM3L5是第一颗基于CM33内核的STM32,因此对内核的编程手册也是一篇重要的文档。 ! n; A9 V0 B5 r2 L
STM32L5延续以往STM32系列的外设基因,同时增加了新的外设模块,进一步扩展目标应用市场,并进一步提高效能和安全性。对这些新外设,我们都有应用文档描述它的使用。
4 H5 a% ?6 m3 S2 X! ?应用笔记/用户手册 | | Overview secure firmware install (SFI) 《安全固件安装概览》 |
+ _% L, h, m- k5 m' n/ H4 E1 x6 f |. ^$ i2 }
6 b% M7 h0 K3 y" n9 k
$ V, w& t7 ?4 V
% W2 O! P( Y K0 v% y! e8 `
STM32L5的TrustZone和其他安全特性 | | STM32L5 TrustZone feature 《STM32L5的TrustZone特性》 | | Getting started with STM32L5 and TrustZone® development 《基于STM32L5的TrustZone开发入门体验》 | | STM32L5 system memory RSS services 《STM3L5系统存储区里的RSS(根安全服务)》 | | Overview of SBSFU solution on STM32L5 《STM32L5的安全启动和安全固件升级方案介绍》 | | STM32L5 Nucleo-144 board (MB1361) 《STM32L5的144引脚Nucleo板介绍》 | | | Evaluation board with STM32L552ZE MCU 《STM32L552的Evaluation(全功能评估)板》 | | Discovery kit with STM32L562QE MCU 《STM32L562的Discovery(探索套件)板》 | 5 O' W) B t+ l+ M3 p* r
安全,是STM32L5的重点特性之一,除了TrustZone,ST还提供了安全启动安全升级的参考源码,以及用于产线上安全烧录固件的SFI服务。以下文档,可以让你有一个比较全面的认识。 7 U* D: o+ n1 m% I
应用笔记 / 用户手册 | | STM32Cube firmware examples for STM32L5 《STM32CubeL5固件包里的例程介绍》 | | | Getting started with CubeL5 for STM32L5 《基于固件包STM32CubeL5体验STM32L5的入门》 | | Getting started with L5 in STM32CubeIDE 《基于软件工具STM32CubeIDE体验STM32L5的入门》 |
) M' T; q' A7 Y1 H9 n: {: b) Y | | Getting started with STM32L5 hardware development 《基于STM32L5的硬件开发指南》 |
7 C; A. R; `! g0 v j* i% i: f | | Migrating from STM32L4 and STM32L4+ to STM32L5 《如何从现有设计从STM32L4和STM32L4+移植到STM32L5》 | | 2 G1 c; B# l8 N7 |- c
除了评估板和技术文档,和以往的STM32芯片一样,STM32L5也有它自己的固件包:STM32CubeL5。里面包罗了很多预编译后,直接下载就能运行的例程,在以下文档里我们也有描述。 STM32L5是ST推出的集低功耗和安全特性为一身的芯片,现有基于前代产品的方案,如果要移植到更安全,更节能的STM32L5上,可以参考AN5138的移植文档。 ) r/ i) s- u6 f3 K1 f* G$ l
评估板
! T0 \8 \+ s8 k4 ` t% V, m2 T. \
' O {/ q% Y% f0 w& ] |
9 v* Q9 U7 C* o8 F
6 N& `; M9 S7 k& L8 K | | | | | | | | | | | | | | | | 3个用户LED 1个用户按钮,一个复位按钮 32.768KHz 晶振 | + TFT LCD模块,带触摸功能功耗测量器件(300nA~150mA) Audio CODEC, MEMS数字麦克风,Octo-SPI Flash,BLE模块,加速度计和陀螺仪 | 4个用户LED+ Octo-HyperRAM,SRAM,EEPROM,Tamper按键,Joystick,触摸感应按钮,光敏电阻,纽扣电池 | | | | |
# f3 g9 q9 n; @5 `4 y& Z CST官方有三种L5的评估板。DK板上搭载L562系列,比Nucleo和Eval板上L552系列,多一些和密码学操作有关的硬件:支持对称加解密技术的AES,和支持非对称加解密技术的PKA。 Y5 n' }' T( @2 _8 ?$ R8 C; g
并且DK板载的STLINK是第三代产品,下载速度更快,支持更多USB桥接接口,比如I2C、SPI,CAN等。这三块板子对应的用户手册,也在下表中列出。 为了方便大家体验STM32L5,Nucleo评估板已在STM32天猫旗舰店上线。
1 {/ _+ ^8 u, q5 P% Y固件例程
2 a m& w' q: L% Z% k/ V | | | 如何先在安全应用中使用一个中断,再在非安全应用中使用同样这个中断 | | | | 如何在DMA的安全通道和非安全通道上执行存储区间的数据传输 | | | | 如何对片上Flash以block为粒度进行安全区域和非安全区域的设置和使用 | | | | | | | 如何配置FMC控制器,访问被安全应用和非安全应用划分了各自区域的板载SRAM | | | | | | | | 如何在安全DMA通道上使用安全的HASH SHA-1计算服务 | | | | 如何从非安全应用中触发请求,去安全应用中在运行模式配置系统时钟 | | | | 如何配置TrustZone-aware的RTC,某些特性在安全状态,某些特性在非安全状态 | | | | | | / q | ?. z/ k S0 |; m5 Y
STM32CubeL5软件包里有丰富的例程,这里强调的有三个种类的例程,和以往的Cube软件包里内容有所不同。一类是支持TrustZone的例程:基于TrustZone的软件开发需要新的编程模型,即使就是简单的翻转gpio引脚电平,也通常需要两个项目,一个运行在安全世界,一个运行在安全世界。但是有一点需要大家注意一下,并非必须两个工程,但是运行在安全世界的工程一定是必须的。 ' o0 D) g1 v, `4 H; q
通过这个表格里列出的例程,大家可以体会一下RTC、DMA、Flash的操作,在需要支持TrustZone隔离的应用中,和普通应用开发有什么不同。
$ i, l) R& ]9 k( N+ Q5 B% `6 b6 p% ?1 M+ W8 m0 }
| | 如何使用GTZC单元里的MPCWM和TZIC子模块 | | 如何使用GTZC单元里的MPCBB子模块,并使能SecureFault检测 | | | 如何使用安全的OTFDE在安全区域对数据进行加密,再在非安全区域对其解密,而无需密钥交换 | | 如何对存储在外部Octo-SPI Flash的数据进行解密 | 如何执行存储在外部Octo-SPI Flash上的指令 | | 使用PKA模块执行ECC相关操作(验证公钥、从私钥产生公钥、计算签名) | | / w6 C. c9 L$ d! a! j! `
第二类例程:支持STM32L5新增的硬件模块,比如GTZC,OTFDEC、PKA。其中绿色字体标注的,是新模块在TrustZone使能后的用法。 0 e! Y8 Y+ ]& O
| | 提供信任根方案,包括安全启动、安全固件升级;还提供了安全服务的例子,它运行在安全世界,和非安全应用隔离开来,但是能被非安全应用在运行时调用。安全服务包括:加解密、安全存储、设备认证等 | | | 提供信任根方案,包括安全启动、安全固件升级;还提供了安全服务的例子,它运行在安全世界,和非安全应用隔离开来,但是能被非安全应用在运行时调用 | | | 如何在TrustZone使能的条件下使用FatFs协议栈 | | | 如何在TrustZone使能的条件下使用FreeRTOS,支持TZ的FreeRTOS和以往有什么不同? | |
$ j% E- W D5 M) p9 E$ c1 D前两个表格里的例程都是针对单个外设模块的使用展示,接下来的例程,集成更多中间件,包括文件系统和ROTS。TFM和SBSFU是基于STM32L5的trustzone架构,并结合了L5特有的片上安全模块,实现了安全启动和安全固件升级的功能,解决了现在IOT时代大多数设备的共性问题。
. C: I3 I Q* Q4 B9 A- c相关资料 培训资料 6 y7 w+ p- U y. o" X9 ~- i" D- G
STM32L5快速入门 | | | | | 从内核角度认识TrustZone,包括为了支持TZ功能而在内核里新增的外设,以及原有内核外设为了支持该功能的更新 | | | 光有内核的TrustZone是不够的,STM32L5把“隔离”的概念和措施从内核延伸出来,部署到了全片系统 | | | 通过GPIO toggle例程,体会新的用户编程模型,深入理解Cortex-M33内核和STM32L5外设对TZ的支持和使用 | | | 使用STM32CubeMX在STM32L5上生成TZ应用初始代码及其框架,添加用户应用逻辑,实现前三节课里讲的知识点 | | | 理解L5的供电策略、各种低功耗模式,内置DC/DC SMPS的使用, 以及外设对于低功耗方面的设计考虑,BAM模式介绍 |
' I& }8 c0 _' }2 M c4 a [- l | STM32L5 进阶课程 (敬请期待) | STM32L5 高阶课程 (敬请期待) " {' d6 q+ A9 p' U3 Q% z# _
& a$ v& x, m* d
| 0 ?2 M+ y3 `9 L. Z t
STM32L5的本地化培训材料分为三个level: - level 0 : STM32L5入门 - TZ入门,从内核到L5的基本外设,新的编程模型 - level1 : STM32L5 进阶 - L5其他新增外设 % c! z4 @8 u+ A
- level 2: STM32L5深入 - Eco-system层面的中间件、方案、服务,具体会包括对 PSA, TFM,TEE, REE 的介绍和讲解。
- j: w4 v6 d6 ]. S) j1 ?: N$ E, }( }工程师笔记
" F" u! v$ J& w2 m* E! Q2 g) ]
- D: u/ v, A* i8 s7 z4 [9 q工程师笔记,来自工程师在客户支持过程中遇到的典型和共性问题的解决记录。在STM32中文官网的设计资源板块,本地设计资源栏目里,实战经验页面,是历年所有笔记的汇总。和STM32L5相关的工作笔记,我们会陆续从中挑取出来,引用到这里,方便大家从一个总的入口就可以看到尽肯能多的和STM32L5相关的资料。 + S7 Z0 D% A: B# N$ s; g4 m
常见问答 & B& b, k# w J4 o8 p! o8 H% W" S
STM32L5快速入门 | 【Q1】STM32L5比其他STM32芯片在安全性能上有哪些进一步提高? | P q0 u, s& g- [0 @
| 【A】STM32芯片里首颗集成支持TrustZone安全扩展的Cortex-M33内核,它在硬件上隔离出安全区域和非安全区域。 除此之外STM32L5的HDP功能,还可以在安全世界里进一步提供运行时的隔离 |
3 k, z" `8 |5 e) _ | 【Q2】在STM32L5上开发项目,一定要两个工程吗,这可是和以往的开发经验大不相同呢? |
. j8 `* F6 ~: H& M& T2 d! \ | 【A】如果应用无需trustzone以及它带来的安全特性,可以关闭选项字节里的TZEN(芯片出厂状态TZEN是没有使能的)。这样,它的开发和其他以往STM32芯片的开发没有任何不同 |
5 o& |9 M. h2 z1 H% j4 P5 ~2 z | 【Q3】STM32L5除了低功耗、安全方面的提升,在性能上有进步吗? |
) n) \& R; B6 d! F6 O9 R | 【A】STM32L5采用CM33内核,比CM4内核增加了20%的性能;同时STM32L5采用的新一代ST ART加速器不仅作用于片上Flash,还能作用于外接Flash。 (本质是加了一个Cache) |
# D& C/ g6 a- ^. M! [3 K- ] | 【Q4】OTFDEC模块可以对芯片外部flash上的内容进行加解密吗? |
5 T4 h8 d L3 N4 z. T | 【A】OTFDEC的作用对象是STM32L5通过Oct-SPI接口外接的Flash,而不是所有接口上的外部Flash; 并且对外接O-SPI flash的内容是可以on-the-fly地解密,而加密不能on-the-fly地操作, 加密结果要先放在SRAM里,再由O-SPI flash的驱动来把密文写到外部Flash。 |
% x4 N1 {" ?+ e! P2 O6 e# R |
! l. \- m' K$ c: y( k为了进一步方便大家对STM32L5有个快速的认识,我们也在建立常见问题问答列表,相对前面提到的培训材料、工程师笔记,FAQ更多以“点”的形式来呈现,更加短小精悍。 STM32L5 常见问答 | |
. j* ^3 e8 A* P, }- e2 T. b | 【A】TZEN的设置,从0到1,很容易,使用STM32CubeProgrammer写选项字节就可以操作。 但是TZEN的撤销,从1到0,无法通过选项字节直接回退。需要把STM32L5先升级到RDP1,在从RDP1到0的回退过程中同时TZEN从1到0,才能撤销TZEN。执行前有一些注意事项,详情参见:工程师笔记 | | | | 【Q7】我想使用OTFDEC模块,只有在Trustzone使能后才有这个功能,那么一旦TZEN置位了,我还是要做两个工程的开发吗,一个运行安全工程,一个运行非安全工程? | : R4 \" @5 j/ S. v
| 【A】如果需要用到TrustZone使能后才有的安全特性,而无需TrustZone本身带来隔离功能,可以只开发一个工程,但是一定是运行在安全世界的工程,因为一旦TZEN置位后,芯片复位后一定是从安全世界开始运行的。 在《STM32L5进阶课程》我们会有具体例子的介绍 | |
6 i( a. I) i" u6 I4 C- r. f更多FAQ我们还在收集整理中,将会不断增加到这个列表里,欢迎大家持续关注。
x/ x3 t2 \8 R' h6 X( K2 c7 h- H# v# E6 L) P' X( _8 y
安全固件烧录 % a# p+ s& G0 r5 P0 u4 ?3 k) W
STM32L5是第一个全系列支持SFI服务的芯片系列。SFI是ST提供的一个方案,用于第三方产线对芯片进行烧录,解决的问题是烧录固件的保密性、完整性,以及控制产线的烧录次数。
2 E6 q4 c' l8 _- j, nSFI是一个服务,它不仅仅需要预先固化在芯片里的代码和数据支持,还需要其他环节的配合,包括HSM,Programmer。Programmer可以是装载了STM32CubeProgrammer软件工具的电脑,HSM可以是一张智能卡,详情参见图里的链接。 ; M5 K' ~) A. `5 F: w9 b9 S
- p1 ?( `5 \3 W# G2 E) R" G2 K# m更多本地化方案,包括STM32L5上的TEE、REE,我们会陆续在这里呈现,欢迎大家的持续关注。 5 B5 U( ^4 ]7 [- B j/ n$ @
5 J3 U+ J- K4 @) o4 o6 u
& I5 [" X! k8 X4 q5 e& [ |
0 J# q2 L: n& l( |6 x