从使用角度,我们有以下六类设计资源,提供给开发者,做基于STM32L5的安全应用开发。 技术文档、评估板、参考固件例程、配合应用开发的软件工具、中文培训材料、本地方案(ST本地支持团队和中国合作伙伴开发的方案,都会在这里向大家集中展示)
技术文档
基础技术文档 | | |
| | |
| | |
| | |
| | 【STM32L552xx/562xx系列】勘误手册 |
| 应用笔记/用户手册 | | 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》 | |
基础文档,除了参考手册,数据手册,勘误手册之外,由于STM3L5是第一颗基于CM33内核的STM32,因此对内核的编程手册也是一篇重要的文档。
STM32L5延续以往STM32系列的外设基因,同时增加了新的外设模块,进一步扩展目标应用市场,并进一步提高效能和安全性。对这些新外设,我们都有应用文档描述它的使用。
应用笔记/用户手册 | | Overview secure firmware install (SFI) 《安全固件安装概览》 | | | 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(探索套件)板》 |
安全,是STM32L5的重点特性之一,除了TrustZone,ST还提供了安全启动安全升级的参考源码,以及用于产线上安全烧录固件的SFI服务。以下文档,可以让你有一个比较全面的认识。
应用笔记 / 用户手册 | | STM32Cube firmware examples for STM32L5 《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的移植文档。
评估板
| | | | | | | | | | | | | | | | | 3个用户LED 1个用户按钮,一个复位按钮 32.768KHz 晶振 | + TFT LCD模块,带触摸功能功耗测量器件(300nA~150mA) Audio CODEC, MEMS数字麦克风,Octo-SPI Flash,BLE模块,加速度计和陀螺仪 | 4个用户LED+ Octo-HyperRAM,SRAM,EEPROM,Tamper按键,Joystick,触摸感应按钮,光敏电阻,纽扣电池 | | | | |
ST官方有三种L5的评估板。DK板上搭载L562系列,比Nucleo和Eval板上L552系列,多一些和密码学操作有关的硬件:支持对称加解密技术的AES,和支持非对称加解密技术的PKA。
并且DK板载的STLINK是第三代产品,下载速度更快,支持更多USB桥接接口,比如I2C、SPI,CAN等。这三块板子对应的用户手册,也在下表中列出。 为了方便大家体验STM32L5,Nucleo评估板已在STM32天猫旗舰店上线。
固件例程
| | | 如何先在安全应用中使用一个中断,再在非安全应用中使用同样这个中断 | | | | 如何在DMA的安全通道和非安全通道上执行存储区间的数据传输 | | | | 如何对片上Flash以block为粒度进行安全区域和非安全区域的设置和使用 | | | | | | | 如何配置FMC控制器,访问被安全应用和非安全应用划分了各自区域的板载SRAM | | | | | | | | 如何在安全DMA通道上使用安全的HASH SHA-1计算服务 | | | | 如何从非安全应用中触发请求,去安全应用中在运行模式配置系统时钟 | | | | 如何配置TrustZone-aware的RTC,某些特性在安全状态,某些特性在非安全状态 | | | | | |
STM32CubeL5软件包里有丰富的例程,这里强调的有三个种类的例程,和以往的Cube软件包里内容有所不同。一类是支持TrustZone的例程:基于TrustZone的软件开发需要新的编程模型,即使就是简单的翻转gpio引脚电平,也通常需要两个项目,一个运行在安全世界,一个运行在安全世界。但是有一点需要大家注意一下,并非必须两个工程,但是运行在安全世界的工程一定是必须的。
通过这个表格里列出的例程,大家可以体会一下RTC、DMA、Flash的操作,在需要支持TrustZone隔离的应用中,和普通应用开发有什么不同。
| | 如何使用GTZC单元里的MPCWM和TZIC子模块 | | 如何使用GTZC单元里的MPCBB子模块,并使能SecureFault检测 | | | 如何使用安全的OTFDE在安全区域对数据进行加密,再在非安全区域对其解密,而无需密钥交换 | | 如何对存储在外部Octo-SPI Flash的数据进行解密 | 如何执行存储在外部Octo-SPI Flash上的指令 | | 使用PKA模块执行ECC相关操作(验证公钥、从私钥产生公钥、计算签名) | |
第二类例程:支持STM32L5新增的硬件模块,比如GTZC,OTFDEC、PKA。其中绿色字体标注的,是新模块在TrustZone使能后的用法。
| | 提供信任根方案,包括安全启动、安全固件升级;还提供了安全服务的例子,它运行在安全世界,和非安全应用隔离开来,但是能被非安全应用在运行时调用。安全服务包括:加解密、安全存储、设备认证等 | | | 提供信任根方案,包括安全启动、安全固件升级;还提供了安全服务的例子,它运行在安全世界,和非安全应用隔离开来,但是能被非安全应用在运行时调用 | | | 如何在TrustZone使能的条件下使用FatFs协议栈 | | | 如何在TrustZone使能的条件下使用FreeRTOS,支持TZ的FreeRTOS和以往有什么不同? | |
前两个表格里的例程都是针对单个外设模块的使用展示,接下来的例程,集成更多中间件,包括文件系统和ROTS。TFM和SBSFU是基于STM32L5的trustzone架构,并结合了L5特有的片上安全模块,实现了安全启动和安全固件升级的功能,解决了现在IOT时代大多数设备的共性问题。
相关资料 培训资料
STM32L5快速入门 | | | | | 从内核角度认识TrustZone,包括为了支持TZ功能而在内核里新增的外设,以及原有内核外设为了支持该功能的更新 | | | 光有内核的TrustZone是不够的,STM32L5把“隔离”的概念和措施从内核延伸出来,部署到了全片系统 | | | 通过GPIO toggle例程,体会新的用户编程模型,深入理解Cortex-M33内核和STM32L5外设对TZ的支持和使用 | | | 使用STM32CubeMX在STM32L5上生成TZ应用初始代码及其框架,添加用户应用逻辑,实现前三节课里讲的知识点 | | | 理解L5的供电策略、各种低功耗模式,内置DC/DC SMPS的使用, 以及外设对于低功耗方面的设计考虑,BAM模式介绍 |
| STM32L5 进阶课程 (敬请期待) | |
STM32L5的本地化培训材料分为三个level: - level 0 : STM32L5入门 - TZ入门,从内核到L5的基本外设,新的编程模型 - level1 : 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 常见问答 | |
| 【A】TZEN的设置,从0到1,很容易,使用STM32CubeProgrammer写选项字节就可以操作。 但是TZEN的撤销,从1到0,无法通过选项字节直接回退。需要把STM32L5先升级到RDP1,在从RDP1到0的回退过程中同时TZEN从1到0,才能撤销TZEN。执行前有一些注意事项,详情参见:工程师笔记 | | | | 【Q7】我想使用OTFDEC模块,只有在Trustzone使能后才有这个功能,那么一旦TZEN置位了,我还是要做两个工程的开发吗,一个运行安全工程,一个运行非安全工程? |
| 【A】如果需要用到TrustZone使能后才有的安全特性,而无需TrustZone本身带来隔离功能,可以只开发一个工程,但是一定是运行在安全世界的工程,因为一旦TZEN置位后,芯片复位后一定是从安全世界开始运行的。 在《STM32L5进阶课程》我们会有具体例子的介绍 | |
更多FAQ我们还在收集整理中,将会不断增加到这个列表里,欢迎大家持续关注。
安全固件烧录
STM32L5是第一个全系列支持SFI服务的芯片系列。SFI是ST提供的一个方案,用于第三方产线对芯片进行烧录,解决的问题是烧录固件的保密性、完整性,以及控制产线的烧录次数。
SFI是一个服务,它不仅仅需要预先固化在芯片里的代码和数据支持,还需要其他环节的配合,包括HSM,Programmer。Programmer可以是装载了STM32CubeProgrammer软件工具的电脑,HSM可以是一张智能卡,详情参见图里的链接。
更多本地化方案,包括STM32L5上的TEE、REE,我们会陆续在这里呈现,欢迎大家的持续关注。
|