STM32H5

01、问题背景

客户在使用 STM32H565 开发新项目的时候遇到一个问题,PB14 在开漏时无法上拉到 3V3,且其输出的 PWM 频率比其它 GPIO 低。且多片芯片的表现类似。

检查客户的原理图并未发现明显的问题。

02、问题复现

测试配置:硬件测试平台 NUCLEO-STM32H563ZI。

软件工具版本: 

  • STM32CubeMX Version: 6.9.2 

  • STM32Cubeide Version: 1.13.2

2.1. 测试 1:PB14 开漏输出异常 

2.1.1. 测试配置 
1.png
▲ 图1. PB14 配置

2.1.2. 测试结果

测试结果见图 2: 

2.png

▲ 图2. PB14 输出波形

从测试结果看 PB14 无法上拉到 3V3,高电平只有 1.704V,似乎有个下拉电阻分了压。

查看芯片的规格书 DS14258 Rev 1 Table 14. STM32H562xx and STM32H563xx pin/ball definition,关于 PB14 其 IO 定义如下图:

3.png
▲ 图3. PB14 定义 

其中_c 表示该 pin 脚具有 USB type-c PD 功能。

查找 RM0481 Rev1,查看 10.11.8 PWR USB Type-C power delivery register (PWR_UCPDR)寄存器描述如下:

4.png

▲ 图4. UCPD_DBDIS 描述 

根据 UCPD_DBDIS 的描述,当芯片退出复位时,对于 CC1,CC2 pin 默认下拉。这 也就解释了客户遇到的,开漏模式时无法上拉到 3.3V 的现象。

修改测试代码,增加如下代码:

/* USER CODE BEGIN 2 */ 
SET_BIT(PWR->UCPDR, PWR_UCPDR_UCPD_DBDIS); 
/* USER CODE END 2 */
再次测试 PB14 输出,波形如下 
5.png
▲ 图5. PB14 输出的波形

此时的波形输出符合预期,测试正常。 

2.2. 测试 2:PB14 的 PWM 输出频率低于其他的 GPIO

使用 TIM12 在 PB14/PB15 作为 PWM 输出。对比管脚为 PB15。

2.2.1. GPIO 配置 1 

6.png

▲ 图6. PB14/PB15 配置 1 

7.png

▲ 图7. TIM12 配置 1

2.2.2. 测试结果 1 

8.png

▲ 图8. PB14/PB15 输出波形图 1 

此时 PB14 的 GPIO 输出为 0。修改 TIM12 的配置降低 PWM 频率再次测试。

9.png

▲ 图9. TM12 配置 2 

2.2.3. 测试结果 2 

10.png

▲ 图10. PB14/PB15 输出波形图 2 

此时的 PB14 是有输出的但波形幅值变小,似乎是 GPIO 设置的速度的问题造成的,修改 GPIO 速度 Maximum output speed 为 medium,再次测试。波形图如下。

11.png

▲ 图11. PB14_medium PB15_low 输出波形图 

综合上述实验 1,2 可以看出 PB14 的输出 PWM 的最大频率确实是低于其它 GPIO 的。

03、小结

由于 PB13,PB14 都连接到 USB PD,对于 PB14,PB13 的最大 GPIO 输出速度也是有 限制的,GPIO 输出速度只支持 low 和 medium, 最大 medium 速度为 10Mhz。关于这 些描述会添加在下一版本的 DS14258 中。

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 20

2024年,AI圈陆续传出王炸级新闻。先是OpenAI推新款大模型Sora,该模型只需输入文字,便可生成惟妙惟肖高清视频,再次让世界感受到了人工智能的强大。2月19日,国务院国资委召开“AI赋能 产业焕新”中央企业人工智能专题推进会。会议强调,要推动中央企业在人工智能领域实现更好发展、发挥更大作用。

随着AI商业化以及配套政策的落地,2024年将是AI产业爆发的元年。然而,目前AI行业建设仍面临诸多挑战。随着AI技术的发展,大模型、大数据、大算力日益成为AIGC应用的核心。大模型和数据集是AIGC发展的软件基础,而算力是最为重要的基础设施。AI服务器以并行计算为主,核心处理器主要依靠GPU,但除了GPU性能外,通信因素也会成为制约超算的短板,只要有一条链路出现网络阻塞,就会产生数据延迟。因此,AI服务器对于底层数据传输速率和延时的要求非常苛刻,需要高速率的光模块与之匹配。而光模块作为实现高速、稳定数据传输的关键器件,也随之开启新一轮的产品迭代。其中,800G光模块(传输速率达到800Gbps)作为数据中心以太网中的必要光电转换设备,可完美匹配AI服务器激增的算力和数据交互,在数据中心、云计算、网络通信等领域中被广泛应用。

STM32H5 助力高速光模块应用

2023年,ST推出STM32H5系列,该系列作为新标杆服务于工业应用市场。用于高性能设计的STM32H5系列基于强大的Arm® Cortex®-M33内核 ,运行频率高达250MHz,从最基本的安全构建模块到ST维护的安全认证服务,提供可扩展的安全性,满足所有应用需求。

STM32H5系列基于ST先进的40nm工艺,实现更优化的性价比平衡,提供丰富的内存,外设和封装选择,将给用户带来更强劲的性能和安全性,提供更多设计自由,加快产品上市。

作为新一代高性能MCU系列,STM32H5延续STM32现有的生态系统,有助于开发者轻松实现各类开发应用,还新增了一些特有的新功能,例如I3C通信接口,Secure manager,器件生命周期管理,适合各种智能化应用,尤其是高速通信应用。

引入I3C接口

ST在STM32H5中引入了一个新的通信接口I3C,它是对I2C通信接口的升级,同样基于两根总线SDA和SCL,但性能更高,且可以兼容I2C。

I3C可以在同一根总线上支持更多节点,而不会因为要支持中断或是休眠模式而增加额外的逻辑信号。下图是I3C通信的典型连接方式,支持多种设备类型,当前主设备,辅助主设备,I3C从设备,I2C从设备, I3C设备和I2C设备同时工作。

1.png

更紧凑的封装

随着AI算力不断提升,数据量呈海量增长,传输带宽不断提高,光模块需要具备更高的传输速率和更小的尺寸以适应不同的使用场景。其封装方式也在不断优化,更小封装和更低功耗可以带来更高的端口密度,使得在同样的功率下可以驱动更多的光模块。STM32H5基于ST优化的40nm工艺,采用超小封装-WLCSP80(3.5✖3.27mm), 2M flash,很好满足了高速光模块对于小尺寸的要求。

