|
01需求分析 最近有些客户需要在 STM32WL55 实现 LoRaWAN FUOTA 功能,LoRaWAN_FUOTA 默认是基于双核 STM32WL55JC,由于成本考虑客户需要用 STM32WLE5CC,客户咨询如何移植?2 h& A! U/ F9 ?* q( B 02问题描述 6 Q3 m5 V$ u% n8 S 以下移植是基于 IAR IDE 和 STM32Cube_FW_WL_V1.3.0,复制 STM32Cube_FW_WL_V1.3.0\Projects\NUCLEO-WL55JC\Applications 下的 LoRaWAN_FUOTA 为 LoRaWAN_FUOTA_WLE5CC。 2 z" q, }% d0 r- V 先分析基于 STM32WL55JC 的 LoRaWAN_FUOTA 。3 A6 G2 X- z& c 7 l/ W: D) C& X2 g# y/ V& S LoRaWAN_FUOTA 下的 1_Image_KMS_Blob 和 1_Image_SECoreBin 仅有 icf 文件,没有.s 文件。LoRaWAN_FUOTA 下的 1_Image_BFU 和 LoRaWAN_End_Node 都有.icf 和.s 文件。+ E. N# U. n9 ^; b0 C" ^ - |& ]! p+ G: \7 ? 2.1. 对比.s 文件(两个都一样)$ g- l/ d$ B5 B$ ]6 O: _/ Z LoRaWAN_FUOTA\LoRaWAN_End_Node\EWARM\startup_stm32wl55xx_cm4.s 和LoRaWAN_FUOTA\1_Image_BFU\EWARM\startup_stm32wl55xx_cm4.s 是一样的!: ^, s! `! \& M! j 9 ~ F8 s# f) u8 u/ M LoRaWAN_FUOTA\LoRaWAN_End_Node 和LoRaWAN\LoRaWAN_End_Node 的startup_stm32wl55xx_cm4.s 是相同的!( X5 A' q$ J: S/ _+ T2 x4 F2 [ EWARM\startup_stm32wl55xx_cm4.s 和 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wl55xx_c m4.s 是一样的!; p7 q: ^6 m' v9 I4 W1 h5 \. e& ^& A 所以 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 目录下9 ?4 A0 j+ w& @6 b! D " v' Y4 W( U8 i/ W 注意:startup_stm32wle5xx.s 和 startup_stm32wl55xx_cm4.s 不一样, startup_stm32wle5xx.s 中没有 C2SEV_PWR_C2H_IRQHandler, IPCC_C1_RX_IRQHandler,IPCC_C1_TX_IRQHandler 相关的配置。
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 也不一样!
因此保留原有的.icf 文件。( `! f. t; U, o# L9 ~/ j 4 e: v" `: X. j9 o6 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。! c# n! e6 o* K0 T- ^# f- s1 _ 根据编译顺序依次移植 LoRaWAN_FUOTA_WLE5CC 下的 1_Image_KMS_Blob, 1_Image_SECoreBin, 1_Image_BFU, LoRaWAN_End_Node9 |! J8 M! t+ b2 b 3.1. 移植 1_Image_KMS_Blob 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_KMS_Blob, 按 ALT+F7 打开 Options 配置。5 q& g2 d# e+ {4 J5 M- l$ B; b* r
3.2. 移植 1_Image_SECoreBin : ?$ ~, ~* o: h& v 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin, 按 ALT+F7 打开 Options 配置。& [( [3 L5 t& V% V
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 目录下 。5 H) X& }+ o9 u; f3 @: c& R $ V! a. J& l& m0 i# w 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin,按 ALT+F7 打开 Options 配置。
3.4. 移植 LoRaWAN_End_Node. \! \4 i' V- N5 ^ 复制 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 目录下。 ^6 S7 ?6 K/ I8 |2 b ; s2 T ?% j, l 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin,按 ALT+F7 打开 Options 配置。
修改代码如下
3.5. 移植 disable_security.bat STM32WLE5CC 的 OptionBytes 中没 C2BOOT_LOCK,HDPAD,SUBGHSPISD, SNBRSA,SBRSA,SBRV,因此注释掉 LoRaWAN_FUOTA_WLE5CC\Scripts\disable_security.bat 这些 Option 的设置。, c5 I: r1 s4 G: y2 I. s- [
3.6. 配置 setenv.bat ! G b E' K! K0 ?$ j: _: h 在 LoRaWAN_FUOTA_WLE5CC\Scripts\setenv.bat 中配置 CUBEPROG_EXE, EWARM_EXE,MDK_EXE,CUBEIDE_EXE 的正确路径。 + F# _# G( E0 t0 d4 M4 {0 v- b% f" q / @$ R, l8 c; ]2 j 04编译" F; W, r& u1 B$ @# @; B4 i! | O 可在 LoRaWAN_FUOTA_WLE5CC\Scripts\EWARM\build.bat 编译 LoRaWAN_End_Node 之后加个 “pause”命令,查看编译 log。9 e* d, v/ N& [6 x6 t/ i U" A
05下载 通过 STLink 连接 STM32WLE5CC 的板子到 PC 上,运行 program.bat 即可下载LoRaWAN_End_Node\EWARM\Binary\BFU_LoRaWAN_End_Node.bin 到 flash 的 0x08000000 处。/ {: W' ]$ W' L/ _2 e# E 0 H! z! c9 X1 }- } 06运行 下载完 BFU_LoRaWAN_End_Node.bin 之后,将 STM32WLE5CC 的板子重新断电再上电!至此 STM32WLE5CC 上可运行 LoRaWAN_FUOTA 了。 * Q9 ?9 Q$ D, F' U- H 07小结" F& n5 a+ h$ e8 v* V9 a' U 移植要点: 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 配置。( d" E" i0 Z. N" I0 w; F , z: j) q9 ~! z7 ^& x3 x |
【新品测评】STM32WL3R芯片测评,从点亮第一个LED到subGhz启动
STM32WLE55 无线收发功能调试记录
STM32 无线 MCU HSE 频率与启动时间精确调谐实战指南
STM32新品选型指南:WL3R、C5、H5F/E、U3B/3C5 特性解析与场景适配
【新品有奖】新品STM32WL3R:低功耗智能交互,无线遥控新选择
STM32WL3R重磅登场,把无线遥控MCU卷到新高度
告别通用内卷!STM32WL3R凭“专用”破局,开启无线遥控新时代
经验分享 | STM32WL LoRa CAD 开启实操指南:低功耗信道活动检测实现方案
兔哥心中的ST中文论坛
小白也能明白的STM32的低功耗与唤醒机制
微信公众号
手机版