|
01需求分析 2 ?- S7 m- H- o9 p# J0 U r 最近有些客户需要在 STM32WL55 实现 LoRaWAN FUOTA 功能,LoRaWAN_FUOTA 默认是基于双核 STM32WL55JC,由于成本考虑客户需要用 STM32WLE5CC,客户咨询如何移植?6 j+ H% z( r. _: T# x0 t1 X* ? . ]1 h$ B! {5 {, X9 \; B! C 02问题描述 3 `8 H7 `! q( t4 j' i" ?6 R 以下移植是基于 IAR IDE 和 STM32Cube_FW_WL_V1.3.0,复制 STM32Cube_FW_WL_V1.3.0\Projects\NUCLEO-WL55JC\Applications 下的 LoRaWAN_FUOTA 为 LoRaWAN_FUOTA_WLE5CC。 q# ~& j' F' y7 Q5 C+ R* ?: ~ 先分析基于 STM32WL55JC 的 LoRaWAN_FUOTA 。 . p% h `9 X& V' Z; J LoRaWAN_FUOTA 下的 1_Image_KMS_Blob 和 1_Image_SECoreBin 仅有 icf 文件,没有.s 文件。LoRaWAN_FUOTA 下的 1_Image_BFU 和 LoRaWAN_End_Node 都有.icf 和.s 文件。 6 G+ {2 {0 M& P" W7 t! @ 2.1. 对比.s 文件(两个都一样)2 }/ R; c! h: M. I LoRaWAN_FUOTA\LoRaWAN_End_Node\EWARM\startup_stm32wl55xx_cm4.s 和LoRaWAN_FUOTA\1_Image_BFU\EWARM\startup_stm32wl55xx_cm4.s 是一样的!" y, M* _3 ?- w, y# c+ h LoRaWAN_FUOTA\LoRaWAN_End_Node 和LoRaWAN\LoRaWAN_End_Node 的startup_stm32wl55xx_cm4.s 是相同的!" ~$ ^. [) P5 h, _2 B7 B. [ - H. n$ U8 \/ E3 p; G5 m EWARM\startup_stm32wl55xx_cm4.s 和 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wl55xx_c m4.s 是一样的!5 }# b* N5 d3 R& g( h7 ]) c" Y $ q f4 F4 K+ Q0 r, a& A 所以 STM32WLE5 的.s 可使用 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wle5xx.s 4 t6 K; |! j# m; T 所以,可复制 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 相关的配置。1 R6 x" T6 A) s8 G$ U% L0 @
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 文件。: k; Q3 @, _6 q. K9 x3 I. g/ K$ E ( c$ {" ^0 \; j, j, n 03移植- | U# H6 @+ 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 y) U4 U* b2 n3 W 根据编译顺序依次移植 LoRaWAN_FUOTA_WLE5CC 下的 1_Image_KMS_Blob, 1_Image_SECoreBin, 1_Image_BFU, LoRaWAN_End_Node4 W( Z" q% T' T s * v/ c. h0 _2 Y/ x5 L. H7 t 3.1. 移植 1_Image_KMS_Blob8 G; z5 E Y+ j6 v 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_KMS_Blob, 按 ALT+F7 打开 Options 配置。
3.2. 移植 1_Image_SECoreBin , h4 u& y' O0 u 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin, 按 ALT+F7 打开 Options 配置。
3.3. 移植 1_Image_BFU/ e% h6 j1 B% r, N% 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 目录下 。( L8 d. k& H' J- }; h- v/ W" l) v 5 B ^% M% u$ I( s. O/ L g+ |1 z 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin,按 ALT+F7 打开 Options 配置。
3.4. 移植 LoRaWAN_End_Node3 C5 T9 D! H/ ]; ] 复制 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 目录下。 8 h- H4 C& }6 b- O1 u/ O$ ^. ` 打开,选中 Project-STM32WL55JC_Nucleo_1_Image_SECoreBin,按 ALT+F7 打开 Options 配置。- P( i& B4 Z/ [) Z/ J: H6 o; G
修改代码如下9 ?4 f, `6 |$ b8 Q% w- U0 X
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 9 z3 \, ?% t2 w! [: J- I; D 在 LoRaWAN_FUOTA_WLE5CC\Scripts\setenv.bat 中配置 CUBEPROG_EXE, EWARM_EXE,MDK_EXE,CUBEIDE_EXE 的正确路径。 0 u. h6 r) d" e8 D! ? 3 L7 t/ E" y, h( L! g& ? 04编译: m7 Z% o* F. }9 k7 i" b$ d; T 可在 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 处。 0 o0 @8 _+ E( e" {- l# m( v 06运行 I3 m, t) y; C( [. W& ] 下载完 BFU_LoRaWAN_End_Node.bin 之后,将 STM32WLE5CC 的板子重新断电再上电!至此 STM32WLE5CC 上可运行 LoRaWAN_FUOTA 了。7 _5 k" t# h' w4 q$ r2 ^ 07小结) }" _1 y" P/ t4 ]# Y 移植要点: 1. 使用 STM32Cube_FW_WL_V1.3.0 \Drivers\CMSIS\Device\ST\STM32WLxx\Source\Templates\iar\startup_stm32wl55xx_ cm4 6 I1 L8 c% }4 K" ` 2. 保持原有的.icf 文件 ' s* o$ b% S1 y" V t 3. 通过 IDE 修改 Device 由 ST STM32WL55JC 改为 ST STM32WLE5CC,将宏定义 4. STM32WL55XX 改为 STM32WLE5XX 5. 注释掉或删除 Scripts\disable_security.bat 中的 C2BOOT_LOCK,HDPAD, SUBGHSPISD,SNBRSA,SBRSA,SBRV 的 OtionBytes 配置。 |
【新品测评】STM32WL3R芯片测评,从点亮第一个LED到subGhz启动
STM32WLE55 无线收发功能调试记录
STM32 无线 MCU HSE 频率与启动时间精确调谐实战指南
STM32新品选型指南:WL3R、C5、H5F/E、U3B/3C5 特性解析与场景适配
【新品有奖】新品STM32WL3R:低功耗智能交互,无线遥控新选择
STM32WL3R重磅登场,把无线遥控MCU卷到新高度
告别通用内卷!STM32WL3R凭“专用”破局,开启无线遥控新时代
经验分享 | STM32WL LoRa CAD 开启实操指南:低功耗信道活动检测实现方案
兔哥心中的ST中文论坛
小白也能明白的STM32的低功耗与唤醒机制
微信公众号
手机版