2.png

更安全的架构

光模块配置和交换机级别的安全是网络架构中至关重要的一环,需要确保只有授权用户才可以访问和配置光模块和交换机,这就要求系统具备强大的身份验证机制。

为减轻客户安全应用的开发成本,ST帮助客户通过安全认证,缩短产品上市时间,推出了交钥匙的安全解决方案,即STM32H5 Secure Manager安全管理器。

Secure Manager提供完整的安全启动与安全升级功能以及安全服务,可以支持多方软件代码IP保护,支持多种配置,并且符合PSA API标准。另外,用户也可以根据需要进行扩展,加入更多的安全模块。

Secure Manager由ST长期维护和支持,使用二进制文件交付,即使客户的产品需要进一步的安全认证,也不需要进行复杂的代码开发。

随着AI应用不断深入,对光模块的性能要求也越来越高。AI系统希望光模块具有更高的速率、更小尺寸和更高的安全性。而作为光模块中的核心芯片,STM32H5将凭借强劲的性能,强大的安全性,依托成熟的STM32生态,助力打造创新的光模块设备,满足AI产业的发展需求。

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 33
STM32H5系列最近上新,推出STM32H523和STM32H533两款新品,它们是首款具有256 KB或512 KB双存储区闪存(取决于型号)和272 KB RAM的STM32H5器件。之前已经上市的旗舰STM32H5系列配备的闪存容量高达1024 KB或2048 KB。因此,这款256/512KB闪存新品特别适合对成本更敏感、不需要额外内存但仍需要128 KB以上闪存(如STM32H503所配备的)的应用场景。ST还将继续拓展STM32H5产品组合,帮助客户找到最具成本效益的产品配置。

STM32H523/533两款新品包括两个I3C接口、一个带PD的USB全速控制器和一个SDMMC接口;STM32H533还支持ST- iRoT;可提供多种封装形式:32/48/68-pin QFN,25/39/80-pin WLCSP,48/64/100/144/176-pin LQFP,100/144/169/176-pin UFBGA,选择自由度很高。

1.png

▲ 图示:STM32H5 产品系列

此外,相应的开发板 NUCLEO-H533RE也将推出,以帮助开发人员评估芯片性能并进行产品原型开发。

2.png

▲ 图示:NUCLEO-H533RE开发板
高性能STM32H5:实现优化成本和提升性能的平衡
作为STM32F4的升级版,STM32H5采用强大的Cortex-M33内核,主频为250 MHz,CoreMark跑分高达1023。它内置2 MB双存储区闪存和640 KB RAM,包含CORDIC和FMAC加速器。STM32H5是首款内置硬件ST iROT的MCU产品,符合SESIP3和PSA 3级认证,完美实现优化成本和提升性能的平衡。

3.png

STM32H5系列可简化更注重安全性的工业应用设计,适用的应用场景包括:智能家居,如空调系统、冰箱、报警系统;工厂自动化,如PLC、电机控制、工业泵;智能城市的通信网关、灯光控制、能量转换;以及键盘、跟踪装置、医疗配件等消费类应用。
构建灵活且具有前瞻性的架构
STM32H5是首款包含I3C(改进型内部集成电路)接口的STM32器件,总线速度大大提升。随着嵌入式系统处理传感器数据越来越多,这一点越来越重要。I3C频率为12.5MHz,速度约是I2C的12倍。这项新技术还支持动态地址,使MCU能同时与更多设备通话,从而减少引脚占用。STM32H5还集成了CAN-FD、HDMI-CEC和USB-C电源传输等许多常用接口。

4.png

STM32H5包括两个12位ADC和DAC,满足需要快速数据采集或多个接口的应用需求;还集成了很多计时器,包括两个用于电机控制应用的16位高级计时器。STM32H5的双存储区Flash无需关闭系统即可实现OTA,这在工业应用中是必不可少的。总的来说,STM32H5整个体系结构在灵活性和前瞻性方面达到了理想的平衡。

与STM32其他MCU系列一样,该系列产品同样兼具高可靠性和高效率,可在125°C条件下工作,以满足工业应用的需求。此外,ST还为部分STM32H5器件配备了灵活的电源模式开关模式电源选项(SMPS),可实现更高能效,停止模式下(启用所有I/O)仅消耗46µA。这意味着STM32H5可以使用更便宜的封装形式,在降本增效方面给予用户更多支持。

安全功能可扩展

5.png

STM32系列对嵌入式系统的安全功能开发非常重视。STM32Trust作为STM32全系列产品的安全框架,可为开发者提供12项安全功能。STM32H5产品系列符合SESIP 3级认证标准,能够有效保护系统免受物理和远程攻击;还增加了四个关键的安全功能,这也是STM32H5的安全功能亮点:

■ STM32H5内置了硬件信任根ST iROT,采用两阶段启动加载信任根(iRoT和uRoT)。ST iROT是不可修改的,一旦系统通过ST iRoT进行完整性校验,它就会跳转uRoT,让开发人员能够定义自己的安全策略。硬件信任根ST iROT的引入,可为开发者节省iROT的开发成本和时间,从而加速嵌入式产品的应用开发;

■ STM32H5两阶段启动加载信任根的实现得益于安全存储区的存在,可防止覆盖ST iROT中的敏感数据。用户可根据自身安全需求及开发成本自行选择是否使用iRot和uRot;

■ STM32H5还引入了产品安全生命周期管理,基于认证的调试等新功能,这些新功能可帮助开发人员更好地在现场管理调试设备,让安全功能更加实用;

■ 由ST开发和维护的全新可信执行环境解决方案——安全管理器,可简化开发人员的工作流程,且不受开发人员专业能力的限制,极大地降低了信息安全功能的开发门槛。安全管理器是一款可下载的软件包,包含二进制文件、库文件、代码实现和文档等。该款软件包还包含配置选项,指导开发人员激活某些功能,如STM32H5的不可变可信根(iRoT)。安全管理器作为整体解决方案,可自动设置iRoT,且具备安全存储等功能,因此可大幅简化认证流程。

强大的生态系统

ST已经更新了STM32CubeIDE和STM32CubeMX,确保开发人员能够快速为STM32H5新器件创建应用程序。同样,STM32CubeProgramer等工具将确保开发者能够在MCU上快速写入和调试他们的应用程序。ST还提供新的扩展软件,如X-CUBE-AZURE-H5和X-CUBEAWS-H5,使云连接更加简单。总之,ST希望通过优化硬件创新和软件可访问性,为工程师的开发提供更多便利。

