IAP公升級初識

2021-09-23 07:56:00 字數 1206 閱讀 5008

關注了這個概念有些日子了,這段時間總算有機會實戰==網路公升級應用韌體,這裡記錄下遇到的問題,及解決方案。 

原理與網上流傳的串列埠作為傳輸手段 一致;不同之處,無非我這裡使用了網路裝置傳輸。==(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)

深入談談IAP公升級 2013 03 25

最近做過51 iap和arm iap公升級,感覺到他們的相同點和不同點,特記錄如下 共同點 做好iap的關鍵都是中斷向量的對映 remap 問題 一般都分為bootloader區和使用者區 不同點 微控制器的中斷向量位置是固定的,位於0x0000的底部。arm的中斷向量也一般是在0x0000的底部,...

IAP公升級的注意事項

如果在iap中沒有使用中斷,那麼跳轉前只需要對照iap外設的初始部分,逐個deinit 關閉時鐘即可。如果在iap中使用到了中斷,那麼需要做以下部分 在nvic中關閉外設對應的中斷使能 nvic disableirq 尤其注意systick的中斷使能ll systick disableit dein...

STM32 IAP公升級工具

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