STM32L5 生态系统总汇
STM32L5入门课程(一) 从Cortex-M33内核认识TrustZone
STM32L5入门课程(三) TrustZone环境下新的用户编程模型
STM32L5入门课程(四) STM32CubeMX:支撑TZ应用
STM32L5 进阶课程系列(八) SRAM、Flash和启动机制的最新安全特性
STM32L5 进阶课程系列(九) Cache,为STM32L5提速助力
STM32L5 进阶课程系列(十) DMA,兼顾传输灵活性和TZ架构下的安全性
STM32L5 进阶课程系列(十一) OTFDEC,无缝扩大代码的安全存储空间
STM32L5 进阶课程系列(十二) PKA, 非对称加解密 加速引擎
从使用角度,我们有以下六类设计资源,提供给开发者,做基于STM32L5的安全应用开发。
技术文档、评估板、参考固件例程、配合应用开发的软件工具、中文培训材料、本地方案(ST本地支持团队和中国合作伙伴开发的方案,都会在这里向大家集中展示)
基础技术文档 | ||
STM32L5参考手册 | ||
Cortex-M33内核编程手册 | ||
【STM32L562xx系列】数据手册 | ||
【STM32L552xx系列】数据手册 | ||
【STM32L552xx/562xx系列】勘误手册 | ||
应用笔记/用户手册 | ||
Octo-SPI interface on STM32 《STM32的Octo-SPI接口外设》 | STM32L5新外设和新模块 | |
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 |
基础文档,除了参考手册,数据手册,勘误手册之外,由于STM3L5是STM32中第一颗基于CM33内核的产品,因此对内核的编程手册也是一篇重要的文档。
STM32L5延续以往STM32系列的外设基因,同时增加了新的外设模块,进一步扩展目标应用市场,并进一步提高效能和安全性。对这些新外设,我们都有应用文档描述它的使用。
应用笔记/用户手册 | ||
Overview secure firmware install (SFI) 《安全固件安装概览》 |
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板介绍》 | STM32L5的三种不同定位和功能的评估板 | |
Evaluation board with STM32L552ZE MCU 《STM32L552的Evaluation(全功能评估)板》 | ||
Discovery kit with STM32L562QE MCU 《STM32L562的Discovery(探索套件)板》 |
安全,是STM32L5的重点特性之一,除了TrustZone,ST还提供了安全启动安全升级的参考源码,以及用于产线上安全烧录固件的SFI服务。以下文档,可以让你有一个比较全面的认识。
应用笔记 / 用户手册 | ||
STM32Cube firmware examples for STM32L5 《STM32CubeL5固件包里的例程介绍》 | 搭配STM32CubeL5固件包 | |
Getting started with CubeL5 for STM32L5 《基于固件包STM32CubeL5体验STM32L5的入门》 | ||
Getting started with L5 in STM32CubeIDE 《基于软件工具STM32CubeIDE体验STM32L5的入门》 | ||
Getting started with STM32L5 hardware development 《基于STM32L5的硬件开发指南》 | ||
Migrating from STM32L4 and STM32L4+ to STM32L5 《如何从现有设计从STM32L4和STM32L4+移植到STM32L5》 | 方案移植 |
除了评估板和技术文档,和以往的STM32芯片一样,STM32L5也有它自己的固件包:STM32CubeL5。里面包罗了很多预编译后,直接下载就能运行的例程,在以下文档里我们也有描述。 STM32L5是ST推出的集低功耗和安全特性为一身的芯片,现有基于前代产品的方案,如果要移植到更安全,更节能的STM32L5上,可以参考AN5138的移植文档。
芯片型号 | STM32L552ZET6QU | STM32L562QEI6QU | STM32L552ZET6QU |
板上调试器 | STLINKV2 | STLINKV3 | STLINKV2 |
片上硬件密码学模块 | SHA, TRNG | SHA, TRNG AES, PKA | SHA, TRNG |
板上器件 | 3个用户LED 1个用户按钮,一个复位按钮 32.768KHz 晶振 | + TFT LCD模块,带触摸功能功耗测量器件(300nA~150mA) Audio CODEC, MEMS数字麦克风,Octo-SPI Flash,BLE模块,加速度计和陀螺仪 | 4个用户LED+ Octo-HyperRAM,SRAM,EEPROM,Tamper按键,Joystick,触摸感应按钮,光敏电阻,纽扣电池 |
用户手册 | UM2581 | UM2617 | UM1597 |
ST官方有三种L5的评估板。DK板上搭载L562系列,比Nucleo和Eval板上L552系列,多一些和密码学操作有关的硬件:支持对称加解密技术的AES,和支持非对称加解密技术的PKA。
并且DK板载的STLINK是第三代产品,下载速度更快,支持更多USB桥接接口,比如I2C、SPI,CAN等。这三块板子对应的用户手册,也在下表中列出。
为了方便大家体验STM32L5,Nucleo评估板已在STM32天猫旗舰店上线。
CORTEX | InterruptSwitch | 如何先在安全应用中使用一个中断,再在非安全应用中使用同样这个中断 | Nucleo |
DMA | MemToMem | 如何在DMA的安全通道和非安全通道上执行存储区间的数据传输 | Nucleo |
FLASH | BlockBased | 如何对片上Flash以block为粒度进行安全区域和非安全区域的设置和使用 | EVAL |
EraseProgram | 如何执行片上Flash的擦除和编程操作 | EVAL | |
FMC | SRAM | 如何配置FMC控制器,访问被安全应用和非安全应用划分了各自区域的板载SRAM | EVAL |
GPIO | IOToggle | 如何翻转安全和非安全区域的I/O引脚 | DK, Nucleo |
HASH | SHA1_DMA | 如何在安全DMA通道上使用安全的HASH SHA-1计算服务 | Nucleo |
RCC | ClockConfig | 如何从非安全应用中触发请求,去安全应用中在运行模式配置系统时钟 | DK, Nucleo |
RTC | RTC | 如何配置TrustZone-aware的RTC,某些特性在安全状态,某些特性在非安全状态 | Nucleo |
UART | Trace | 如何使用UART定义一个安全的trace通信路径 | DK |
STM32CubeL5软件包里有丰富的例程,这里强调的有三个种类的例程,和以往的Cube软件包里内容有所不同。一类是支持TrustZone的例程:基于TrustZone的软件开发需要新的编程模型,即使就是简单的翻转gpio引脚电平,也通常需要两个项目,一个运行在安全世界,一个运行在安全世界。但是有一点需要大家注意一下,并非必须两个工程,但是运行在安全世界的工程一定是必须的。
通过这个表格里列出的例程,大家可以体会一下RTC、DMA、Flash的操作,在需要支持TrustZone隔离的应用中,和普通应用开发有什么不同。
GTZC | 如何使用GTZC单元里的MPCWM和TZIC子模块 | EVAL |
如何使用GTZC单元里的MPCBB子模块,并使能SecureFault检测 | DK, Nucleo | |
OTFDEC | 如何使用安全的OTFDE在安全区域对数据进行加密,再在非安全区域对其解密,而无需密钥交换 | DK |
如何对存储在外部Octo-SPI Flash的数据进行解密 | ||
如何执行存储在外部Octo-SPI Flash上的指令 | ||
PKA | 使用PKA模块执行ECC相关操作(验证公钥、从私钥产生公钥、计算签名) | DK |
使用PKA模块执行模幂运算 |
第二类例程:支持STM32L5新增的硬件模块,比如GTZC,OTFDEC、PKA。其中绿色字体标注的,是新模块在TrustZone使能后的用法。
TFM | 提供信任根方案,包括安全启动、安全固件升级;还提供了安全服务的例子,它运行在安全世界,和非安全应用隔离开来,但是能被非安全应用在运行时调用。安全服务包括:加解密、安全存储、设备认证等 | DK |
SBSFU | 提供信任根方案,包括安全启动、安全固件升级;还提供了安全服务的例子,它运行在安全世界,和非安全应用隔离开来,但是能被非安全应用在运行时调用 | Nucleo |
FatFs | 如何在TrustZone使能的条件下使用FatFs协议栈 | DK, Nucleo |
FreeRTOS | 如何在TrustZone使能的条件下使用FreeRTOS,支持TZ的FreeRTOS和以往有什么不同? | DK, EVAL, Nucleo |
前两个表格里的例程都是针对单个外设模块的使用展示,接下来的例程,集成更多中间件,包括文件系统和ROTS。TFM和SBSFU是基于STM32L5的trustzone架构,并结合了L5特有的片上安全模块,实现了安全启动和安全固件升级的功能,解决了现在IOT时代大多数设备的共性问题。
培训资料
STM32L5快速入门 | ||
课程章节名称 | 章节介绍 | 时长 |
从内核角度认识TrustZone,包括为了支持TZ功能而在内核里新增的外设,以及原有内核外设为了支持该功能的更新 | 40 分钟 | |
02. STM32L5的系统新架构 | 光有内核的TrustZone是不够的,STM32L5把“隔离”的概念和措施从内核延伸出来,部署到了全片系统 | 30 分钟 |
通过GPIO toggle例程,体会新的用户编程模型,深入理解Cortex-M33内核和STM32L5外设对TZ的支持和使用 | 60 分钟 | |
使用STM32CubeMX在STM32L5上生成TZ应用初始代码及其框架,添加用户应用逻辑,实现前三节课里讲的知识点 | 30 分钟 | |
05. STM32L5的低功耗特性 | 理解L5的供电策略、各种低功耗模式,内置DC/DC SMPS的使用, 以及外设对于低功耗方面的设计考虑,BAM模式介绍 | |
STM32L5 进阶课程 (敬请期待) | ||
STM32L5 高阶课程 (敬请期待) |
STM32L5的本地化培训材料分为三个level:
- level 0 : STM32L5入门 - TZ入门,从内核到L5的基本外设,新的编程模型
- level 1 : STM32L5 进阶 - L5其他新增外设
- level 2: STM32L5深入 - Eco-system层面的中间件、方案、服务,具体会包括对 PSA, TFM, TEE, REE 的介绍和讲解。
工程师笔记
工程师笔记,来自工程师在客户支持过程中遇到的典型和共性问题的解决记录。在STM32中文官网的设计资源板块,本地设计资源栏目里,实战经验页面,是历年所有笔记的汇总。和STM32L5相关的工作笔记,我们会陆续从中挑取出来,引用到这里,方便大家从一个总的入口就可以看到尽肯能多的和STM32L5相关的资料。
常见问答
STM32L5快速入门 | |
【Q1】STM32L5比其他STM32芯片在安全性能上有哪些进一步提高? | |
【A】STM32芯片里首颗集成支持TrustZone安全扩展的Cortex-M33内核,它在硬件上隔离出安全区域和非安全区域。 除此之外STM32L5的HDP功能,还可以在安全世界里进一步提供运行时的隔离 | |
【Q2】在STM32L5上开发项目,一定要两个工程吗,这可是和以往的开发经验大不相同呢? | |
【A】如果应用无需trustzone以及它带来的安全特性,可以关闭选项字节里的TZEN(芯片出厂状态TZEN是没有使能的)。这样,它的开发和其他以往STM32芯片的开发没有任何不同 | |
【Q3】STM32L5除了低功耗、安全方面的提升,在性能上有进步吗? | |
【A】STM32L5采用CM33内核,比CM4内核增加了20%的性能;同时STM32L5采用的新一代ST ART加速器不仅作用于片上Flash,还能作用于外接Flash。 (本质是加了一个Cache) | |
【Q4】OTFDEC模块可以对芯片外部flash上的内容进行加解密吗? | |
【A】OTFDEC的作用对象是STM32L5通过Oct-SPI接口外接的Flash,而不是所有接口上的外部Flash; 并且对外接O-SPI flash的内容是可以on-the-fly地解密,而加密不能on-the-fly地操作, 加密结果要先放在SRAM里,再由O-SPI flash的驱动来把密文写到外部Flash。 |
为了进一步方便大家对STM32L5有个快速的认识,我们也在建立常见问题问答列表,相对前面提到的培训材料、工程师笔记,FAQ更多以“点”的形式来呈现,更加短小精悍。
STM32L5 常见问答 | |
【Q5】STM32L5的TZEN功能如何关闭? | |
【A】TZEN的设置,从0到1,很容易,使用STM32CubeProgrammer写选项字节就可以操作。 但是TZEN的撤销,从1到0,无法通过选项字节直接回退。需要把STM32L5先升级到RDP1,在从RDP1到0的回退过程中同时TZEN从1到0,才能撤销TZEN。执行前有一些注意事项,详情参见:工程师笔记 | |
【Q6】哪里可以拿到L5的培训材料 | 培训 |
【A】STM32中文官网:https://www.stmcu.com.cn/ecosystem/app/information-security ;AI电堂:https://c.51diantang.com/columndetail?id=e30ad69473af4364ad433b8c30a3a404 | |
【Q7】我想使用OTFDEC模块,只有在Trustzone使能后才有这个功能,那么一旦TZEN置位了,我还是要做两个工程的开发吗,一个运行安全工程,一个运行非安全工程? | |
【A】如果需要用到TrustZone使能后才有的安全特性,而无需TrustZone本身带来隔离功能,可以只开发一个工程,但是一定是运行在安全世界的工程,因为一旦TZEN置位后,芯片复位后一定是从安全世界开始运行的。 在《STM32L5进阶课程》我们会有具体例子的介绍 | |
更多FAQ还在收集整理中… |
更多FAQ我们还在收集整理中,将会不断增加到这个列表里,欢迎大家持续关注。
STM32L5是STM32第一个全系列支持SFI服务的芯片系列。SFI是ST提供的一个方案,用于第三方产线对芯片进行烧录,解决的问题是烧录固件的保密性、完整性,以及控制产线的烧录次数。
SFI是一个服务,它不仅仅需要预先固化在芯片里的代码和数据支持,还需要其他环节的配合,包括HSM,Programmer。Programmer可以是装载了STM32CubeProgrammer软件工具的电脑,HSM可以是一张智能卡,详情参见图里的链接。
更多本地化方案,包括STM32L5上的TEE、REE,我们会陆续在这里呈现,欢迎大家的持续关注。