本帖最后由 blacye 于 2025-3-14 15:27 编辑
1、前言OEMiROT 的烧录脚本是有两种形式,一种是 Bash 格式,一种是 BAT。我们可以从STM32CubeRepositorySTM32Cube_FW_H5_V1.3.0ProjectsNUCLEOH563ZIROT_ProvisioningOEMiROT 目录能看到这一点。 无论是 Bash 格式还是 BAT, 基于 STM32Cube 生态工具,都可以在 Windows 上运行。但是这两种格式在 OEMiROT 上下文里并不能由着我们的开发习惯随意使用。本文就来说明正确使用的规则和混用的方法。 2、规则Bash 和 Bat 文件是否可以随意选择使用,从STM32CubeRepositorySTM32Cube_FW_H5_V1.3.0ProjectsNUCLEOH563ZIROT_ProvisioningOEMiROT 是看不出来的。也就是说,如果你不去修改编译代码,可能什么问题都没有。答案是在 STM32CubeRepositorySTM32Cube_FW_H5_V1.3.0ProjectsNUCLEOH563ZIApplicationsROTOEMiROT_Boot 的几个 IDE 的脚本里。我们可以看到,对于STM32CubeIDE(STM32CubeIDE 目录)使用的是 postbuild.sh。 3、STM32CubeIDE 用户如何使用 BashSTM32CubeIDE 用户使用 Bash,可以安装一个 Git Bash 软件,那么在 Git Bash 的命令行就可以执行 ROT_Provisioning 的脚本。 4、解决 Bash 和 Bat 混用的问题举例假设我们使用 STM32CubeIDE 进行编译。我们知道 OEMiROT 的默认行为是Overwrite,也就是新的固件会覆盖旧的固件,原理上只需要注解掉位于STM32CubeRepositorySTM32Cube_FW_H5_V1.3.0ProjectsNUCLEOH563ZIApplicationsROTOEMiROT_BootInc的 flash_layout.h 中的宏。不过,因为 OVERWRITE 到 SWAP 会引起 Flash 布局的改变,因此,改动之后,假如我们习惯 BAT,那么使用STM32CubeRepositorySTM32Cube_FW_H5_V1.3.0ProjectsNUCLEOH563ZIROT_ProvisioningOEMiROT 的 provisioning.bat 烧录后,串口终端会出现错误。 |