STM32 IAP公升級韌體 上位機 例程

2021-10-05 13:05:44 字數 1375 閱讀 2658

本例程實現功能:

一、iap公升級簡單介紹

基本原理不做贅述,參見:

兩種方式:

方式2:

4、引數區域存放公升級標誌以及其他引數

本例程採用方式二公升級

二、韌體程式

stm32f103cbt6晶元使用hal庫開發

1、flash區域劃分

分割槽大小

扇區位址

iap10k

0-90x08000000-0x080027ff

58k10-57

0x08002800-0x08010fff

58k58-126

0x08011000-0x0801f7ff

引數區2k

127-128

0x0801f800-0x0801ffff

2、iap程式開發

根據需求,iap程根據引數區標誌位判定是否要公升級,只需要完成flash讀寫即可,為方便除錯附帶串列埠列印功能;

程式例程:

//跳轉到應用程式段

}

; flash_erasesector(10,67);

for(i = 0;i < 58;i++)

}int main(void)

}/* user code end 3 */

}

程式主流程:串列埠接收資料報(1024byte)直接寫入flash(58扇區開始,往後寫),為方便方便理解移植,本demo接收16k檔案然後重啟。(正式版本可以通過通訊協議控制

void iap_writebin(int ii,uint8_t *pbuff,uint32_t len)

; //擦除download扇區

flash_erasesector(68+ii,68+ii+1);

//寫入程式

flash_writepage(68+ ii,pbuff);

if (ii > 15)

}void cmdprocess()

if(g_rx485_len)

}

三、上位機程式

使用qt進行開發

1、載入bin檔案

2、串列埠操作

本例程原始碼:

STM32 IAP公升級工具

1 內部包含了crc mode的檢驗 2 檔案包含了頭尾 長度的資料,確保公升級操作的可靠性 3 win32串列埠查詢功能getseriallist 4 regkey.open hkey local machine,t hardware devicemap serialcomm key read e...

STM32 IAP方案 實現網路公升級應用韌體

關注了這個概念有些日子了,這段時間總算有機會實戰 網路公升級應用韌體,這裡記錄下遇到的問題,及解決方案。原理與網上流傳的串列埠作為傳輸手段 一致 不同之處,無非我這裡使用了網路裝置傳輸。lwip tftp客戶端的應用.參考 iar環境下stm32 iap方案的實現 stm32 之iap.pdf 基於...

STM32的IAP韌體公升級

an2606 system memory boot mode an3155 usart for bootloader 指令集詳解 an2557 iap using usart 將0x08000000開始的main memory空間劃分為兩部分,其中低位址空間用於儲存iap driver,剩餘空間用於...