IAP的原理和stm8的IAP

2021-10-03 16:22:07 字數 1024 閱讀 5917

一、引出(iap的原理和stm8上實現iap的問題)

因為stm32有位址偏移暫存器scb->vtor,當發生中斷時,stm32會去scb->vtor讀取中斷向量表的位址。執行上面的語句後,發生中斷時就會到flash_base | 0x4000位址去查詢中斷服務函式位址。

二、stm8的iap

讀函式、解鎖、上鎖、寫函式為:

//讀出乙個32位數

uint32_t flash_read(uint32_t address)

//解鎖flash,在寫flash前,只需要在iap中呼叫一次

void flash_unlock(flash_memtype_typedef flash_memtype)

//flash上鎖,寫完flash後,呼叫一次

void flash_lock(flash_memtype_typedef flash_memtype)

//往flash中寫入乙個8位數

void flash_programbyte(uint32_t address, uint8_t data)

//往flash中寫入乙個32位數

void flash_programword(uint32_t address, uint32_t data)

改寫iap向量表的函式為:

void stm8_handeriqr_init(void)

flash_lock(flash_memtype_prog);

}

void jpmainprogram(void)

最後:

stm8的flash很小,建議使用暫存器操作,不要用庫函式,否則不好控制**大小。

iar的swim**對於memory的支援不是很好,當呼叫上面的函式改寫flash後,從memory視窗上看可能並未改變,但實際上已經被改寫了。(本人被坑了半天)

ISP 和 IAP 工作原理

一 isp in system programming,在系統程式設計 pc 機通過串列埠把 bin hex 檔案直接燒錄到微控制器內部 flash 中,比如利用 jlink 或者 usb 轉 ttl 進行燒錄。1 在實現 iap 功能時,微控制器內部一定要有兩塊儲存區,一般一塊被稱為 boot 區...

STM32的IAP韌體公升級

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

關於STM32的IAP和flash的坑

我用的是stm32f103,正點原子的庫函式版本。剛開始用的用的是stm32c8t6,後來發現程式編譯完都有28k,flash總共64k,考慮的要iap,換了stm32cbt6,封裝都是 lqfp 48的,但是flash大一點,貴一點,咋們不差錢,免得後面不夠用 最後換了國產gd32cbt6 2k留...