STM32程式轉移方法
前言
使用ST MCU做開發的應用越來越多,ST也針對不同MCU不斷翻新在相同類別MCU上不斷演進,就出現同系列MCU程式移植問題,如果是嶄新的程式區塊搬移是相對簡單的,但如果是非常龐大模組功能不變全部移植要怎操作?這邊提供其中一種方式作為同類別轉換(L412KB 改成L432KCU6)參考
Porting 同系列 MCU
這邊因客戶需求想把專案直接轉移到不同MCU上這邊提供2種方式移植,起先有發現使用CubeIDE被鎖定所以無法直接改動
這邊因為同為L4系列只是不同款MCU因此作了以下幾步驟
到這邊stm32l412xx.h替換成stm32l432xx.h所build出來的,將bin檔燒進STM32L432進行測試可能會出現以下錯誤資訊
讀到的MCU version與期望的不符,接著MCU利用SPI向後端獲取ACK有錯誤
WARNING: MCU version mismatch (expected:00.02.06, got:D01.00.00)
ERROR: received wrong ACK type (0xFF)
ERROR: failed to read REQ_MULTIPLE_SPI ack
ERROR: failed to start the gateway
這邊參考開源軟體Semtech code for STM32L412 => https://github.com/Lora-net/sx1302_spi_usb_bridge
Flash配置可以用以下方是修改(但建議限同類型這樣轉移)
Porting 不同系列 MCU使用智能雲
這邊參考網路由F103移植到L496並follow以下大步驟操作
- Create the STM32CubeMX project file(這邊先生成要移植的MCU專案)
- Import the Gizwits configuration template
- Special processing (only for the STM32 L series low-power platforms, skip this step for other platforms)
- Generate code
- Compile and configure the project
- Port code
- Modify the code
這邊針對幾個步驟特別拉出來說明因,像第二步CubeMX可以導入原先不同MCU的參數
STM32L496ZGT6平台導入STM32F103平台的配置參數,再針對不同特殊功能自行到內部設定
再來就會使用到第三方軟體Gizwits IoT Cloud把生成檔案移植到新專案上
you need to port the relevant protocol source code (i.e. the three directories in the automatically generated STM32F103 project mentioned above: Gizwits, Hal, Utils).
然後這邊第六步就是去修改部分引用檔案EX:#include“stm32f1xx_hal.h”替換為L496ZGT平台的#include“stm32l4xx_it.h”