|
01需求分析 最近有些客户需要在 STM32WL55 实现 LoRaWAN FUOTA 功能,LoRaWAN_FUOTA 默认是基于双核 STM32WL55JC,由于成本考虑客户需要用 STM32WLE5CC,客户咨询如何移植? 7 u5 J8 T! e; b( p9 t+ C7 R5 Z 02问题描述 - [7 d* C3 |* M' }% C 以下移植是基于 IAR IDE 和 STM32Cube_FW_WL_V1.3.0,复制 STM32Cube_FW_WL_V1.3.0\Projects\NUCLEO-WL55JC\Applications 下的 LoRaWAN_FUOTA 为 LoRaWAN_FUOTA_WLE5CC。( i: U2 T+ v% ^3 q 先分析基于 STM32WL55JC 的 LoRaWAN_FUOTA 。 ; e/ b3 c1 Q2 J; ? LoRaWAN_FUOTA 下的 1_Image_KMS_Blob 和 1_Image_SECoreBin 仅有 icf 文件,没有.s 文件。LoRaWAN_FUOTA 下的 1_Image_BFU 和 LoRaWAN_End_Node 都有.icf 和.s 文件。 2.1. 对比.s 文件(两个都一样): h# e7 ~( b( t& t2 [& \ 6 A* Q4 T% H9 x" e( C; o) r. A LoRaWAN_FUOTA\LoRaWAN_End_Node\EWARM\startup_stm32wl55xx_cm4.s 和LoRaWAN_FUOTA\1_Image_BFU\EWARM\startup_stm32wl55xx_cm4.s 是一样的!0 L! x# Q* q2 C' Z* b, V1 ?3 z) f $ h" \6 ]$ h! r9 e+ _ LoRaWAN_FUOTA\LoRaWAN_End_Node 和LoRaWAN\LoRaWAN_End_Node 的startup_stm32wl55xx_cm4.s 是相同的!" [5 R# ^* [5 A( ~ h : r# d4 P( I+ t7 K 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 C' z. r8 g7 B: V; o 所以 STM32WLE5 的.s 可使用 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wle5xx.s * R# V5 d0 M7 `. o4 C6 N 所以,可复制 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wle5xx.s到 LoRaWAN_FUOTA_WLE5CC\LoRaWAN_End_Node\EWARM 目录下 / K. _' g: C. l7 t5 A 注意:startup_stm32wle5xx.s 和 startup_stm32wl55xx_cm4.s 不一样, startup_stm32wle5xx.s 中没有 C2SEV_PWR_C2H_IRQHandler, IPCC_C1_RX_IRQHandler,IPCC_C1_TX_IRQHandler 相关的配置。. g: b. z, `* O/ D+ V0 ]) D
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 文件都不一样! N2 M* h1 }2 {4 d8 r
LoRaWAN_FUOTA\LoRaWAN_End_Node\EWARM\stm32wl55xx_flash_cm4.icf 和 LoRaWAN\LoRaWAN_End_Node\EWARM\stm32wl55xx_flash_cm4.icf 也不一样!( i6 U( V/ i$ I7 |, _- a9 Y, g
因此保留原有的.icf 文件。) i% X) r' i' f9 H: H5 l 03移植 以下移植是基于 IAR IDE 和 STM32Cube_FW_WL_V1.3.0,复制 STM32Cube_FW_WL_V1.3.0\Projects\NUCLEO-WL55JC\Applications 下的 LoRaWAN_FUOTA 为 LoRaWAN_FUOTA_WLE5CC。5 G1 H% _4 l9 T( E$ J 根据编译顺序依次移植 LoRaWAN_FUOTA_WLE5CC 下的 1_Image_KMS_Blob, 1_Image_SECoreBin, 1_Image_BFU, LoRaWAN_End_Node 3.1. 移植 1_Image_KMS_Blob5 Q3 i% [! e7 U# [6 F 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_KMS_Blob, 按 ALT+F7 打开 Options 配置。
3.2. 移植 1_Image_SECoreBin 5 U4 k& _; c9 c9 y) m" a 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin, 按 ALT+F7 打开 Options 配置。
3.3. 移植 1_Image_BFU% Q D% U* P4 P 复制 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 目录下 。2 o& O, w7 H8 w: ?7 v+ j0 O$ {3 p 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin,按 ALT+F7 打开 Options 配置。
3.4. 移植 LoRaWAN_End_Node R' z9 T& |/ _1 b! R 复制 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 目录下。 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin,按 ALT+F7 打开 Options 配置。
修改代码如下! j4 M: x2 x+ z
3.5. 移植 disable_security.bat : E0 `( ~6 ?, w' V. |0 i$ N+ G& h/ Y 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 的正确路径。 7 {) {4 W: f! q' u) Z# J; F 04编译 可在 LoRaWAN_FUOTA_WLE5CC\Scripts\EWARM\build.bat 编译 LoRaWAN_End_Node 之后加个 “pause”命令,查看编译 log。5 |, ?8 m. U8 i5 A" r2 p1 P
05下载4 X; f+ y! z2 ]; r3 _( O 通过 STLink 连接 STM32WLE5CC 的板子到 PC 上,运行 program.bat 即可下载LoRaWAN_End_Node\EWARM\Binary\BFU_LoRaWAN_End_Node.bin 到 flash 的 0x08000000 处。 + [7 w9 h( S; m; |; c 06运行, g, J* W( B2 K: X( z: z) c" q 下载完 BFU_LoRaWAN_End_Node.bin 之后,将 STM32WLE5CC 的板子重新断电再上电!至此 STM32WLE5CC 上可运行 LoRaWAN_FUOTA 了。9 J, ?* I5 _& w2 E- m" m 07小结$ C9 c! ?5 j S/ c. W( D9 d% v 移植要点: 1. 使用 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wl55xx_ cm4 , u$ [7 a" X$ @/ \3 j7 A: ` p 2. 保持原有的.icf 文件 ! x4 }! c, m% c# }4 S- T 3. 通过 IDE 修改 Device 由 ST STM32WL55JC 改为 ST STM32WLE5CC,将宏定义 4. STM32WL55XX 改为 STM32WLE5XX s) R9 u7 I0 N 5. 注释掉或删除 Scripts\disable_security.bat 中的 C2BOOT_LOCK,HDPAD, SUBGHSPISD,SNBRSA,SBRSA,SBRV 的 OtionBytes 配置。 3 }1 y- o, t0 ?+ t5 h* x |
STM32 无线 MCU HSE 频率与启动时间精确调谐实战指南
STM32新品选型指南:WL3R、C5、H5F/E、U3B/3C5 特性解析与场景适配
【新品有奖】新品STM32WL3R:低功耗智能交互,无线遥控新选择
STM32WL3R重磅登场,把无线遥控MCU卷到新高度
告别通用内卷!STM32WL3R凭“专用”破局,开启无线遥控新时代
经验分享 | STM32WL LoRa CAD 开启实操指南:低功耗信道活动检测实现方案
兔哥心中的ST中文论坛
小白也能明白的STM32的低功耗与唤醒机制
2025软件工具兔哥知道
STM32为何在诸多的单片机中脱颖而出?
微信公众号
手机版