5 J( W% T. A7 w. ^3 P7 H ) W+ y$ b# q. d! o P' q2 Q- ^
! p% L0 ?! b" u9 O3 a
& D! C- S. g. H' l3 J+ ]
从使用角度,我们有以下六类设计资源,提供给开发者,做基于STM32L5的安全应用开发。 技术文档、评估板、参考固件例程、配合应用开发的软件工具、中文培训材料、本地方案(ST本地支持团队和中国合作伙伴开发的方案,都会在这里向大家集中展示) ' L. z+ t J! n6 C; B; M2 g/ T
技术文档
|7 Q3 ?8 H: k, W基础技术文档 | | |
) w/ ^; v: d9 p* _ | | |
4 U+ D) a3 k6 w. k4 J3 ^$ Z | | | & W/ f- |$ X# R. u" q
| | |
% b# B1 G/ v9 D: G! y( f0 a! D | | 【STM32L552xx/562xx系列】勘误手册 |
6 C5 @& V3 j' i- W0 U. x | 应用笔记/用户手册 | | 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
3 F1 I) o: Z9 ]+ ]5 R F) N
/ P7 ^4 x9 X# X4 ` | # r* i" l x" ]6 x
基础文档,除了参考手册,数据手册,勘误手册之外,由于STM3L5是第一颗基于CM33内核的STM32,因此对内核的编程手册也是一篇重要的文档。
, q% |, x1 o. C; |0 ]STM32L5延续以往STM32系列的外设基因,同时增加了新的外设模块,进一步扩展目标应用市场,并进一步提高效能和安全性。对这些新外设,我们都有应用文档描述它的使用。
8 u5 c8 w- u+ J7 h. G$ `6 N应用笔记/用户手册 | | Overview secure firmware install (SFI) 《安全固件安装概览》 | 4 {+ A# a( d$ m2 X) V( m
. E0 t8 T) a. A1 E
( O. Z! G; l6 J% j' y- V! q) b( }* g
- ?4 B& R% \& FSTM32L5的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(探索套件)板》 |
8 ~- M4 j: I( M+ _1 Z安全,是STM32L5的重点特性之一,除了TrustZone,ST还提供了安全启动安全升级的参考源码,以及用于产线上安全烧录固件的SFI服务。以下文档,可以让你有一个比较全面的认识。
' H: }0 ^9 c' @& Z4 C+ Y& J. a应用笔记 / 用户手册 | | STM32Cube firmware examples for STM32L5 《STM32CubeL5固件包里的例程介绍》 | | | Getting started with CubeL5 for STM32L5 《基于固件包STM32CubeL5体验STM32L5的入门》 | | Getting started with L5 in STM32CubeIDE 《基于软件工具STM32CubeIDE体验STM32L5的入门》 | 7 `' {6 T- O" y) `( g2 w+ v- ^
| | Getting started with STM32L5 hardware development 《基于STM32L5的硬件开发指南》 |
( ?; J1 l E% w* t- F7 R | | Migrating from STM32L4 and STM32L4+ to STM32L5 《如何从现有设计从STM32L4和STM32L4+移植到STM32L5》 | 方案移植
" ]% m0 @% U$ H3 Z$ q, M9 ] |
* |; [. V' `1 G# j* d9 f8 q) _5 V+ {除了评估板和技术文档,和以往的STM32芯片一样,STM32L5也有它自己的固件包:STM32CubeL5。里面包罗了很多预编译后,直接下载就能运行的例程,在以下文档里我们也有描述。 STM32L5是ST推出的集低功耗和安全特性为一身的芯片,现有基于前代产品的方案,如果要移植到更安全,更节能的STM32L5上,可以参考AN5138的移植文档。 8 V6 H: o) U$ R6 a2 r( ^7 z) }
评估板
G% {- z. h. T: o! \3 M( B+ }$ o- o) ~+ O3 y
| $ u' x. P$ [% f5 [9 _. U
% R; n; }0 S' d/ {; M/ n
| | | | | | | | | | | | | | | | 3个用户LED 1个用户按钮,一个复位按钮 32.768KHz 晶振 | + TFT LCD模块,带触摸功能功耗测量器件(300nA~150mA) Audio CODEC, MEMS数字麦克风,Octo-SPI Flash,BLE模块,加速度计和陀螺仪 | 4个用户LED+ Octo-HyperRAM,SRAM,EEPROM,Tamper按键,Joystick,触摸感应按钮,光敏电阻,纽扣电池 | | | | | ; Q9 u- A. [6 I7 p# y& o) i* l2 g
ST官方有三种L5的评估板。DK板上搭载L562系列,比Nucleo和Eval板上L552系列,多一些和密码学操作有关的硬件:支持对称加解密技术的AES,和支持非对称加解密技术的PKA。
4 o! O$ P+ H2 G+ E并且DK板载的STLINK是第三代产品,下载速度更快,支持更多USB桥接接口,比如I2C、SPI,CAN等。这三块板子对应的用户手册,也在下表中列出。 为了方便大家体验STM32L5,Nucleo评估板已在STM32天猫旗舰店上线。
6 c2 j: s# v" }4 m) W9 g$ y固件例程
2 l, _' ?0 m E8 Q5 ?4 S( n- n$ M | | | 如何先在安全应用中使用一个中断,再在非安全应用中使用同样这个中断 | | | | 如何在DMA的安全通道和非安全通道上执行存储区间的数据传输 | | | | 如何对片上Flash以block为粒度进行安全区域和非安全区域的设置和使用 | | | | | | | 如何配置FMC控制器,访问被安全应用和非安全应用划分了各自区域的板载SRAM | | | | | | | | 如何在安全DMA通道上使用安全的HASH SHA-1计算服务 | | | | 如何从非安全应用中触发请求,去安全应用中在运行模式配置系统时钟 | | | | 如何配置TrustZone-aware的RTC,某些特性在安全状态,某些特性在非安全状态 | | | | | |
$ Y. z( ?; X9 b) s0 x; e0 {; @( w7 [STM32CubeL5软件包里有丰富的例程,这里强调的有三个种类的例程,和以往的Cube软件包里内容有所不同。一类是支持TrustZone的例程:基于TrustZone的软件开发需要新的编程模型,即使就是简单的翻转gpio引脚电平,也通常需要两个项目,一个运行在安全世界,一个运行在安全世界。但是有一点需要大家注意一下,并非必须两个工程,但是运行在安全世界的工程一定是必须的。
; M7 ~' Q& {6 x2 i- q通过这个表格里列出的例程,大家可以体会一下RTC、DMA、Flash的操作,在需要支持TrustZone隔离的应用中,和普通应用开发有什么不同。
z4 P+ w- p0 Y" G* F! r* }* H- H3 X4 }3 `% p
| | 如何使用GTZC单元里的MPCWM和TZIC子模块 | | 如何使用GTZC单元里的MPCBB子模块,并使能SecureFault检测 | | | 如何使用安全的OTFDE在安全区域对数据进行加密,再在非安全区域对其解密,而无需密钥交换 | | 如何对存储在外部Octo-SPI Flash的数据进行解密 | 如何执行存储在外部Octo-SPI Flash上的指令 | | 使用PKA模块执行ECC相关操作(验证公钥、从私钥产生公钥、计算签名) | | & S. }% k) h+ n( D9 h) g6 P2 ]
第二类例程:支持STM32L5新增的硬件模块,比如GTZC,OTFDEC、PKA。其中绿色字体标注的,是新模块在TrustZone使能后的用法。 % @! S/ _5 G9 u E, m6 C& @( ~" w
| | 提供信任根方案,包括安全启动、安全固件升级;还提供了安全服务的例子,它运行在安全世界,和非安全应用隔离开来,但是能被非安全应用在运行时调用。安全服务包括:加解密、安全存储、设备认证等 | | | 提供信任根方案,包括安全启动、安全固件升级;还提供了安全服务的例子,它运行在安全世界,和非安全应用隔离开来,但是能被非安全应用在运行时调用 | | | 如何在TrustZone使能的条件下使用FatFs协议栈 | | | 如何在TrustZone使能的条件下使用FreeRTOS,支持TZ的FreeRTOS和以往有什么不同? | | : f5 O* I k- T& t) ~. L
前两个表格里的例程都是针对单个外设模块的使用展示,接下来的例程,集成更多中间件,包括文件系统和ROTS。TFM和SBSFU是基于STM32L5的trustzone架构,并结合了L5特有的片上安全模块,实现了安全启动和安全固件升级的功能,解决了现在IOT时代大多数设备的共性问题。 % S6 a Q8 j2 C
相关资料 培训资料 4 `% O$ H- o; C+ I
STM32L5快速入门 | | | | | 从内核角度认识TrustZone,包括为了支持TZ功能而在内核里新增的外设,以及原有内核外设为了支持该功能的更新 | | | 光有内核的TrustZone是不够的,STM32L5把“隔离”的概念和措施从内核延伸出来,部署到了全片系统 | | | 通过GPIO toggle例程,体会新的用户编程模型,深入理解Cortex-M33内核和STM32L5外设对TZ的支持和使用 | | | 使用STM32CubeMX在STM32L5上生成TZ应用初始代码及其框架,添加用户应用逻辑,实现前三节课里讲的知识点 | | | 理解L5的供电策略、各种低功耗模式,内置DC/DC SMPS的使用, 以及外设对于低功耗方面的设计考虑,BAM模式介绍 |
$ c5 ^! O9 ~ q( E2 P | STM32L5 进阶课程 (敬请期待) | STM32L5 高阶课程 (敬请期待) 1 O7 H. v/ T: T6 ^, n
! l9 ` L1 M% [* ]/ m; ?/ G | / P$ x) e* F. ?0 D
STM32L5的本地化培训材料分为三个level: - level 0 : STM32L5入门 - TZ入门,从内核到L5的基本外设,新的编程模型 - level1 : STM32L5 进阶 - L5其他新增外设
u' I6 P$ c: G1 j! u/ m# P- level 2: STM32L5深入 - Eco-system层面的中间件、方案、服务,具体会包括对 PSA, TFM,TEE, REE 的介绍和讲解。
0 f2 G9 m- R9 h7 i9 E工程师笔记 . T, e! V O1 s# j5 w
+ O' t9 G( ?' Z
工程师笔记,来自工程师在客户支持过程中遇到的典型和共性问题的解决记录。在STM32中文官网的设计资源板块,本地设计资源栏目里,实战经验页面,是历年所有笔记的汇总。和STM32L5相关的工作笔记,我们会陆续从中挑取出来,引用到这里,方便大家从一个总的入口就可以看到尽肯能多的和STM32L5相关的资料。 ]: `- W( D. v' ]& Q+ k% E
常见问答 % i6 G z9 d) Z. g L: |
STM32L5快速入门 | 【Q1】STM32L5比其他STM32芯片在安全性能上有哪些进一步提高? |
5 ?. ~4 S% o4 _$ L0 l& i: I | 【A】STM32芯片里首颗集成支持TrustZone安全扩展的Cortex-M33内核,它在硬件上隔离出安全区域和非安全区域。 除此之外STM32L5的HDP功能,还可以在安全世界里进一步提供运行时的隔离 | 4 |; e0 x2 [( r
| 【Q2】在STM32L5上开发项目,一定要两个工程吗,这可是和以往的开发经验大不相同呢? | & a$ h) b3 q* v6 s9 ^
| 【A】如果应用无需trustzone以及它带来的安全特性,可以关闭选项字节里的TZEN(芯片出厂状态TZEN是没有使能的)。这样,它的开发和其他以往STM32芯片的开发没有任何不同 |
$ S6 q0 \+ M8 M1 n. M( W | 【Q3】STM32L5除了低功耗、安全方面的提升,在性能上有进步吗? |
1 N- a6 s- i1 U! E | 【A】STM32L5采用CM33内核,比CM4内核增加了20%的性能;同时STM32L5采用的新一代ST ART加速器不仅作用于片上Flash,还能作用于外接Flash。 (本质是加了一个Cache) | 6 @" V, e- Z4 T$ u- q* ?
| 【Q4】OTFDEC模块可以对芯片外部flash上的内容进行加解密吗? |
# k& X& b& i. C" P: q$ W0 r; M | 【A】OTFDEC的作用对象是STM32L5通过Oct-SPI接口外接的Flash,而不是所有接口上的外部Flash; 并且对外接O-SPI flash的内容是可以on-the-fly地解密,而加密不能on-the-fly地操作, 加密结果要先放在SRAM里,再由O-SPI flash的驱动来把密文写到外部Flash。 | . B5 k! f2 f' J8 }5 t
|
: a6 H! ~$ l- ~5 E' S5 t为了进一步方便大家对STM32L5有个快速的认识,我们也在建立常见问题问答列表,相对前面提到的培训材料、工程师笔记,FAQ更多以“点”的形式来呈现,更加短小精悍。 STM32L5 常见问答 | | 8 @% ^- ]$ R6 e# l! O1 o
| 【A】TZEN的设置,从0到1,很容易,使用STM32CubeProgrammer写选项字节就可以操作。 但是TZEN的撤销,从1到0,无法通过选项字节直接回退。需要把STM32L5先升级到RDP1,在从RDP1到0的回退过程中同时TZEN从1到0,才能撤销TZEN。执行前有一些注意事项,详情参见:工程师笔记 | | | | 【Q7】我想使用OTFDEC模块,只有在Trustzone使能后才有这个功能,那么一旦TZEN置位了,我还是要做两个工程的开发吗,一个运行安全工程,一个运行非安全工程? |
e! g4 l8 L4 T' ?" A4 \ | 【A】如果需要用到TrustZone使能后才有的安全特性,而无需TrustZone本身带来隔离功能,可以只开发一个工程,但是一定是运行在安全世界的工程,因为一旦TZEN置位后,芯片复位后一定是从安全世界开始运行的。 在《STM32L5进阶课程》我们会有具体例子的介绍 | | ( i! K. o/ m* x9 ?0 r
更多FAQ我们还在收集整理中,将会不断增加到这个列表里,欢迎大家持续关注。
/ j7 H* o; p& O% b
) X' t7 y8 Q: I) Z5 b安全固件烧录 : o4 a: H! O: ~; s: }/ S& i
STM32L5是第一个全系列支持SFI服务的芯片系列。SFI是ST提供的一个方案,用于第三方产线对芯片进行烧录,解决的问题是烧录固件的保密性、完整性,以及控制产线的烧录次数。 2 _# f8 U. b2 v: Y
SFI是一个服务,它不仅仅需要预先固化在芯片里的代码和数据支持,还需要其他环节的配合,包括HSM,Programmer。Programmer可以是装载了STM32CubeProgrammer软件工具的电脑,HSM可以是一张智能卡,详情参见图里的链接。 $ r; ~2 o5 A* C3 v! _
! W% [: `& @' ]* { N更多本地化方案,包括STM32L5上的TEE、REE,我们会陆续在这里呈现,欢迎大家的持续关注。 4 ~1 Y! E& n9 S
6 G5 L: a! O7 U" E: b
# U4 S0 R. c, d1 b. J |