6 ^9 h+ |2 y) l% X! N( J
/ W8 l6 h" J2 c0 P$ }% y6 m
' _ S6 L" k( [
2 K) A. x) u' n$ ?/ D+ Q7 C$ w
从使用角度,我们有以下六类设计资源,提供给开发者,做基于STM32L5的安全应用开发。 技术文档、评估板、参考固件例程、配合应用开发的软件工具、中文培训材料、本地方案(ST本地支持团队和中国合作伙伴开发的方案,都会在这里向大家集中展示)
6 l& R& |$ Y# Q; v: W4 E技术文档
# I2 n% r+ |* y/ `基础技术文档 | | | 4 c+ ~0 n5 O# |9 A5 W' Q# K# [* r
| | | & `: z3 s# H* Q1 t* v
| | | 7 q( G+ F+ z, ~9 ~
| | |
% \% }1 w0 j) P% k; { | | 【STM32L552xx/562xx系列】勘误手册 | " y" _7 @6 _6 ^# P+ o1 N9 U
| 应用笔记/用户手册 | | 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
" D) X8 u$ Q% ^
* R" R2 D% S# q1 H* W. U& f |
) M; L! P b0 ^: y! ]" ^基础文档,除了参考手册,数据手册,勘误手册之外,由于STM3L5是第一颗基于CM33内核的STM32,因此对内核的编程手册也是一篇重要的文档。
. b& ~1 b$ @. ?+ ^+ x4 Z1 b* T# t; C( OSTM32L5延续以往STM32系列的外设基因,同时增加了新的外设模块,进一步扩展目标应用市场,并进一步提高效能和安全性。对这些新外设,我们都有应用文档描述它的使用。 , P6 `- f/ G( R3 \3 ?% f5 W
应用笔记/用户手册 | | Overview secure firmware install (SFI) 《安全固件安装概览》 | 9 r0 v- A; z/ Y9 K
& ^7 A1 E4 y3 p; Q7 O; @' H+ Z0 b- f! n1 I- m* t9 Z
9 X- i8 G+ s+ v, U* t3 h. U
& @5 {3 p1 z5 d& x2 G2 ^5 tSTM32L5的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(探索套件)板》 | ! C* m3 {- x$ _/ K% j m9 O% u
安全,是STM32L5的重点特性之一,除了TrustZone,ST还提供了安全启动安全升级的参考源码,以及用于产线上安全烧录固件的SFI服务。以下文档,可以让你有一个比较全面的认识。
6 x' T# c* t3 o8 ^) y' p8 F+ `应用笔记 / 用户手册 | | STM32Cube firmware examples for STM32L5 《STM32CubeL5固件包里的例程介绍》 | | | Getting started with CubeL5 for STM32L5 《基于固件包STM32CubeL5体验STM32L5的入门》 | | Getting started with L5 in STM32CubeIDE 《基于软件工具STM32CubeIDE体验STM32L5的入门》 |
! w9 U. X0 M# W | | Getting started with STM32L5 hardware development 《基于STM32L5的硬件开发指南》 | ; q& P v' @' _1 ~, e% u
| | Migrating from STM32L4 and STM32L4+ to STM32L5 《如何从现有设计从STM32L4和STM32L4+移植到STM32L5》 | 方案移植 w5 \* G- H5 R2 ]% K: R0 l
|
" s+ O2 i- R8 R7 \除了评估板和技术文档,和以往的STM32芯片一样,STM32L5也有它自己的固件包:STM32CubeL5。里面包罗了很多预编译后,直接下载就能运行的例程,在以下文档里我们也有描述。 STM32L5是ST推出的集低功耗和安全特性为一身的芯片,现有基于前代产品的方案,如果要移植到更安全,更节能的STM32L5上,可以参考AN5138的移植文档。 8 r; X _7 U' f$ H2 ]8 s
评估板 & c/ u1 H9 f3 Z
! c9 P4 Q. s/ I# e: e% h |
2 d! U" T0 h7 L7 A' W% `7 e- q8 U1 a
|
$ p' w' |# d# p( B7 @: M# c- b | ; l" O5 Q" z6 H, a6 z( q( ?$ }
| | | | | | | | | | | | | | 3个用户LED 1个用户按钮,一个复位按钮 32.768KHz 晶振 | + TFT LCD模块,带触摸功能功耗测量器件(300nA~150mA) Audio CODEC, MEMS数字麦克风,Octo-SPI Flash,BLE模块,加速度计和陀螺仪 | 4个用户LED+ Octo-HyperRAM,SRAM,EEPROM,Tamper按键,Joystick,触摸感应按钮,光敏电阻,纽扣电池 | | | | | + M1 I5 r) M6 I4 w7 Q
ST官方有三种L5的评估板。DK板上搭载L562系列,比Nucleo和Eval板上L552系列,多一些和密码学操作有关的硬件:支持对称加解密技术的AES,和支持非对称加解密技术的PKA。 # N, U0 c* S9 Y+ G
并且DK板载的STLINK是第三代产品,下载速度更快,支持更多USB桥接接口,比如I2C、SPI,CAN等。这三块板子对应的用户手册,也在下表中列出。 为了方便大家体验STM32L5,Nucleo评估板已在STM32天猫旗舰店上线。 6 h3 o6 D4 A& s+ {( l
固件例程 $ T1 S# [- z$ N0 _% c
| | | 如何先在安全应用中使用一个中断,再在非安全应用中使用同样这个中断 | | | | 如何在DMA的安全通道和非安全通道上执行存储区间的数据传输 | | | | 如何对片上Flash以block为粒度进行安全区域和非安全区域的设置和使用 | | | | | | | 如何配置FMC控制器,访问被安全应用和非安全应用划分了各自区域的板载SRAM | | | | | | | | 如何在安全DMA通道上使用安全的HASH SHA-1计算服务 | | | | 如何从非安全应用中触发请求,去安全应用中在运行模式配置系统时钟 | | | | 如何配置TrustZone-aware的RTC,某些特性在安全状态,某些特性在非安全状态 | | | | | |
) {" H7 _5 o, s+ I8 iSTM32CubeL5软件包里有丰富的例程,这里强调的有三个种类的例程,和以往的Cube软件包里内容有所不同。一类是支持TrustZone的例程:基于TrustZone的软件开发需要新的编程模型,即使就是简单的翻转gpio引脚电平,也通常需要两个项目,一个运行在安全世界,一个运行在安全世界。但是有一点需要大家注意一下,并非必须两个工程,但是运行在安全世界的工程一定是必须的。 ! J2 ]$ ^' Y* f% I" J$ z# \
通过这个表格里列出的例程,大家可以体会一下RTC、DMA、Flash的操作,在需要支持TrustZone隔离的应用中,和普通应用开发有什么不同。
, ]" }3 c( a! h! c& Q/ B9 d3 ~9 R) T9 t/ C
| | 如何使用GTZC单元里的MPCWM和TZIC子模块 | | 如何使用GTZC单元里的MPCBB子模块,并使能SecureFault检测 | | | 如何使用安全的OTFDE在安全区域对数据进行加密,再在非安全区域对其解密,而无需密钥交换 | | 如何对存储在外部Octo-SPI Flash的数据进行解密 | 如何执行存储在外部Octo-SPI Flash上的指令 | | 使用PKA模块执行ECC相关操作(验证公钥、从私钥产生公钥、计算签名) | |
2 J2 m0 S8 U7 h6 ^" Q7 I8 I第二类例程:支持STM32L5新增的硬件模块,比如GTZC,OTFDEC、PKA。其中绿色字体标注的,是新模块在TrustZone使能后的用法。 # R% s3 ~0 ^' H3 _
| | 提供信任根方案,包括安全启动、安全固件升级;还提供了安全服务的例子,它运行在安全世界,和非安全应用隔离开来,但是能被非安全应用在运行时调用。安全服务包括:加解密、安全存储、设备认证等 | | | 提供信任根方案,包括安全启动、安全固件升级;还提供了安全服务的例子,它运行在安全世界,和非安全应用隔离开来,但是能被非安全应用在运行时调用 | | | 如何在TrustZone使能的条件下使用FatFs协议栈 | | | 如何在TrustZone使能的条件下使用FreeRTOS,支持TZ的FreeRTOS和以往有什么不同? | | 8 _' }4 x* Z L8 a, o
前两个表格里的例程都是针对单个外设模块的使用展示,接下来的例程,集成更多中间件,包括文件系统和ROTS。TFM和SBSFU是基于STM32L5的trustzone架构,并结合了L5特有的片上安全模块,实现了安全启动和安全固件升级的功能,解决了现在IOT时代大多数设备的共性问题。
) r" E* T3 S3 I/ W& M$ I( P$ N相关资料 培训资料
4 w: R* d8 O% p; g" s) I9 b& y! KSTM32L5快速入门 | | | | | 从内核角度认识TrustZone,包括为了支持TZ功能而在内核里新增的外设,以及原有内核外设为了支持该功能的更新 | | | 光有内核的TrustZone是不够的,STM32L5把“隔离”的概念和措施从内核延伸出来,部署到了全片系统 | | | 通过GPIO toggle例程,体会新的用户编程模型,深入理解Cortex-M33内核和STM32L5外设对TZ的支持和使用 | | | 使用STM32CubeMX在STM32L5上生成TZ应用初始代码及其框架,添加用户应用逻辑,实现前三节课里讲的知识点 | | | 理解L5的供电策略、各种低功耗模式,内置DC/DC SMPS的使用, 以及外设对于低功耗方面的设计考虑,BAM模式介绍 |
, G: `2 i& p4 n$ k9 Z( ]- `* Z* \ | STM32L5 进阶课程 (敬请期待) | STM32L5 高阶课程 (敬请期待) 7 E8 D8 i0 l! H3 I' M
% h: f0 ~* `. Q |
' @1 u( i0 v1 b* @' ]9 x0 ]STM32L5的本地化培训材料分为三个level: - level 0 : STM32L5入门 - TZ入门,从内核到L5的基本外设,新的编程模型 - level1 : STM32L5 进阶 - L5其他新增外设
& S8 O- I+ Q4 Z( q- level 2: STM32L5深入 - Eco-system层面的中间件、方案、服务,具体会包括对 PSA, TFM,TEE, REE 的介绍和讲解。
8 z3 F9 t0 ~/ P7 Z1 y" h+ n, V$ g工程师笔记
' M7 m+ [0 e" H# W& q, z8 T- h4 i+ r; D# e
工程师笔记,来自工程师在客户支持过程中遇到的典型和共性问题的解决记录。在STM32中文官网的设计资源板块,本地设计资源栏目里,实战经验页面,是历年所有笔记的汇总。和STM32L5相关的工作笔记,我们会陆续从中挑取出来,引用到这里,方便大家从一个总的入口就可以看到尽肯能多的和STM32L5相关的资料。 " Z; o3 z" \+ P6 m* g7 n6 v3 R9 A% }
常见问答 ; p S( `8 z7 k* E! D% K6 q- `8 {
STM32L5快速入门 | 【Q1】STM32L5比其他STM32芯片在安全性能上有哪些进一步提高? | 1 f6 f0 ]6 G5 D5 a
| 【A】STM32芯片里首颗集成支持TrustZone安全扩展的Cortex-M33内核,它在硬件上隔离出安全区域和非安全区域。 除此之外STM32L5的HDP功能,还可以在安全世界里进一步提供运行时的隔离 | + g& [' ^, ?7 T; ]7 O
| 【Q2】在STM32L5上开发项目,一定要两个工程吗,这可是和以往的开发经验大不相同呢? | 0 t0 A' O* g& P' Y5 S7 g
| 【A】如果应用无需trustzone以及它带来的安全特性,可以关闭选项字节里的TZEN(芯片出厂状态TZEN是没有使能的)。这样,它的开发和其他以往STM32芯片的开发没有任何不同 | 4 I: c9 X( H, v5 O
| 【Q3】STM32L5除了低功耗、安全方面的提升,在性能上有进步吗? | * [5 s# D$ X3 c9 X6 ^% a3 g+ X
| 【A】STM32L5采用CM33内核,比CM4内核增加了20%的性能;同时STM32L5采用的新一代ST ART加速器不仅作用于片上Flash,还能作用于外接Flash。 (本质是加了一个Cache) | 9 W5 ?& Q4 X/ D6 f9 M
| 【Q4】OTFDEC模块可以对芯片外部flash上的内容进行加解密吗? | # ?% M* A* b0 z1 x. L
| 【A】OTFDEC的作用对象是STM32L5通过Oct-SPI接口外接的Flash,而不是所有接口上的外部Flash; 并且对外接O-SPI flash的内容是可以on-the-fly地解密,而加密不能on-the-fly地操作, 加密结果要先放在SRAM里,再由O-SPI flash的驱动来把密文写到外部Flash。 |
4 ]5 v1 @# Z) W4 J. D# y |
0 t( R8 [ K0 p4 \& o) K# Q- \1 b k8 G为了进一步方便大家对STM32L5有个快速的认识,我们也在建立常见问题问答列表,相对前面提到的培训材料、工程师笔记,FAQ更多以“点”的形式来呈现,更加短小精悍。 STM32L5 常见问答 | |
) d" ]3 l8 e3 z5 p | 【A】TZEN的设置,从0到1,很容易,使用STM32CubeProgrammer写选项字节就可以操作。 但是TZEN的撤销,从1到0,无法通过选项字节直接回退。需要把STM32L5先升级到RDP1,在从RDP1到0的回退过程中同时TZEN从1到0,才能撤销TZEN。执行前有一些注意事项,详情参见:工程师笔记 | | | | 【Q7】我想使用OTFDEC模块,只有在Trustzone使能后才有这个功能,那么一旦TZEN置位了,我还是要做两个工程的开发吗,一个运行安全工程,一个运行非安全工程? | - j& J% a3 M& ?* a5 j" Q+ C& Q) L
| 【A】如果需要用到TrustZone使能后才有的安全特性,而无需TrustZone本身带来隔离功能,可以只开发一个工程,但是一定是运行在安全世界的工程,因为一旦TZEN置位后,芯片复位后一定是从安全世界开始运行的。 在《STM32L5进阶课程》我们会有具体例子的介绍 | |
6 K" m" Z4 f& M更多FAQ我们还在收集整理中,将会不断增加到这个列表里,欢迎大家持续关注。
$ M) ?/ @' Q9 b9 g0 X6 g; X5 l4 Q' ?+ r) d& S6 M) c
安全固件烧录 , c. `# j9 ~) e$ Q; x! ?9 J
STM32L5是第一个全系列支持SFI服务的芯片系列。SFI是ST提供的一个方案,用于第三方产线对芯片进行烧录,解决的问题是烧录固件的保密性、完整性,以及控制产线的烧录次数。 ! Q" \6 R5 ^4 G& T4 H
SFI是一个服务,它不仅仅需要预先固化在芯片里的代码和数据支持,还需要其他环节的配合,包括HSM,Programmer。Programmer可以是装载了STM32CubeProgrammer软件工具的电脑,HSM可以是一张智能卡,详情参见图里的链接。
* |. A. v- d w* L* D6 i3 v1 [0 q( F% q: N% Z: s) ]% F8 W
更多本地化方案,包括STM32L5上的TEE、REE,我们会陆续在这里呈现,欢迎大家的持续关注。 ; a3 I1 F: f8 [' } C; c7 A# T
% o* g8 b) X1 c
* \% a- `* I7 j3 M( H2 ?& v
|