打印
[STM32WL]

实战经验 | 从STM32WL55JC到STM32WLE5CC的LoRaWAN_FUOTA移植

[复制链接]
622|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 STM新闻官 于 2024-9-26 10:06 编辑

01 需求分析
最近有些客户需要在 STM32WL55 实现 LoRaWAN FUOTA 功能,LoRaWAN_FUOTA 默认是基于双核 STM32WL55JC,由于成本考虑客户需要用 STM32WLE5CC,客户咨询如何移植?


02 问题描述
以下移植是基于 IAR IDE 和 STM32Cube_FW_WL_V1.3.0,复制STM32Cube_FW_WL_V1.3.0\Projects\NUCLEO-WL55JC\Applications 下的LoRaWAN_FUOTA 为 LoRaWAN_FUOTA_WLE5CC。
先分析基于 STM32WL55JC 的 LoRaWAN_FUOTA 。

LoRaWAN_FUOTA 下的 1_Image_KMS_Blob 和 1_Image_SECoreBin 仅有 icf 文件,没有.s 文件。LoRaWAN_FUOTA 下的 1_Image_BFU 和 LoRaWAN_End_Node 都有.icf 和.s 文件。

2.1. 对比.s 文件(两个都一样)
LoRaWAN_FUOTA\LoRaWAN_End_Node\EWARM\startup_stm32wl55xx_cm4.s 和LoRaWAN_FUOTA\1_Image_BFU\EWARM\startup_stm32wl55xx_cm4.s 是一样的!

LoRaWAN_FUOTA\LoRaWAN_End_Node 和LoRaWAN\LoRaWAN_End_Node 的startup_stm32wl55xx_cm4.s 是相同的!

EWARM\startup_stm32wl55xx_cm4.s 和 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wl55xx_cm4.s 是一样的!


所以 STM32WLE5 的.s 可使用 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wle5xx.s


所以,可复制 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wle5xx.s到 LoRaWAN_FUOTA_WLE5CC\LoRaWAN_End_Node\EWARM 目录下


注意:startup_stm32wle5xx.s 和 startup_stm32wl55xx_cm4.s 不一样,startup_stm32wle5xx.s 中没有 C2SEV_PWR_C2H_IRQHandler,IPCC_C1_RX_IRQHandler,IPCC_C1_TX_IRQHandler 相关的配置。


2.2. 对比.icf 文件(四个都不一样)
LoRaWAN_FUOTA\1_Image_BFU\EWARM\stm32wl55xx_flash_cm4.icfLoRaWAN_FUOTA\1_Image_KMS_Blob\EWARM\stm32wl55xx_flash_cm4.icfLoRaWAN_FUOTA\1_Image_SECoreBin\EWARM\stm32wl55xx_flash_cm4.icfLoRaWAN_FUOTA\LoRaWAN_End_Node\EWARM\stm32wl55xx_flash_cm4.icf这四个.icf 文件都不一样!



LoRaWAN_FUOTA\LoRaWAN_End_Node\EWARM\stm32wl55xx_flash_cm4.icf 和LoRaWAN\LoRaWAN_End_Node\EWARM\stm32wl55xx_flash_cm4.icf 也不一样!
因此保留原有的.icf 文件。

03 移植
以下移植是基于 IAR IDE 和 STM32Cube_FW_WL_V1.3.0,复制STM32Cube_FW_WL_V1.3.0\Projects\NUCLEO-WL55JC\Applications 下的LoRaWAN_FUOTA 为 LoRaWAN_FUOTA_WLE5CC。

根据编译顺序依次移植 LoRaWAN_FUOTA_WLE5CC 下的 1_Image_KMS_Blob, 1_Image_SECoreBin, 1_Image_BFU, LoRaWAN_End_Node

3.1. 移植 1_Image_KMS_Blob
打开,选中 Project-STM32WL55JC_Nucleo_1_Image_KMS_Blob, 按 ALT+F7 打开 Options 配置。

3.2. 移植 1_Image_SECoreBin
打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin, 按 ALT+F7 打开 Options 配置。

3.3. 移植 1_Image_BFU
复制 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wle5xx.s 到 LoRaWAN_FUOTA_WLE5CC\1_Image_BFU\EWARM 目录下 。

打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin,按 ALT+F7 打开 Options 配置。

修改代码如下:

按 F7 编译


3.4. 移植 LoRaWAN_End_Node
复制 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wle5xx.s 到 LoRaWAN_FUOTA_WLE5CC\LoRaWAN_End_Node\EWARM 目录下。

打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin,按 ALT+F7 打开 Options 配置。




修改代码如下

按 F7 编译:


3.5. 移植 disable_security.bat
STM32WLE5CC 的 OptionBytes 中没 C2BOOT_LOCK,HDPAD,SUBGHSPISD,SNBRSA,SBRSA,SBRV,因此注释掉LoRaWAN_FUOTA_WLE5CC\Scripts\disable_security.bat 这些 Option 的设置。


3.6. 配置 setenv.bat
在 LoRaWAN_FUOTA_WLE5CC\Scripts\setenv.bat 中配置 CUBEPROG_EXE,EWARM_EXE,MDK_EXE,CUBEIDE_EXE 的正确路径。

使用特权

评论回复
沙发
STM新闻官|  楼主 | 2024-9-26 10:28 | 只看该作者
本帖最后由 STM新闻官 于 2024-9-26 11:10 编辑

04 编译

可在 LoRaWAN_FUOTA_WLE5CC\Scripts\EWARM\build.bat 编译LoRaWAN_End_Node 之后加个 “pause”命令,查看编译 log。
还可将 rebuild 改为 0,这样再次运行 build.bat 时,不会 clean,编译时间会短;否认会 clean完全重新编译,时间会长!

05 下载
通过 STLink 连接 STM32WLE5CC 的板子到 PC 上,运行 program.bat 即可下载LoRaWAN_End_Node\EWARM\Binary\BFU_LoRaWAN_End_Node.bin 到 flash 的0x08000000 处。

06 运行
下载完 BFU_LoRaWAN_End_Node.bin 之后,将 STM32WLE5CC 的板子重新断电再上电!至此 STM32WLE5CC 上可运行 LoRaWAN_FUOTA 了。

0
7 小结
移植要点: 1. 使用 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wl55xx_cm4 2. 保持原有的.icf 文件 3. 通过 IDE 修改 Device 由 ST STM32WL55JC 改为 ST STM32WLE5CC,将宏定义 4. STM32WL55XX 改为 STM32WLE5XX 5. 注释掉或删除 Scripts\disable_security.bat 中的 C2BOOT_LOCK,HDPAD,SUBGHSPISD,SNBRSA,SBRSA,SBRV 的 OtionBytes 配置。


▼▼▼


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

560

主题

745

帖子

18

粉丝