1、前言
OEMiROT 的燒錄腳本是有兩種形式,一種是 Bash 格式,一種是 BAT。我們可以從STM32CubeRepositorySTM32Cube_FW_H5_V1.3.0ProjectsNUCLEOH563ZIROT_ProvisioningOEMiROT 目錄能看到這一點(diǎn)。
無(wú)論是 Bash 格式還是 BAT, 基于 STM32Cube 生態(tài)工具,都可以在 Windows 上運(yùn)行。但是這兩種格式在 OEMiROT 上下文里并不能由著我們的開發(fā)習(xí)慣隨意使用。本文就來(lái)說(shuō)明正確使用的規(guī)則和混用的方法。
2、規(guī)則
Bash 和 Bat 文件是否可以隨意選擇使用,從STM32CubeRepositorySTM32Cube_FW_H5_V1.3.0ProjectsNUCLEOH563ZIROT_ProvisioningOEMiROT 是看不出來(lái)的。也就是說(shuō),如果你不去修改編譯代碼,可能什么問(wèn)題都沒(méi)有。答案是在 STM32CubeRepositorySTM32Cube_FW_H5_V1.3.0ProjectsNUCLEOH563ZIApplicationsROTOEMiROT_Boot 的幾個(gè) IDE 的腳本里。我們可以看到,對(duì)于STM32CubeIDE(STM32CubeIDE 目錄)使用的是 postbuild.sh。
3、STM32CubeIDE 用戶如何使用 Bash
STM32CubeIDE 用戶使用 Bash,可以安裝一個(gè) Git Bash 軟件,那么在 Git Bash 的命令行就可以執(zhí)行 ROT_Provisioning 的腳本。
4、解決 Bash 和 Bat 混用的問(wèn)題舉例
假設(shè)我們使用 STM32CubeIDE 進(jìn)行編譯。我們知道 OEMiROT 的默認(rèn)行為是Overwrite,也就是新的固件會(huì)覆蓋舊的固件,原理上只需要注解掉位于STM32CubeRepositorySTM32Cube_FW_H5_V1.3.0ProjectsNUCLEOH563ZIApplicationsROTOEMiROT_BootInc的 flash_layout.h 中的宏。不過(guò),因?yàn)?OVERWRITE 到 SWAP 會(huì)引起 Flash 布局的改變,因此,改動(dòng)之后,假如我們習(xí)慣 BAT,那么使用STM32CubeRepositorySTM32Cube_FW_H5_V1.3.0ProjectsNUCLEOH563ZIROT_ProvisioningOEMiROT 的 provisioning.bat 燒錄后,串口終端會(huì)出現(xiàn)錯(cuò)誤。
5、小結(jié)
本文針對(duì) OEMiROT 里提供的 Bash 和 BAT 提供了辨析,讓 STM32 開發(fā)人員能夠正確選擇相應(yīng)的腳本進(jìn)行運(yùn)行,或者修改相應(yīng)的腳本符合個(gè)人的使用習(xí)慣。