6.png

STM32H5现有四款开发板卡,包括NUCLEO-H533RE、NUCLEO-H503RB、NUCLEO-H563ZI、STM32H573I-DK,开发者可基于这些板卡,快速开始产品的评估和原型设计。

7.png

STM32H573I-DK是首款支持安全管理器(Secure Manager)的探索套件,可实现系统级安全功能。配合X-CUBE-AZURE-H5和X-CUBE-AWS-H5软件扩展包,帮助开发者分别连接到微软和亚马逊的云解决方案。这两个软件包还附带应用程序示例,如发送传感器数据或实现OTA更新等。

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 20

本文是上文 《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。倘若你还没有阅读此文,那么建议你先阅读下,然后再回过头来阅读本文。 

之前我们已经讲过了如何通过 DA 认证来回退芯片产品状态,或者重新打开调试口,这样开发人员在芯片为 Closed 状态下时仍可以调试芯片。在这个 DA 认证过程中,有使用到两个东西:证书和私钥,它与之前已经预配置到芯片内部的 obk 文件是对应的关系。也就是说, 如果你已经预配置了芯片, 但对应的私钥文件或者证书丢失或忘记保存了, 那么此芯片多半是无法再还原了, 除非你找到对应的私钥和证书。 

《STM32H5 DA证书链之初体验》全文。

来源:STM32单片机

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 18

一、前言

有客户反馈,在使用 STM32H5 读取温度传感器校准值地址时,会进入 HardFault,而在其他系列芯片中读取这个参数时并没有此现象。在 NUCLEO-H563ZI 开发板上去复现此问题,发现只有开启 ICACHE 后才会复现,初步验证说明进入 HardFault 与 ICACHE 相关,如果直接关闭ICACHE 虽然可以解决进入 HardFault 的问题,但势必会影响代码执行的效率。所以,我们希望能找到一种更好的方式去处理此问题。

二、问题分析

经 Datasheet 查询,两个温度传感器校准值 TS_CAL1 和 TS_CAL2 的地址分别为 0x08FF F814-0x08FF F815 和 0x08FF F818-0x08FF F819。

1.png

根据下表,可以知道 TS_CAL1 和 TS_CAL2 是属于 Read-only 区域的,而 Read-only 区域是通过 AHB system bus 访问的。

2.png

3.png

根据参考手册的描述,所有的 AHB memory 默认都是 cacheable 的,对于无法实现缓存的区域(OTP、RO、data area),必须使用 MPU 来禁用本地缓存。

4.png

也就是说,不仅是 TS_CAL1 和 TS_CAL2,其实整个 OTP、RO(Table 39)、data area区域的访问都无法经过 Cache,需要使用 MPU 将其配置为 none-cacheable 属性。

既然知道了问题所在,那剩下的问题就是确定 OPT、RO、data area 各个区域的地址,data area 是由用户选项字节配置的可进行 100k 次擦除的区域,用于存储用户掉电不丢失的数据,需要根据实际的配置去设置 MPU 区域。剩下的就是 OPT 和 RO 区域,在 STM32H563 中,分别有 2K byte。

5.png

OTP 的地址为[0x08FF F000-0x08FF F7FF]和 RO 的地址为[0x08FF F800-0x08FF FFFF],两个地址其实是连续的。

6.png

三、解决方法

经上述分析后,我们只需要把[0x08FF F000-0x08FF FFFF]这段地址区域设置为 none cacheable,通过 CubeMX 进行配置。

7.png

void MPU_Config(void)
{ 
    MPU_Region_InitTypeDef MPU_InitStruct = {0}; 
    MPU_Attributes_InitTypeDef MPU_AttributesInit = {0};
    
    /* Disables the MPU */ 
    HAL_MPU_Disable();
    
    /** Initializes and configures the Region and the memory to be protected 
    */     
    MPU_InitStruct.Enable = MPU_REGION_ENABLE; 
    MPU_InitStruct.Number = MPU_REGION_NUMBER0; 
    MPU_InitStruct.BaseAddress = 0x08FFF000; 
    MPU_InitStruct.LimitAddress = 0x08FFFFFF; 
    MPU_InitStruct.AttributesIndex = MPU_ATTRIBUTES_NUMBER0; 
    MPU_InitStruct.AccessPermission = MPU_REGION_ALL_RO; 
    MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE; 
    MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
    
    HAL_MPU_ConfigRegion(&MPU_InitStruct); 
    MPU_AttributesInit.Number = MPU_REGION_NUMBER0; 
    MPU_AttributesInit.Attributes = INNER_OUTER (MPU_DEVICE_nGnRnE | MPU_NOT_CACHEABLE 
    | MPU_TRANSIENT | MPU_NO_ALLOCATE);
    
    HAL_MPU_ConfigMemoryAttributes(&MPU_AttributesInit); 
    /* Enables the MPU */
    HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);
}

经 MPU 配置 OTP 和 RO 的内存访问属性后,就可以正常去读取温度传感器校准值了,同时属于这两个区域的其他值,如 UID、Flash Size、Package 等信息也能正常读取了。

uint16_t TS_CAL1_Val,TS_CAL2_Val; 

uint16_t *TS_CAL1 = (uint16_t *)0x08fff814; 
uint16_t *TS_CAL2 = (uint16_t *)0x08fff818; 
TS_CAL1_Val = *TS_CAL1; 
TS_CAL2_Val = *TS_CAL2;

四、总结

温度传感器校准值及 UID 等一些信息在 H5 中属于只读区域,而这个区域在 AHB 访问时,默认内存属性为 cacheable,需要通过 MPU 把这些区域设置为 none-cacheable,才能正常访问。每个系列的芯片架构都或多或少有差别,当按以往经验操作不能实现功能时,不妨对照相应芯片的数据手册、参考手册、应用笔记、甚至勘误手册,也许就能发现问题所在。

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 26

一、前言

STM32H5 是 ST 2023 年新推出的产品系列,与以往 MCU 不同的是, STM32H5 推出新的 product state 功能特性以替代以往的 RDP 功能。

1.png

