從下圖的datasheet上看,Code FLASH地址應(yīng)該是從0x0800 0000開始的區(qū)間,但是從IAP的demo程序代碼看,自己編寫的Bootloader應(yīng)該是向0x0000 3000跳轉(zhuǎn)去運(yùn)行固件,也就是Code FLASH地址好像是從0x0000 0000開始的區(qū)間。
void SW_handler(void)
{
? ? //jump? UserCode
? ? __asm("li? a6, 0x3000");
? ? __asm("jr? a6");
? ? while(1);
}
我的問題是:我在自己編寫的Bootloader程序中,從外部SPI Flash讀取的固件數(shù)據(jù)應(yīng)該寫在哪個地址區(qū)間(假設(shè)Bootloader占用0x3000也就是12K的空間)?是0x0800 3000開始還是0x0000 3000開始?我現(xiàn)在發(fā)現(xiàn)如果往0x0000 3000開始的地址去寫,調(diào)用FLASHStatus = FLASH_ErasePage(0x0000 3000)函數(shù)根本就擦除不了,雖然獲得的FLASHStatus值是等于FLASH_COMPLETE。而如果我換成FLASHStatus = FLASH_ErasePage(0x0800 3000),擦除完后我讀數(shù)據(jù)發(fā)現(xiàn)都是0xE339……之類的值,并不是預(yù)期的0xFFFFFFFF,所以也不知道這種情況正不正常。還望指教,謝謝!