void?SW_Handler(void) { ??typedef?void?(*jump_func_t)(void); ??jump_func_t?jmp?=?(jump_func_t)FLASH_AREA_BLD_SIZE;//FLASH_AREA_APP_SADDR ??jmp(); ?? }
論壇已經(jīng)搜索過IAP相關帖子,也有搜索到相關例程。
上述代碼,F(xiàn)LASH_AREA_BLD_SIZE是0x8000,F(xiàn)LASH_AREA_APP_SADDR是0x08000000+FLASH_AREA_BLD_SIZE。
如果用FLASH_AREA_BLD_SIZE是可以跳轉(zhuǎn)成功的,但是FLASH_AREA_APP_SADDR就無法成功跳轉(zhuǎn)。這是什么問題?在其他帖子上看到回復,使用絕對地址和映射地址上一樣的。但是實際上就不行。這是什么問題?
如果用FLASH_AREA_APP_SADDR的時候,匯編是這樣的:
???0x2b6?:??lui?????a6,0x8008 ???0x2ba?:????????jr??????a6 ???0x2bc?:????????j???????0x2bc?