如上图所示,product state 有如下状态 : 

  • Open(0xED) : 完全 open 状态,相当于以前的 RDP0。 

  • Provisioning(0x17) : 此状态是专门用来做预配置的。 

  • iROT-Provisioned(0x2E) : 用于 STiROT 或 OEMiROT。 

  • TZ-Closed(0xC6): Secure 区域关闭, 相当于 RDP0.5(仅在 TZEN=0xB4 时有效)。 

  • Closed(0x72): S 和 NS 区域均受到保护,这点有些类似于 RDP1,此时调试口没法对其直接访问,但可通 过 DA 打开调试口或回退,这一点有点类似于 STM32U5 上的可带密码回退的 RDP2。 

  • Locked(0x5C): 完全关闭芯片的外部访问,相当于以往 STM32 芯片的 RDP2 保护等级。

整体如下图所示:

2.png

其状态切换如下图所示 :

3.png

如上图所示,product state 从 open->provisioning->iROT-Provisioned->TZ-Closed->Closed 如此从左到右是可切换的,但是,要从右到左如此回退,则必须要经过 DA[Debug Authentication]过程。如上图所示,经过 DA 后,要么完全回退到 Open 状态,要么部分回退到 TZ-Closed 状态。

所谓的 DA,就是通过向芯片提供证书(STM32H503 是提供密码),通过芯片的身份认证后,允许向 芯片发起 product state 状态回退,或者重新打开调试口请求(仅当 TZEN=0xB4 时)。

由于新的 product state 和 DA 的引入,所有 STM32H5 开发者都必须掌握 DA 的用法。因此,本 文档针对 STM32H5 初学者,演示当 TZEN=0xB4 时, 使用证书来完成 DA 过程。

二、准备工作

开发板 : NUCLEO-H563ZI 4.jpg

软件包 : STM32Cube_FW_H5_V1.1.0

工具:

  • STM32CubeProgrammer v2.14.0 

  • Tera Term 串口终端显示 

  • Trust Package Creator(安装 STM32CubeProgrammer 时一并安装, 注意勾选)
IDE: STM32CubeIDE v1.13.0 

STM32CubeH5 包我们需要将其放到一个没有空格没有中文的路径下,在本动手实验中,我们 默认将其放在路径 C:\workspace\目录下。

三、生成 OBK 并测试

在 STM32CubeH5 包下的路径 STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA,在此目录下,已经包含了自带的默认 obk,密钥以及证书。其实 我们可以直接使用这些 obk 以及对应的证书和密钥,这里我们将重新生成一套,并测试它是否 OK。

3.1. 重新生成密钥对打开 TPC(TrustedPackageCreator)工具 

5.png
在 xml file 处,导入 DA_Config.xml 文件 :
C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO-H563ZI/ROT_Provisioning/DA/Config/DA_Config.xml
如上图,在导入 DA_Config.xml 文件后,点击 Regenerate 按键后,将在 Keys 目录下重新生成公钥私钥对 :

6.png

这组密钥对就是接下来需要使用到的密钥对了。

其中 :

Key_1_root.pem 为私钥

Key_1_root_pub.pem 为公钥

3.2. 生成 DA OBK 文件

接下我们将创建 DA 的 obk 文件 :

7.png

如上图所示,继续在 TPC 工具中,在 Permission Mask 下,激活允许的操作许可,被激活的就是 DA 认证通过后,允许的操作. 然后在 Output File 处选择输出文件。我们使用默认即可。然后点击 Generate OBKey 按键,则在 Binary 目录下生成 DA_Config.obk 文件 :

8.png

这个 obk 文件就是我们后续将来做 DA 预配置(provisioning)的 obk 文件了。

3.3. 生成证书

接下来我们继续用 TPC 工具生成证书。

9.png

如上图所示,在 Microcontroller 处选择 STM32H5-2M,在 Root Private Key 处我们选择之前生成的私钥文件 : C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO-H563ZI/ROT_Provisioning/DA/Keys/key_1_root.pem

而在Root Public Key处则选择之前生成的公钥文件:C:/workspace/STM32Cube_FW_H5 _V1.1.0/Projects/NUCLEO-H563ZI/ROT_Provisioning/DA/Keys/key_1_root_pub.pem
然后在 Permission Mask 处选择此证书所允许的操作许可。我们将 Full 回退 to TZ,以及Secure/Non Secure 下的 Level 1~3 的 Debug 权限许可全部打开。
在 Certificate file 处选择输出文件,我们选择C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEOH563ZI/ROT_Provisioning/DA/Certificates/cert_root.b64
即在 Certificates 目录下生成 cert_root.b64 文件,最后再点击右下角的 Generate Certificate 按键,最终在 Certificates 生成了 cert_root.b64 文件。

10.png

如上图所示,在 Certificates 目录下将同时生成两个文件 : cert_root.b64, cert_root.cert。

其中 cert_root.b64 就是我们需要的证书文件了,它就是根证书。它将在后续步骤中进行 DA 时将会用到。而另一个生成的文件 cert_root.cert,我们并未用到它。

3.4. DA 预配置 (provisioning)

接下来我们将做 DA 预配置,在此之前我们确保使能 Trust Zone 功能,即 TZEN=0xB4。

11.png

如上图所示,使用 STM32CubeProgrammer 连接芯片,并将 TrustZone 打开。

然后将 Product State 切换到 Provisioning 状态 :

12.png
接下来正式做 DA 预配置…
13.png
如上图所示,在 STM32CubeProgrammer 左边选择盾牌图标,然后在上方选项卡处选择PROV,接着在 OBKey file path 处选择之前生成的 DA_Config.obk 文件 :
C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA\Binary\ DA_Config.obk
最后点击 Start Provisioning 按键…
14.png
成功时,将弹出消息提示成功。此时表示,DA obk 文件已经预配置到芯片内部并且已经成功了。然后断开 STM32CubeProgrammer 的连接…
15.png

如上图所示,点击 Disconnect 按键,确保 STM32CubeProgrammer 已经断开连接。接下来我们将尝试用证书做 DA 回退… 

3.5. DA 回退

16.png

如上图所示,在确保 STM32CubeProgrammer 断开连接的情况下,左边还是选择盾牌图标,上方选项卡处选择 DA,然后在界面中点击 Discover 按键… 

17.png

如上图所示,在接下来的界面中,在 Key File Path 处选择之前生成的私钥文件 key_1_root.pem:C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA\Keys\key_1_root.pe

如上图所示,在接下来的界面中,在 Key File Path 处选择之前生成的私钥文件 key_1_root.pem:C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA\Keys\key_1_root.pe

在 Certificate File Path 处选择之前生成的证书 cert_root.b64:C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA\Certificates\cert_root.b6

