遇到一個奇葩的問題:CH32V203C8T6做IAP程序,一下載就死機(jī)。

此芯片共64K Flash,分區(qū)如下:

//0x08000000 - 0x08007800 : IAP - 30K - bootloader

//0x08007800 - 0x0800F800 : APP - 32K - 儲存本ROM運行內(nèi)容

//0x0800F800 - 0x08010000 : DAT - 2K -? 用戶數(shù)據(jù)


在IAP的程序里面,在下載之前會先清掉原來的APP部分程序:

? ? //save to the location

? ? FLASH_Unlock_Fast();

? ? FLASH_EraseBlock_32K_Fast(0x08007800);

? ? FLASH_Lock_Fast();

------------------------
非常奇怪,一運行到這行??FLASH_EraseBlock_32K_Fast(0x08007800)就死機(jī)了。
而且下面的回調(diào)沒有被執(zhí)行,只能強(qiáng)制斷電才能恢復(fù)。

void HardFault_Handler(void)

{

? ? printf("mepc? :%08x\r\n", __get_MEPC());

? ? printf("mcause:%08x\r\n", __get_MCAUSE());

? ? printf("mtval :%08x\r\n", __get_MTVAL());

? ? while(1);

}


注:IAP的編輯的信息

image.png

IAP的fd信息

FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 64K

RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K


IAP設(shè)置跳轉(zhuǎn)的信息:

void SW_Handler(void)

{

? ? printf("start user APP\r\n");

? ? __asm("li? a6, 0x7800");

? ? __asm("jr? a6");

? ? while(1);

}


但使用相同思想,在CH32V307上沒有問題(已經(jīng)量產(chǎn)了)。


您好,目前從提供信息沒看出什么問題,若方便可將可復(fù)現(xiàn)問題的工程發(fā)我郵箱(lzs@wch.cn)具體看一下。解鎖擦除之后,可在寫入完成后再上鎖,可將32K字節(jié)的擦除換成256字節(jié)擦除試一下,具體可參考EVT IAP例程中的擦寫方式;注意一下程序中系統(tǒng)主頻的大小設(shè)置,若設(shè)置為144MHz的話,注意進(jìn)行一下2分頻,如下圖。此外,可單步調(diào)試看一下具體是卡死在哪個位置。

image.png


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频