|
01需求分析 最近有些客户需要在 STM32WL55 实现 LoRaWAN FUOTA 功能,LoRaWAN_FUOTA 默认是基于双核 STM32WL55JC,由于成本考虑客户需要用 STM32WLE5CC,客户咨询如何移植?" M' H& _ Z; m/ Q; B0 ? 6 @2 S: G2 W U& {; w 02问题描述 ' r" i& Y" V- Z# z, y' c- w 以下移植是基于 IAR IDE 和 STM32Cube_FW_WL_V1.3.0,复制 STM32Cube_FW_WL_V1.3.0\Projects\NUCLEO-WL55JC\Applications 下的 LoRaWAN_FUOTA 为 LoRaWAN_FUOTA_WLE5CC。 ! |0 C7 g3 J( I0 v 先分析基于 STM32WL55JC 的 LoRaWAN_FUOTA 。 LoRaWAN_FUOTA 下的 1_Image_KMS_Blob 和 1_Image_SECoreBin 仅有 icf 文件,没有.s 文件。LoRaWAN_FUOTA 下的 1_Image_BFU 和 LoRaWAN_End_Node 都有.icf 和.s 文件。3 `& b1 ~, W/ P4 A4 i: @! m 0 Q0 q. x! l( E/ E1 b 2.1. 对比.s 文件(两个都一样) LoRaWAN_FUOTA\LoRaWAN_End_Node\EWARM\startup_stm32wl55xx_cm4.s 和LoRaWAN_FUOTA\1_Image_BFU\EWARM\startup_stm32wl55xx_cm4.s 是一样的!: k; a4 k. l3 R/ b 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 是一样的!2 M3 H0 f* p$ s& [( @' M7 }/ E 4 m1 j' ]1 l( ?; ?3 A8 k 所以 STM32WLE5 的.s 可使用 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wle5xx.s - P. p# j0 c- Q 所以,可复制 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wle5xx.s到 LoRaWAN_FUOTA_WLE5CC\LoRaWAN_End_Node\EWARM 目录下: y1 _2 {' q, l' G, B6 g3 Q9 t4 } 注意:startup_stm32wle5xx.s 和 startup_stm32wl55xx_cm4.s 不一样, startup_stm32wle5xx.s 中没有 C2SEV_PWR_C2H_IRQHandler, IPCC_C1_RX_IRQHandler,IPCC_C1_TX_IRQHandler 相关的配置。4 n+ M8 B; o+ O1 N5 n- ?7 u
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 文件都不一样!; V; J! f e5 }" }
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。9 \9 Q+ g; O! O% ]4 K2 _% h 3 q% V* s7 o! g8 a# N$ ^ 根据编译顺序依次移植 LoRaWAN_FUOTA_WLE5CC 下的 1_Image_KMS_Blob, 1_Image_SECoreBin, 1_Image_BFU, LoRaWAN_End_Node8 ^1 @) g- ]# H: g/ `1 T; X1 H 3.1. 移植 1_Image_KMS_Blob 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_KMS_Blob, 按 ALT+F7 打开 Options 配置。
3.2. 移植 1_Image_SECoreBin & Y* u O6 \; d* p7 S 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin, 按 ALT+F7 打开 Options 配置。
3.3. 移植 1_Image_BFU$ F9 |" {( m1 e 复制 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 目录下 。 8 o# x+ h" u- H 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin,按 ALT+F7 打开 Options 配置。 r1 b4 ^+ [7 B; F5 h
3.4. 移植 LoRaWAN_End_Node- O' b/ F8 m- c! L 复制 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 配置。
修改代码如下/ Q6 X; O, \0 E0 ]- ^' E
3.5. 移植 disable_security.bat ( s7 N2 W3 q' { t. C @# C STM32WLE5CC 的 OptionBytes 中没 C2BOOT_LOCK,HDPAD,SUBGHSPISD, SNBRSA,SBRSA,SBRV,因此注释掉 LoRaWAN_FUOTA_WLE5CC\Scripts\disable_security.bat 这些 Option 的设置。" J9 O( U( b$ V+ p, ~) T
3.6. 配置 setenv.bat * s5 S+ y& N5 J- V6 @ 在 LoRaWAN_FUOTA_WLE5CC\Scripts\setenv.bat 中配置 CUBEPROG_EXE, EWARM_EXE,MDK_EXE,CUBEIDE_EXE 的正确路径。 7 G% @: w+ P2 j7 U( B3 F 04编译! e: Z; J. i$ R1 ^3 w3 y* } 可在 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 处。 06运行1 O. q* N" D* d- t$ @ @% r; T% c 下载完 BFU_LoRaWAN_End_Node.bin 之后,将 STM32WLE5CC 的板子重新断电再上电!至此 STM32WLE5CC 上可运行 LoRaWAN_FUOTA 了。, ]8 V3 I/ s X9 h( R4 c% J. Z9 [1 ] - ]( i" _. Q0 Z- L 07小结 移植要点: 6 h% V( B, k! q7 D 1. 使用 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wl55xx_ cm4 $ ~4 P. Z, H, [8 G% A0 r 2. 保持原有的.icf 文件 ' r2 o& d- u0 j 3. 通过 IDE 修改 Device 由 ST STM32WL55JC 改为 ST STM32WLE5CC,将宏定义 9 L. W5 ?- ]$ v5 n2 | 4. STM32WL55XX 改为 STM32WLE5XX 5. 注释掉或删除 Scripts\disable_security.bat 中的 C2BOOT_LOCK,HDPAD, SUBGHSPISD,SNBRSA,SBRSA,SBRV 的 OtionBytes 配置。# |8 F! M" a% c" v * |7 T& I* U# u$ V, I |
【新品测评】STM32WL3R芯片测评,从点亮第一个LED到subGhz启动
STM32WLE55 无线收发功能调试记录
STM32 无线 MCU HSE 频率与启动时间精确调谐实战指南
STM32新品选型指南:WL3R、C5、H5F/E、U3B/3C5 特性解析与场景适配
【新品有奖】新品STM32WL3R:低功耗智能交互,无线遥控新选择
STM32WL3R重磅登场,把无线遥控MCU卷到新高度
告别通用内卷!STM32WL3R凭“专用”破局,开启无线遥控新时代
经验分享 | STM32WL LoRa CAD 开启实操指南:低功耗信道活动检测实现方案
兔哥心中的ST中文论坛
小白也能明白的STM32的低功耗与唤醒机制
微信公众号
手机版