然后点击右边的 Continue 按键… 

18.png

如上图所示,在下方新显示出来的界面内容中,在左边选择 Full Regression, 即你想要的操作,然后点击右边的 Execte 按键…

19.png

如上图所示,弹出界面显示 DA 成功。

这也就表示,之前生成的私钥文件 key_1_root.pem + 证书文件 cert_root.b64 正是匹配之前生成的 obk 文件 DA_Config.obk 的。

其中 DA_Config.obk 文件和固件 hex 文件是要给工厂烧录芯片用的。而私钥文件 key_1_root.pem + 证书文件 cert_root.b64 则是需要保留,将来工程师需要它们来做 DA 回退和 DA 调试用的。

这里需要注意地是,如果上述 DA 回退未成功,则表示证书+私钥与之前预配置的 DA obk 不匹配,需要重新执行 3.1~3.5 节。直到 DA 回退成功为止,否则切记不要进入到下一步骤,不然很可能会由于证书不对无法回退导致芯片废掉(除非用户代码可以执行回退)。

四、运行一个程序并 DA 调试

4.1. 在 Open 状态下运行一个示例程序

使用 STM32CubeProgrammer,确保 product state =Open, TZEN=0xB4:

20.png

并确保:SECWM1_PSTRT=0x0 SECWM1_PEND=0x7F, SECWM2_PSTRT=0x7F SECWM2_PEND=0x0:

21.png


然后使用 STM32CubeIDE 编译 STM32CubeH5 包下的示例工程:STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\Examples\GPIO\GPIO_IOToggle_TrustZone\STM32CubeIDE 分别先后编译 S 和 NS 工程并烧录对应程序,并复位运行。正常情况下,可以看到板子上 LD5(橙色), LD6(绿色)两盏灯在来回闪动。即表示测试程序运行 OK。

4.2. DA 预配置

接下来我们参照之前的 3.4 节,将 product state 切换到 provisioning 状态, 然后进行 DA 预配置。 
22.png

如上图,切换到 provisioning 状态。 

23.png

如上图所示,导入之前生成的 DA_Config.obk 文件,然后点击 Start Provisioning 按键,进行预配置。

24.png

弹出上面显示模式,则表示预配置已经成功。

4.3. 修改状态到 Closed 状态 

25.png

如上图所示,接下来将 product state 修改为 Closed 状态。此时 ST-Link 连接会自动断开,表示芯片内部调试口已经自己关闭了。

此时查看板子,LD5、LD6 两灯依旧来回闪烁,说明程序在 Closed 状态下运行正常。只不过此时调试口是连接不上了。

4.4. DA 调试 

4.4.1. 使用 STM32CubeIDE 调试 NS 工程

在 STM32H563 处于 Closed 状态下时,SWD 口默认是关闭的,此时是无法调试代码的,若想调试代码,必须得通过 DA 认证重新打开调试端口,好在这一功能已经集成在 STM32CubeIDE 中了。接下来我们将使用 STM32CubeIDE 调试 NS 工程,在 NS 工程的 Debug Configuration 中, 在 Debugger 选项卡下 : 

26.png
如上图所示,在 Reset behaviour 的 Type 下,选择 software system reset, 然后在 Debug Authentication 下勾上 Enable,在 Key path 后面选择之前生成的私钥文件 : C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA\Keys\key_1_root.pem,在 Certification path 后面选择之前生成的证书 : C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA\Certificates\cert_root.b64, 然后 Permission 后边选择 Debug Non Secure L1,然后点击 Debug 按键… 
27.png

如上所示,程序在运行在 NS 工程的 main 函数开始处则停下来了,接下来你可以选择单步调试...

4.4.2. 使用 STM32CubeIDE 调试 S 工程

S 工程的调试配置有些许差异。

28.png

如上,Reset behaviour Type 为 None,同样在 Debug Authentication 下设置之前生成的私钥和证书,Permission 变为 Debug Secure L1。

29.png

然后拖下来将 Verify flash download 之前的勾去掉(如上图所示)。

30.png

如上图所示,在 Startup 选项卡下,在 Load Image and Symbols 列表中选择当前工程的 Image,然后点击右边的 Edit…按键,然后在弹出的对话框中将 Download 前的勾去掉。点击 OK、Apply、并 Closed、关闭当前窗口。接下来在 S 工程中的源文件中的 xxx_it.c 源文件中的 systick 中断入口处设置一个断点, 如下图所示:

31.png
32.png
33.png
如上图所示,程序运行在断点处停下来了,接下来你可以单步调试 Secure 工程了。这是一种完全没有破坏现场的调试方法,适合当出现问题后,直接去查看出现问题的代码行。当然在调试 Non Secure 工程时,你也可以按此方法来配置。也可以达到不破坏现场的效果。

4.4.3. 在其它 IDE 中进行 DA 调试

由于其它 IDE 当前最新版本还并未将 DA 过程集成到 IDE 中,因此,需要利用 STM32CubeProgrammer 进行 DA 认证通过之后,才可以用 IDE 进行调试。

接下来我们将使用 STM32CubeProgrammer 通过 DA 来重新打开调试口。

34.png
在断开连接的情况下,在 STM32CubeProgrammer 中,选择 DA 选项卡,然后点击 Discover… 
35.png
与 3.5 节类似,在上图中,选择之前生成好的私钥文件 C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA\Keys\key_1_root.pem,以及证书文件 C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA\Certificates\cert_root.b64,然后点击 Continue 按键… 
36.png
如上图所示,在下面新显示的内容中选择 Non-Secure Intrusive Debug(Level 1),然后点击 Execte 按键… 

37.png

如上图所示,表示 DA 已经成功,调试口已经重新打开。然后断开 STM32CubeProgrammer 的连接。

接下来就可以选择你所使用的 IDE(如 Keil、IAR)调试 NS 工程了,如下图使用 IAR 调试 :

38.png

如上图所示,选择 Attach to Running Target 可直接 attach 上去查看当前运行的代码行。当然在之前 DA 步骤中,你也可以选择调试 S 工程 …

39.png

如上图所示, 在下面新显示的内容中选择 Secure Intrusive Debug(Level 1), 然后点击 Execte 按键…

40.png

如上图所示,表示 DA 已经成功,调试口已经重新打开。然后断开 STM32CubeProgrammer 的连接,接下来就可以选择你所使用的 IDE(如 Keil、 IAR)调试 NS 工程了。

