
01需求分析 最近有些客户需要在 STM32WL55 实现 LoRaWAN FUOTA 功能,LoRaWAN_FUOTA 默认是基于双核 STM32WL55JC,由于成本考虑客户需要用 STM32WLE5CC,客户咨询如何移植? 0 H7 \! y3 d3 [ G( r 02问题描述 ' m; _7 A# v$ S1 b7 F1 ` 以下移植是基于 IAR IDE 和 STM32Cube_FW_WL_V1.3.0,复制 STM32Cube_FW_WL_V1.3.0\Projects\NUCLEO-WL55JC\Applications 下的 LoRaWAN_FUOTA 为 LoRaWAN_FUOTA_WLE5CC。( G" T7 Y& g4 h+ H 5 W |+ G/ ^8 B" b 先分析基于 STM32WL55JC 的 LoRaWAN_FUOTA 。 / W) K- K7 b: I" Q7 l LoRaWAN_FUOTA 下的 1_Image_KMS_Blob 和 1_Image_SECoreBin 仅有 icf 文件,没有.s 文件。LoRaWAN_FUOTA 下的 1_Image_BFU 和 LoRaWAN_End_Node 都有.icf 和.s 文件。" \. H3 F6 n' |9 O . T; P4 P2 ^/ ^+ y) _ 2.1. 对比.s 文件(两个都一样) / m( ? ], x8 R. u7 q! V LoRaWAN_FUOTA\LoRaWAN_End_Node\EWARM\startup_stm32wl55xx_cm4.s 和LoRaWAN_FUOTA\1_Image_BFU\EWARM\startup_stm32wl55xx_cm4.s 是一样的!! F5 g) h: x1 r9 R& t" S' f $ }9 Z5 Y% A7 L. R8 Y, k! |! 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_c m4.s 是一样的!0 h9 i7 E& x d7 Y 所以 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 目录下 & h# A" ~* M# t0 x9 y( W$ W4 [3 H 注意:startup_stm32wle5xx.s 和 startup_stm32wl55xx_cm4.s 不一样, startup_stm32wle5xx.s 中没有 C2SEV_PWR_C2H_IRQHandler, IPCC_C1_RX_IRQHandler,IPCC_C1_TX_IRQHandler 相关的配置。8 K7 F$ N$ F% d. h# Y ![]() LoRaWAN_FUOTA\1_Image_BFU\EWARM\stm32wl55xx_flash_cm4.icf LoRaWAN_FUOTA\1_Image_KMS_Blob\EWARM\stm32wl55xx_flash_cm4.icf LoRaWAN_FUOTA\1_Image_SECoreBin\EWARM\stm32wl55xx_flash_cm4.icf LoRaWAN_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 也不一样!, j5 M; }, y7 G) d, j ![]() 因此保留原有的.icf 文件。7 `0 s/ l# V9 ^- M( M8 p U9 ^1 l- n2 A8 K* s 03移植5 L; `' R3 k( u% w% m& S0 D 以下移植是基于 IAR IDE 和 STM32Cube_FW_WL_V1.3.0,复制 STM32Cube_FW_WL_V1.3.0\Projects\NUCLEO-WL55JC\Applications 下的 LoRaWAN_FUOTA 为 LoRaWAN_FUOTA_WLE5CC。 0 Z. ~* d% B8 C 根据编译顺序依次移植 LoRaWAN_FUOTA_WLE5CC 下的 1_Image_KMS_Blob, 1_Image_SECoreBin, 1_Image_BFU, LoRaWAN_End_Node 4 M3 ]* Q; s- G. w7 b 3.1. 移植 1_Image_KMS_Blob 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_KMS_Blob, 按 ALT+F7 打开 Options 配置。0 h# Y1 A# j/ X/ n+ \2 u% O ![]() ![]() 3.2. 移植 1_Image_SECoreBin : E' I, v; D5 O; q6 { 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin, 按 ALT+F7 打开 Options 配置。& o2 ?. K' J$ B ![]() ![]() 3.3. 移植 1_Image_BFU 复制 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wle5x x.s 到 LoRaWAN_FUOTA_WLE5CC\1_Image_BFU\EWARM 目录下 。' G. T; t6 h- r0 i' @! \ 1 E& m5 B) a. \# O2 J 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin,按 ALT+F7 打开 Options 配置。2 {3 G7 c" L' @# p. C; Z8 i ![]() ![]() ![]()
![]() 3.4. 移植 LoRaWAN_End_Node$ K; M: w- Y+ f6 t: c" F 复制 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wle5x x.s 到 LoRaWAN_FUOTA_WLE5CC\LoRaWAN_End_Node\EWARM 目录下。 9 `9 M; j: K) U" }1 m# e6 n 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin,按 ALT+F7 打开 Options 配置。 ![]() ![]() ![]() 修改代码如下9 m, p5 C2 O3 ^
![]() 3.5. 移植 disable_security.bat 8 v& n7 D2 D |! P STM32WLE5CC 的 OptionBytes 中没 C2BOOT_LOCK,HDPAD,SUBGHSPISD, SNBRSA,SBRSA,SBRV,因此注释掉 LoRaWAN_FUOTA_WLE5CC\Scripts\disable_security.bat 这些 Option 的设置。0 Y! y* `8 J! H7 `1 O: e
3.6. 配置 setenv.bat ' ~9 v5 V, m9 e- K* W 在 LoRaWAN_FUOTA_WLE5CC\Scripts\setenv.bat 中配置 CUBEPROG_EXE, EWARM_EXE,MDK_EXE,CUBEIDE_EXE 的正确路径。 # C- ~, C% ?" ]$ b1 k7 |1 P 04编译( e0 \. b$ c( b2 `" C 可在 LoRaWAN_FUOTA_WLE5CC\Scripts\EWARM\build.bat 编译 LoRaWAN_End_Node 之后加个 “pause”命令,查看编译 log。 ![]() ![]() ![]() ![]() 05下载 通过 STLink 连接 STM32WLE5CC 的板子到 PC 上,运行 program.bat 即可下载LoRaWAN_End_Node\EWARM\Binary\BFU_LoRaWAN_End_Node.bin 到 flash 的 0x08000000 处。; P" o9 p3 M3 G$ B 9 W: L: h5 m, x# J 06运行; e; x% I. t: k/ v, I& T 下载完 BFU_LoRaWAN_End_Node.bin 之后,将 STM32WLE5CC 的板子重新断电再上电!至此 STM32WLE5CC 上可运行 LoRaWAN_FUOTA 了。 2 ^ I+ A2 g0 D7 c: f% N 07小结3 l6 y n2 N1 L. w& z 移植要点: 1. 使用 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wl55xx_ cm4 " O9 K4 c) F7 d' N. F 2. 保持原有的.icf 文件 3. 通过 IDE 修改 Device 由 ST STM32WL55JC 改为 ST STM32WLE5CC,将宏定义 l. R) C( I# G+ c- [ 4. STM32WL55XX 改为 STM32WLE5XX 3 a6 g3 d" `4 ^' y. Q 5. 注释掉或删除 Scripts\disable_security.bat 中的 C2BOOT_LOCK,HDPAD, SUBGHSPISD,SNBRSA,SBRSA,SBRV 的 OtionBytes 配置。/ M1 A8 V5 f2 P0 i c H |
【新品发布】超低功耗复合调制无线STM32WL3x微控制器
基于STM32WL55中开启双核的使用经验分享
基于STM32WL55双核烧录过程的问题及解决办法
【无线与云连接】STM32WL私有LoRa网络设计原理以及演示介绍
基于STM32WL LSE 添加反馈电阻后无法起振问题经验分享
STM32WL sub-GHz SoC 未来工业物联网最佳的选择
STM32Wx 助力万物互联3.0
STM32Wx 赋能工业物联网解决方案
基于STM32WL55-NUCLEO开发的LoRaWAN经验分享
【分享】无线测温系统-硬件篇