STM32H5

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

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

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

来源:STM32单片机

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

围观 12

一、前言

有客户反馈,在使用 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)。

围观 15

一、前言

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)。

围观 32

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)。

围观 33

在工业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

围观 34

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)。

围观 66

贸泽电子 (Mouser Electronics) 即日起供货STMicroelectronicsg的STM32H5 MCU。STM32H5是首个可访问片上系统 (SoC) 安全服务的MCU系列,适用于工业自动化医疗、智慧城市、智能家居、个人电子产品和通信领域的新一代智能互联设备。 

1698739089995823.jpg

贸泽电子供应的STMicroelectronics STM32H5是搭载Arm® Cortex®-M33 32位RISC内核的高性能微控制器 (MCU),包含浮点运算单元 (FPU),工作频率高达250 MHz,兼具高性能、安全性和高能效,是在MCU上开发中档应用的理想之选。STM32H5系列旨在让“边缘”设备更加智能,并加强物联网资产对各种攻击的防御能力。Cortex-M33内核将Arm TrustZone®架构与STM32Trust TEE Security Manager相结合,提供一系列安全功能,包括通过行业标准应用编程接口 (API) 访问的片上系统 (SoC) 安全服务。这些安全功能提供根据已知最佳实践开发的安全服务,让开发人员无需自己编写安全代码,在提供有效保护的同时简化了应用开发。 

STM32H5 MCU利用ST先进的40nm CMOS工艺技术和改进的片上电源转换电路,提高了能效,打破了开发人员认为性能提升必然带来功耗增加的看法。有了这些MCU,在环境温度高达125°C的恶劣环境中使用250 MHz器件时,功耗不再是限制因素。此外,STM32H5 MCU符合安全完整性等级 (SIL) 标准,适用于对SIL有硬性要求的产品,原生硬件功能符合各种工业和医疗应用的需求。

 STM32H5 MCU嵌入式高速存储器(128 KB双内存条闪存和32 KB SRAM)具有丰富的闪存和SRAM保护机制。增强型I/O和外设通过HASH硬件加速器和真正的随机数发生器加强了安全性。该系列MCU采用从25引脚到64引脚的五种封装,需要1.71V至3.6V电源,工作温度范围为-40至+85°C/105°C,低功耗下可达125°C(+130 °C 结温)。

有关详细信息,请访问https://www.mouser.cn/new/stmicroelectronics/stm-stm32h5-mcus/

作为全球授权代理商,贸泽电子库存有丰富的半导体和电子元器件并支持随时发货™。贸泽旨在为客户供应全面认证的原厂产品,并提供全方位的制造商可追溯性。为帮助客户加速设计,贸泽网站提供了丰富的技术资源库,包括技术资源中心、产品数据手册、供应商特定参考设计、应用笔记、技术设计信息、设计工具以及其他有用的信息。 

工程师还可以一键订阅免费的贸泽电子报,及时了解业界新品动态和资讯。在订阅贸泽的电子报时,我们可以根据您不断变化的具体项目需求来提供相关的新闻报道和参考信息。贸泽充分尊重用户的权利,让您能自由掌控想要接收的内容。欢迎登陆https://sub.info.mouser.com/subscriber-sc 注册,及时掌握新兴技术、行业趋势及更多资讯。 

关于贸泽电子 (Mouser Electronics)

贸泽电子隶属于伯克希尔哈撒韦集团 (Berkshire Hathaway) 公司旗下,是一家授权电子元器件代理商,专门致力于向设计工程师和采购人员提供各产品线制造商的新产品。作为一家全球代理商,我们的网站mouser.cn能够提供多语言和多货币交易支持,提供超过1200家品牌制造商的680多万种产品。我们通过遍布全球的27个客户支持中心,为客户提供无时差的本地化贴心服务,并支持使用当地货币结算。我们从占地9.3万平方米的全球配送中心,将产品运送至全球223个国家/地区、超过65万个顾客的手中。更多信息,敬请访问:http://www.mouser.cn。 

注册商标

贸泽、贸泽电子、Mouser与Mouser Electronics是Mouser Electronics公司的注册商标。所有出现在此的其他产品、公司名称及标识均可能分属于各公司所有。

围观 10
首款支持Secure Manager的开发套件,一个集成ST认证和维护的核心安全服务的系统芯片总包方案

