当前位置: 首页 > news >正文

如何从 STiROT 启动 STiROT_Appli_TrustZone LAT1556

关键字:STiROT, STiROT_Appli_TrustZone

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

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

这里的输出也告诉了我们,要在 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 那一行,效果如下:

5. 修改 full secure 到 not full secure

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

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

你猜测 STiROT_Config.xml 应当被修改

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

修改后如下:

6. 重新生成 OBK

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

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

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

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

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

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

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

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

7. 重新运行

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

8. 小结

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

http://www.xdnf.cn/news/1417879.html

相关文章:

  • JS闭包讲解
  • Elasticsearch面试精讲 Day 4:集群发现与节点角色
  • 《JAVA EE企业级应用开发》第一课笔记
  • 记录第一次使用docker打包镜像的操作步骤以及问题解决
  • 初识JVM
  • Personality Test 2025
  • 正则表达式与grep文本过滤详解
  • 【C++游记】AVL树
  • 刷题日记0901
  • (3dnr)多帧视频图像去噪 (二)
  • MySQL内置的各种单行函数
  • 强化学习实战:从零搭建自主移动机器人避障仿真(1)— 导论篇
  • 【LeetCode热题100道笔记+动画】乘积最大子数组
  • AI+PLM如何重构特种/高端复杂装备行业的工艺管理?
  • 再见 K8s!3款开源的云原生部署工具
  • 开源模型应用落地-模型上下文协议(MCP)-为AI智能体打造的“万能转接头”-“mcp-use”(十二)
  • [开源项目] Tiny-RAG :一套功能完善、高度可配的本地知识库问答解决方案
  • 深度学习篇---ShuffleNet网络结构
  • 广电手机卡到底好不好?
  • 科学研究系统性思维的方法体系:数据收集
  • 【Audio】切换至静音或振动模式时媒体音自动置 0
  • docker安装redis,进入命令窗口基操练习命令
  • 优化括号匹配检查:从Stack到计数器的性能提升
  • MOS管学习
  • Linux 进程状态 — 僵尸进程
  • FDTD_梯度波导学习(1)
  • HOW - 前端团队产出评定方案参考
  • 携程旅行 web 验证码 分析
  • JavaEE 进阶第一期:开启前端入门之旅(上)
  • GitLab 18.3 正式发布,更新多项 DevOps、CI/CD 功能【二】