五、还原

还原的过程参考 3.5 节,步骤完全一致。最终还原成功后,全片 Flash 内容已经擦除。最后,将 TZEN 直接修改为 0xC3。

41.png
至此,芯片完全恢复成原始状态。另外,DA 回退过后,之前预配置的内容也自动清空了, 因此,后续还需要重新进行预配置 (provisioning)。

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 59

01、前言

本文是接着之前文档《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。

由于新的 product state 和 DA 的引入, 所有 STM32H5 开发者都必须掌握DA 的用法。STM32H563 在 TrustZone 打开和不打开两种情况下, DA 所采用的策略是不相同的。当 TZ 打开时, 使用证书进行 DA, 而当 TZ 不打开时, 则使用密码来 DA。

因此, 本文档针对 STM32H5 初学者, 演示当 TZEN=0xC3(TrustZone 不打开)时, 使用密码来完成 DA 回退。当 TrustZone 未激活时, 不支持 DA 调试,只支持 DA 回退。

此外, 由于 STM32H503 不带 TrustZone, 它的 DA 过程与 H563 不开启 TZ 的情况下类似。除此之外, 与 H563 不同的是, H503 内部没有 OBK 区域, 因此, 预配置过程会将密码对应的 obk 文件写入芯片内部的 OTP 中。

02、准备工作

开发板: NUCLEO-H563ZI

1.jpg

软件包: STM32Cube_FW_H5_V1.1.0

工具:

• STM32CubeProgrammer v2.14.0

• Tera Term 串口终端显示

• Trust Package Creator (安装 STM32CubeProgrammer 时一并安装, 注意勾选)

IDE: STM32CubeIDE v1.13.0

STM32CubeH5 包我们需要将其放到一个没有空格没有中文的路径下, 在本动手实验中, 我们默认将其放在路径 C:\workspace\目录下。

03、生成OBK并测试

在 STM32CubeH5 包下的路径 STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\ROT_Provisioning\DA, 在此目录下, 已经包含了默认自带的 obk密钥。其实我们可以直接使用这些 obk 以及对应的密钥, 但在这个文档我们将重新生成一套,并测试它是否 OK。

3.1. 生成 DA OBK 文件和密码文件

打开 TPC 工具。

2.jpg

左边选择 H5, 上方选项卡选择 OBKey, 然后在 xml file 处选择C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEOH563ZI/ROT_Provisioning/DA/Config/DA_ConfigWithPassword.xml, 然后在 Password 处输入你想要设置的密码, 这里我们直接使用默认密码即可。然后在 output file 处设置输出文件, 我们也使用默认即可。最后点击 Generate OBkey 按键, 在 Binary 目录下生成对应的 obk 文件和bin 文件 :

3.jpg

如上图所示, DA_ConfigWithPassword.obk 是用来做预配置(provisioning)用的, 而password.bin 则是在 DA 过程中需要的密码文件了。

3.2. 预配置 DA(provisioning)

接下来我们将做预配置 DA, 在此之前我们确保 TZEN=0xC3。

4.jpg

然后将 product state 配置为 provisioning 状态 :

5.jpg

然后使用 STM32CubeProgrammer 进行预配置 :

6.jpg

如上图所示, 在 OBKey file path 处输入C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\DA_ConfigWithPassword.obk 文件, 再点击 Start Provisioning 按键…

7.jpg

结果将弹出对话框提示预配置成功。

3.3. DA 回退

接下来我们直接使用密码进行 DA 回退…

8.jpg

如上图, 在 STM32CubeProgrammer 断开的情况下, 点击 Discover…

9.jpg

如上图所示, 在 Password File Path 处输入密码文件 :C:\workspace\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEOH563ZI\ROT_Provisioning\DA\Binary\password.bin

然后点击 Full Regression 按键…

10.jpg

如上图所示, 成功时会弹出提示对话框。

这表示, 之前 DA 预配置的 obk 文件与当前输入的密码文件是匹配的。

04、烧录程序再次测试

接下来, 我们正式烧录一个程序并测试。在 product state=open 状态下, 且 TZEN=0xC3 时, 此时烧录任何一个不带 TrustZone 的程序,并确保其在 OPEN 状态下能正常运行,然后将 product state 切换到 provisioning 状态进行 DA 预配置, 重复 3.2 节步骤。

在预配置成功之后, 然后将 product state 切换到 CLOSED(0x72)状态. 此时 STLink 是无法再连接的, 然后检查程序是能依然正常运行。这就是最终想要达到的效果。在此状态下, 可以通过 DA 进行回退。

05、还原

还原的过程参考 3.3 节, 步骤完全一致。最终还原成功后, 全片 Flash 内容已经擦除。

至此, 芯片完全恢复成原始状态。

来源:STM32单片机

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 58

在工业4.0与智能制造的大背景下,工业物联网发展迅猛,越来越多的设备具备了连接能力,大量数据在物联网与互联网之间传递,这使得信息安全成为嵌入式联网设备越来越需要关注的话题。信息安全涉及的知识和技术可能非常广泛而复杂,在嵌入式系统中实现安全性往往成为开发者的一个负担。有没有方法帮助开发者减轻这样的负担?这是ST试图通过STM32Trust来回答的问题,STM32Trust是一项专注于提高设备安全性以及为非专家开发者提供安全专业知识而带来的所有软件和硬件解决方案的计划。

开发人员可能需要让产品的安全设计能够满足安全认证的要求,与此同时也希望更快地实现设备的信息保护,帮助工程师意味着我们要让ST的工具以及解决方案更易于使用。为此ST采取的举措之一就是在2023年初宣布的Secure Manager安全管理器解决方案,九月份Secure Manager安全管理器已经正式发布了第一个版本,STM32H5便是Secure Manager所支持的第一款STM32 MCU。让我们来快速回顾一下什么是安全管理器,它能如何帮助到开发者在他的产品中快速实施安全保护。

STM32 TEE可信执行环境解决方案Secure Manager安全管理器

Secure Manager是ST率先推出的以二进制形式提供的TEE可信执行环境(Trusted Execution Environment)解决方案,也是能够在系统级别达到SESIP和PSA 3级安全认证目标的(先进)解决方案。由于该方案提供的是二进制文件而非源代码,可以省去大量的开发和集成时间,大大加快产品的认证过程。Secure Manager采用可下载软件包的形式提供,其中包含二进制文件、库、代码实现和文档等。

