[其他ST产品] 如何从 STiROT 启动 STiROT_Appli_TrustZone LAT1556

[复制链接]
210|0
STM新闻官 发表于 2025-9-13 09:00 | 显示全部楼层 |阅读模式
1. 前言
STM32H5 的 STiROT 让客户不用自己开发 bootloader 来实现安全启动与安全固件更新,用户只需要将精力集中在应用程序上,这给用户实现 Security 需求带来了方便。对于用户应用,STM32Cube 也提供了基于 STiROT 的例程和烧录脚本,能够进一步加速 Security 需求的开发。STM32Cube 有两个典型的用户应用例程,一个是 STiROT_Appli,另外一个是STiROT_Appli_TrustZone。使用 STiROT_Appli 具有丰富的文档支持,而有些用户在使用STiROT_Appli_Trustzone 过程中则遇见了困难。本文来解决这一问题。

2. 环境
本文基于

STM32H573I-DK 开发板
STM32CubeH5 v1.5.0
STM32CubeProgrammer v2.17.0
STM32CubeIDE 1.16.1
开发板是关键的环境,其他软件与工具版本并不一定需要相同。

3. 从 STiROT_Appli 到 STiROT_Appli_Trustzone 的困难
STiROT_Appli 与 STiROT_Appli_Trustzone 的区别在于,前者是一个 Full secure 的应用,后者则包含了 Secure 和 Non-Secure 工程,因此他们的 Flash 布局是不一样的。Flash 布局不一样意味着烧录脚本的配置往往不一样。

对于运行 STiROT_Appli_Trustzone 的困难则在于,STM32CubeH5 中 STiROT_Appli 和STiROT_Appli_Trustzone 并不互相独立,他们会共享一些环境配置。但是用户拿到STM32CubeH5 时 STiROT_Appli 之所以能够直接工作,得益于编译环境和烧录脚本的默认配置。所以,如果用户以为这两个程序互相独立,默认都能工作,一上来不加修改的去编译和烧录 STiROT_Appli_Trustzone,那么遇见 STiROT_Appli_Trustzone 在 STiROT 环境下不工作,并不奇怪。

幸运的是, STM32CubeH5 里的框架足够友好,从 STiROT_Appli 到 STiROT_Appli_Trustzone 只需要简单的修改。

4. 修改 env.bat
和 STiROT_Appli 一样,对于将 STM32CubeH5 的 STiROT_Appli_Trustzone 在 STM32H573I-DK 板子上运行起来的第一步都是进到STM32Cube\Repository\STM32Cube_FW_H5_V1.5.0\Projects\STM32H573I-DK\ROT_Provisioning\STiROT 目录,直接运行 provisioning.bat 或者 provisioning.sh。这里选择 provisioning.bat
5447268c14dfe45787.png

你会注意到这里的输出并不符合你的需要,这里默认显示 STiROT_Appli,而你希望运行STiROT_Appli_Trustzone。


6694668c14e0ce334a.png

这里的输出也告诉了我们,要在 env.bat 里进行修改。

env.bat 的目录是在 STM32Cube\Repository\STM32Cube_FW_H5_V1.5.0\Projects\STM32H573I-DK\ROT_Provisioning。在这个文件里,你需要将 STiROT_Appli改成 STiROT_Appli_Trustzone,方法就是注释掉 STiROT_Appli 这一行,放开 STiROT_Appli_Trustzone 那一行,效果如下:
5671568c14e1de4952.png

1882268c14e23d9b9b.png

5. 修改 full secure 到 not full secure
修改好环境变量,你关闭并重新运行 provisioning.bat。你看见应用名字已经修改成了STiROT_Appli_Trustzone。如同使用 STiROT_Appli 那样,你的工作就是直接输入回车。结果,你遇见了一个错误:
8494368c14e355aac9.png

似乎 STiROT_Appli 在 STiROT_Config.xml 并没有自动修改。检查脚本同一目录的provisioning.log,你发现如下提醒:
9601768c14e46380f2.png

你猜测 STiROT_Config.xml 应当被修改

直接进到 STM32Cube\Repository\STM32Cube_FW_H5_V1.5.0\Projects\STM32H573I-DK\ROT_Provisioning\STiROT\Config 目录打开 STiROT_Config.xml,果然如此,full secure 的配置不对。
3837868c14e55d5fbb.png

修改后如下:
1256168c14e62bcae6.png
6. 重新生成 OBK

修改好 STiROT_Config.xml,你关闭并重新运行 provisioning.bat。

3821368c14e70b7b0d.png

在[code firmware image generation]这一步你也打开了 STM32CubeIDE 重新生成了固件。按照提示,将 BOOT0 拨到 FLASH

7315468c14e83c10d1.png

在开发阶段,为了调试方便,在选择产品状态时选择 OPEN

2949268c14e9279594.png

然后,按照提示将 BOOT0 拨到 SYSTEM,脚本提示一切似乎正常

1947368c14e9fd57f9.png

但是按照要求下电、上电,打开串口,看不到任何输出。


这里的问题关键在于对于 STiROT_Appli,你可以忽略脚本运行过程中 OBK 重新生成的提示,因为 STM32CubeH5 默认是按照 STiROT_Appli 提供的。而对于 STiROT_Appli_Trustzone 则需要按照提示,或者在其他时间重新生成 OBK。

4992568c14eb25af5d.png

打开STM32TrustedPackageCreator。STM32TrustedPackageCreator 是STM32CubeProgrammer 的一部分。


3851468c14ec4029b2.png

选择 OBKey 工具,并选择STM32Cube\Repository\STM32Cube_FW_H5_V1.5.0\Projects\STM32H573I-DK\ROT_Provisioning\STiROT\Config 的 xml 文件,然后点击[Generate OBKey]

7. 重新运行
你重新运行 provisioning.bat,这个时候你发现串口输出了。一切正常。

5065968c14f0da04c0.png

8. 小结
如果你需要基于 STM32CubeH5和 STM32H573I-DK 的 STiROT 运行STiROT_Appli_TrustZone,发现它不能直接工作,不要奇怪,你需要修改 env.bat 的应用路径,以及 STiROT_Config.xml 里的 full secure 的配置,并重新生成 OBK。
7880068c14f18356bb.png




您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:意法半导体(中国)投资有限公司
简介:您的嵌入式应用将得益于意法半导体领先的产品架构、技术、多源产地和全方位支持。意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。

1385

主题

1669

帖子

24

粉丝
快速回复 在线客服 返回列表 返回顶部