關注了這個概念有些日子了,這段時間總算有機會實戰==網路公升級應用韌體,這裡記錄下遇到的問題,及解決方案。
原理與網上流傳的串列埠作為傳輸手段 一致;不同之處,無非我這裡使用了網路裝置傳輸。==(lwip)tftp客戶端的應用.
參考:iar環境下stm32+iap方案的實現
stm32**之iap.pdf
基於iap和keil mdk的遠端公升級設計
keil mdk中如何生成*.bin格式的檔案
__set_msp(*(__io uint32_t*) user_flash_first_page_address);
#define user_flash_first_page_address 0x08009000
需要兩處的更改,不然錯誤未知
irom設定如圖:
中斷向量表偏移:
nvic_setvectortable(nvic_vecttab_flash,vectortable_offset);
其中:
#define nvic_vecttab_flash ((uint32_t)0x08000000)
#define vectortable_offset 0x9000
void nvic_setvectortable(uint32_t nvic_vecttab, uint32_t offset);
void systeminit (void);
scb->vtor = flash_base | vect_tab_offset;
1、如需要.hex檔案轉.bin,參見上邊的文章
當然,就算使用.hex檔案,同樣可以公升級,只是需要修改iap中判定已經公升級的檔案是否有效,檔案條件部分的**,
if(((*(__io uint32_t*)user_flash_first_page_address) & 0x2ffe0000 ) == 0x20000000)
STM32 IAP公升級工具
1 內部包含了crc mode的檢驗 2 檔案包含了頭尾 長度的資料,確保公升級操作的可靠性 3 win32串列埠查詢功能getseriallist 4 regkey.open hkey local machine,t hardware devicemap serialcomm key read e...
STM32 iap移植筆記
對於大多數基於 flash 的系統而言,在最終產品中安裝之後,能夠對韌體進行更新,這一點非常重要。這一功能被稱為在應用中程式設計 iap stm32f4xx 微控制器能夠執行使用者指定的韌體,從而執行微處理器內建 flash 的 iap。借助這一特性,在重新程式設計過程中可以使用任意型別的通訊協議。...
stm32 IAP程式燒寫方案
1 使用jlink,jtag等 器 這種方式簡單快捷 2 使用系統自帶bootloader,isp,這種方式需要更改stm32boot0 boot1引腳,以更改啟動方式。1 系統上電 2 bootloader引導程式 3 等待10s鍾以等待串列埠傳送程式 4 若串列埠傳送過來程式,此時更新程式 將接...