目前Secure Manager已经发布了支持STM32H5的第一个正式版本,欢迎访问网址https://www.st.com/en/embedded-software/stm32trustee-sm.html 了解更多有关STM32 TRUSTEE Secure Manager的详细信息,也可以从该网页下载X-CUBE-SEC-M-H5软件包。

最易获取的STM32安全解决方案

以前,对于安全保护方案,ST提供的是STM32的硬件特性以及以源代码形式交付的软件(例如获得了PSA和SESIP Level3认证的STM32U5 TF-M方案),这意味着开发人员必须自己完成一些客制化和适配集成的工作,如果产品有认证需求,可能还需要再次对代码进行验证,因为很多时候,原有的认证只有在代码保持不变的情况下才继续有效。而以二进制文件形式提供的Secure Manager安全管理器恰恰解决了这个问题。此外,Secure Manager安全管理器提供了一个交钥匙解决方案,可以自动启用并设置安全启动功能ST-iRoT和ST-uROT,并且直接从TrustZone的安全侧提供安全存储、加解密和Attestation等安全功能,实施安全解决方案的过程变得格外简单。开发者只需要关注如何调用相关API使用安全管理器已经提供的功能,而无需开发安全侧的服务,他们可以将更多的精力用于客户应用程序的开发。

此外,客户不必担心这个安全解决方案的维护问题,Secure Manager完全由ST拥有并进行维护,我们将会在需要的时候编写和发布新版本或者补丁。由于工作流程大大简化,即使是对于在安全方面拥有丰富专业知识的团队,这样的方案也会收到欢迎。事实上,除非产品有着非常特殊的需求,否则使用ST的二进制文件可以节省大量的时间和资源。Secure Manager还提供了安全管理器访问工具包(或SMAK--Secure Manager Access Kit),以帮助开发人员创建运行在TrustZone环境非安全侧的应用程序,并使用安全管理器的服务。

面向高级用户的全面的解决方案

ST在设计新的Secure Manager方案时也考虑到了灵活性,因此,允许经验丰富的开发人员自定义他们的解决方案。除了SMAK,Secure Manager还提供开发工具包(SMDK--Secure Manager Development Kit),可以帮助开发者创建复杂的可信应用程序(TA – Trusted Application)。例如,一个开发指纹算法的团队可以使用SMDK将算法变成一个TA 可信应用模块,这个可信应用可以装载到Secure Manager安全管理器中,成为运行在TrustZone安全侧的一个特权级可信应用,非安全侧的应用程序能够调用这个可信应用提供的服务。

此外,得益于ST-iRoT和Secure Manager提供的服务,程序员可以在STM32H5中存储密钥和证书,让嵌入式系统轻松注册并连接到云服务器,免去使用外部硬件安全模块等繁琐问题。Secure Manager的加解密API还允许程序员使用密钥对敏感数据进行加密和解密,而无需访问密钥本身,从而保护它们免受攻击。

1.jpg

上图是STM32 Trusted Execution Environment 可信执行环境Secure Manager安全管理器的框架示意框图。图的右半边属于TrustZone的安全侧,其中蓝色的部分是安全管理器默认提供支持的部分,包括安全启动ST-iROT/ST-uROT和基础安全服务,无需开发;粉红色的部分则是基于SMDK开发的可以安装在安全管理器中运行的扩展安全应用,这部分客户可以自己开发,也可以使用来自第三方的开发好的安全应用。使用STM32H5 的安全管理器,意味着从安全启动、安全升级到默认的安全应用都已经准备好,无需开发与适配。图的左半边属于TrustZone的非安全侧,其中黄色的部分才是客户需要自己开发的应用业务逻辑。

近期STM32MCU生态系统中的STM32CubeProgramer和STM32CubeMX等工具也进行了更新,发布了新版本,其中增加了支持STM32H5的新安全特性和Secure Manager的一系列功能,配合安全管理器SMAK的首个正式版本发布。例如STM32的初始化软件STM32CubeMX中增加了启动路径配置选项,可以指导开发人员激活某些安全功能,如STM32H5的iRoT,生成可以直接配合Secure Manager的应用工程框架等。最新的STM32Cube工具也可以很方便地从STM32 Developer Zone入口快速下载。(附下载链接)

最后再给大家推荐几个STM32MCU的wiki链接,方便读者详细了解STM32H5的安全特性、Secure Manager解决方案、以及如何在STM32CubeProgrammer、STM32CubeMX等工具中配置和使用STM32H5的安全特性、功能与解决方案。

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com

围观 43

STM32今年推出的新产品STM32H5除了兼具性能、功耗与集成度的优势外还进一步提升了产品的安全特性,在信息安全保护方面带来了很多新的特性以及创新的解决方案,例如:

  • 安全启动BootROM ST-iROT

  • 安全调试Debug Authentication

  • 基于新的Product State机制的生命周期管理

  • HDP/HDPL Flash隐藏保护区及其多级保护级别

  • Secure Storage专用安全存储OptionByteKey(obk)区

  • 安全管理器Secure Manager以二进制形式提供的安全解决方案

需要了解更详细的STM32H5信息安全特性,欢迎浏览STM32MCU wiki页面:Security with STM32H5‎, Getting started with STM32H5 security‎。

STM32H5无疑给工业物联网产品设计带来了新的优秀选择。在提供更先进的硬件和解决方案的同时,STM32Cube工具作为STM32生态系统的重要组成部分,当然也考虑到如何让开发者能够更便捷地使用这一系列的新安全功能的问题。为此STM32CubeProgrammer及其内嵌的STM32TrustedPackageCreator,STM32CubeMX等工具都进行了升级,全面支持STM32H5的新安全特性。下面就带大家做简要了解。

STM32CubeProgrammer & STM32TrustedPackageCreator