2023年9月19日,意法半导体发布了一款功能丰富的STM32H5微控制器(MCU)开发板。STM32H5微控制器是开发高性能数据处理和高级安全应用的理想选择,适合开发各种应用,例如,智能传感器、智能家电、工业控制器、网络设备、个人电子产品和医疗设备。

1.jpg

STM32H573I-DK探索套件让开发人员能够探索STM32H5集成的全部功能,例如,模拟外设、定时器、ST ART(自适应实时)加速器™、媒体接口和数学加速器,方便开发者评估工业可编程逻辑控制器(PLC)、电机驱动器,以及空调、冰箱和洗衣机等家电的智能控制器的新设计,其他潜在应用包括报警控制器、通信集线器和智能照明控制。

STM32H573I-DK探索套件是一款多功能的开发板,搭载一颗STM32H5微控制器、彩色触屏、数字接口麦克风,以及USB、以太网和Wi-Fi®等网络接口。板子上还有音频编解码器和闪存,以及用于连接扩展板和子板的排针。

为了简化开发过程,STM32CubeH5 MCU软件包整合了在STM32H5上开发应用所需的全部软件组件,包括代码示例和应用代码。该软件包全都被集成到STM32Cube生态系统中,包含辅助应用程序开发的附加软件。意法半导体还提供MCU配置和初始化工具STM32CubeMX。

STM32H5于2023年3月推出,采用运行频率250MHz的 Arm®Cortex®-M33嵌入式处理器内核,是意法半导体首款支持ST Secure Manager系统芯片安全解决方案的微控制器。这款MCU整合Arm TrustZone®安全技术与意法半导体的STM32Trust可信框架,为开发者提供可信的存储、加密、认证和更新功能。这款产品还嵌入了有侧信道保护功能的硬件加密加速器,专注市场认可的安全认证、PSA Certified Level 3和GlobalPlatform SESIP3。

意法半导体开发了STM32H573I-DK探索套件和解释如何使用安全服务的示例,并在STM32Cube开发生态系统中集成了所有必要的软件工具和技术支持。

这款探索套件以及H5 Nucleo开发板Nucleo-H563ZI现在可从意法半导体的电子商城和授权代理商处购买。面向部分应用的STM32物联网云解决方案也即将上市,敬请关注。产品详情访问:https://www.st.com/en/product/stm32h573i-dk.html

来源:STM32

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

围观 20

SEGGER宣布其J-Link调试器, Flasher在线烧录器,全套开发工具及其emPower OS操作系统全面支持意法半导体的新型STM32H5 MCU系列。

1.jpg

SEGGER市场经理Dirk Akemann表示:“SEGGER很高兴能够继续为新的ST产品提供支持。“从早期开发到产品的推出,SEGGER的软件和硬件使整个过程无缝且高效。”

SEGGER J-Link是市场上使用最广泛的调试工具之一。提供高达4 MB/s的下载速度,以及在MCU Flash中设置无限数量断点的能力。J-Link提供免费软件和固件更新。所有支持的设备都可以使用,而不需要购买额外的许可证。无论是现在还是将来,都没有隐藏的成本。可以配合多种主流的集成开发环境(SEGGER Embedded Studio,IAR EWARM,Eclipse,ARM Keil等),支持ARM7/9/11, Cortex M/R/A, RISC-V,8051,PIC32和RX内核芯片的调试仿真。

SEGGER Flasher是一种面向样品烧录,量产烧录和设备维护更新的专业在线烧录器。支持微控制器和片上系统(SoC)Flash编程以及 (Q) SPI Flash编程。Flashers PRO、Compact 和 ARM 具有 128 兆字节的标准内部存储器,用于存储固件和烧录配置。Flasher Compact在生产设备或自动测试设备 (ATE)的生产环境中应用非常广泛。

emPower OS是SEGGER针对嵌入式系统和物联网设备的完整操作系统,是适用于任何CPU和云端的一体化解决方案。它包括RTOS、文件系统、用户界面、web服务器以及连接库、安全算法组件。所有组件也可单独使用。

开发工具包括SEGGER多平台集成开发环境 Embedded Studio、实时软件分析工具SystemView以及J-Link调试器和性能分析器Ozone。完善了SEGGER对产品开发过程的支持。

来源:麦克泰技术

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

围观 22

页面

订阅 RSS - STM32H5