STM32CubeProgrammer是一个集成了多项功能的STM32编程工具,提供Flash以及Memory读写,OptionByte选项字节读取与配置,内核和外设寄存器读写等多种功能。STM32TrustPackageCreator是内嵌在STM32CubeProgrammer的另一个工具,主要包含针对STM32产品信息安全的多种功能。这两个工具都提供了GUI界面,也支持CLI命令行方式,方便开发者使用。STM32CubeProgrammer v2.14.0增加了OBK文件provisioning,Debug Authentication等新功能,来配合STM32H5的新安全特性的使用。其内嵌的STM32TrustedPackageCreator v2.14.0同样也增加了H5的系列配置页面,提供了针对STM32H5安全新特性的一系列功能,例如

  • Obkey的配置选项卡:可以用于生成多种obk文件,对应不同的安全功能的配置,STM32CubeFW_H5的软件包中会带有对应功能配置的xml文件模板,模板文件可以在Projects目录下开发板的ROT_Provisioning目录中的相关子目录下找到,用户可以在模板xml文件的基础上轻松完成相关配置。

  • Image Gen配置选项卡页面:可以基于xml模板完成对代码或者数据二进制文件的签名打包,生成对应ST-iROT或者OEMiROT的支持安全启动的应用程序二进制文件,以及用于安全升级的应用程序升级包文件。

  • DA CertiGen配置选项卡页面:可以生成Debug Authentication安全调试所需要的数字证书,包括根证书、中间证书、叶子证书等。

  • SFI和HSM相关的几个配置选项卡:提供针对SFI安全固件安装的相关配置功能,例如对OEM固件进行加密生成用于安全烧录的SFI文件,将OEM的加密密钥写入HSM,生成OptionByte配置文件等。

下面举几个例子:

STM32H5安全调试

启用安全调试功能涉及两个阶段,配置阶段和使用阶段。

配置阶段包含Debug Authentication obk文件生成,obk文件烧写和设置产品保护状态等几个步骤。其中STM32TrustedPackageCreator H5的Obkey页面可以生成Debug Authentication安全调试的根密钥及其公钥哈希,或者设置用于安全回退的密码,并生成最终的DA配置obk文件。

1.png

STM32CubeProgrammer工具新增加的OBKey Provisioning选项卡页面可以将DA obk文件烧写至STM32H5芯片上对应的obk区域。产品保护状态的设置则可以在OB Option Byte选项字节配置的页面完成。

2.png

安全调试功能使用阶段,如果在TrustZone开启的情况下需要重新打开调试连接,那么首先需要通过STM32TrustedPackageCreator生成用于DA所需的数字证书。

3.png

然后,再通过STM32CubeProgrammer发起DA请求,开启安全调试模式,或者进行产品状态回退。

4.png

当DA请求被STM32H5芯片的DA library验证通过,则会执行相关DA请求的操作。如果请求的操作是重新打开某种调试连接,则该调式功能将被暂时恢复,下电上电之前都可以进行调试;如果请求的操作是回退,则Product State会恢复到Open或者TZ-Closed状态。

如果希望了解如何一步一步配置和使用STM32H5的安全调试,可以参考wiki页面How to start with DA on STM32H5‎ ,获得更详细的说明信息。

STM32H5安全启动ST-iROT

启用ST-iROT安全启动功能也有几个主要步骤,首先是生成ST-iROT的配置,产生配置obk文件,包括用户代码签名、加密使用的密钥,代码的起始地址偏移量和大小等等,这个步骤可以由STM32TrustedPackageCreator工具完成。生成的obk 文件同样可以通过STM32CubeProgrammer的OBK Provisioning工具进行烧写,类似前面起到过的DA obk文件的烧写。

5.png

其次是应用程序固件的签名打包,最终烧写到用户Flash的是带有签名和相关头数据的可以通过ST-iROT进行校验并启动的文件。用户应用程序的签名打包,同样可以由STM32TrustedPackageCreator在Image Gen配置选项卡页面完成。

6.png

如果希望了解如何一步一步配置和使用STM32H5的ST-iROT功能,可以参考以下wiki页面获得更详细的说明信息:

STM32CubeMX

STM32CubeMX是一个用于对STM32MCU/MPU进行配置的工具,其中包含了管脚分配,IP初始化配置,时钟树配置,工程配置,代码生成以及应用场景功耗预估等,既可以从零开始配置芯片并一站式生成工程架构以及初始化代码,也可以基于现有的配置文件,在此基础上进行修改并更新工程代码。

STM32CubeMX对于带有V8-M TrustZone特性的STM32MCU已经有很好的之支持,当选择任何一个CM33内核带TrustZone功能的STM32MCU或者其对应的开发板时,STM32CubeMX会弹出对话框,询问是否要启用TrustZone,如果选择“with TrustZone activated”,则GUI界面中会出现与TrustZone相关的一系列配置选项。

7.png

在最新的STM32CubeMX v6.9.2版本中还增加了对STM32H5 BootPath启动路径配置的完整支持,包含多种启动路径的选择,例如

  • Application only

  • OEM-iROT + Secure Application

  • ST-iROT + Secure Application

  • ST-iROT + S/NS Application

  • STiROT + OEM-uROT + S/NS Application等等。

为了让开发者可以更方便从STM32CubeMX中生成用于配合STM32H5 Secure Manager的应用程序,这个版本中也包含了对SecureManager的支持。当使用Secure Manager时,工程师只需要生成一个TrustZone Non-Secure工程,用于开发自己的应用逻辑和功能,而安全启动,安全升级以及TrustZone安全侧的安全服务可以直接由Secure Manager的解决方案来提供支撑,无需另外开发,应用程序只需要调用PSA API就可以直接使用Secure Manager内嵌的安全存储、加解密、Attestation等功能。为达到这个目的,开发者只需要将Project设置为只包含Non-secure application的模式,并且从BootPath选项选择ST-iROT + ST-uROT + Secure Manager,就可以轻松配置。

8.png

9.png

完成BootPath选择之后,还可以在STM32CubeMX的”Pinout & Configuration”界面使能Secure Manager,并选择需要使用的Secure Service,这样STM32CubeMX就可以生成对应的Non-Secure App工程,这个工程中除了包含外设的始化代码以外,工程的linker会按照Secure Manager默认的存储空间布局进行更新,工程也会包含PSA API相关的头文件和Middleware部分的代码,应用工程可以调用Secure Manager提供的API,使用已经开发好的安全功能,同时工程的Build Action中也添加了postbuild脚本的执行,可以在App工程编译完成后自动产生签名加密打包的hex文件。

10.png

如果希望了解更多关于如何使用STM32CubeMX的BootPath配置以及使用Secure Manager请参考wiki链接How to start with STM32CubeMX and STM32H5 security‎ 及其相关页面。

另外如果读者希望了解更多有关Secure Manager解决方案的信息,欢迎访问Secure Manager产品页面:https://www.st.com/en/embedded-software/stm32trustee-sm.html 下载软件包,也 可以从wiki页面Secure Manager for STM32H5,How to start with Secure Manager on STM32H5‎ 等,获取更多详细的使用说明。

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 78

页面

订阅 RSS - STM32H5