CH32V103 關(guān)閉優(yōu)化后,讀FLASH硬件故障?

正常優(yōu)化體積,沒(méi)問(wèn)題。? 但是調(diào)試發(fā)現(xiàn)有部分地方觀察不到,于是關(guān)閉優(yōu)化。


結(jié)果報(bào)硬件故障中斷,調(diào)試發(fā)現(xiàn)是讀FLASH的時(shí)候觸發(fā)的。 簡(jiǎn)簡(jiǎn)單單幾行代碼,只讀,沒(méi)有寫(xiě)的操作,怎么會(huì)觸發(fā)中斷呢?

void?Read_ConfigData(void)
{
????ConfigInfo.iMaxVoltage?=?*(u32?*)(FLASH_POWERDATA_ADDR);
????ConfigInfo.iMaxCurrent?=?*(u32?*)(FLASH_POWERDATA_ADDR+0x04);
????ConfigInfo.iTime1?=?*(u32?*)(FLASH_POWERDATA_ADDR+0x08);
????ConfigInfo.iTime2?=?*(u32?*)(FLASH_POWERDATA_ADDR+0x0B);

	if(0xFFFF?==?ConfigInfo.iMaxVoltage)
	{
	????InitPowerInfo();
	}
}



熱門(mén)產(chǎn)品 : USB3.0 HUB控制器:CH634

您好,仿真時(shí)不建議代碼中有flash操作,因?yàn)樯婕癴lash操作會(huì)有對(duì)flash上鎖,影響仿真。至于關(guān)閉優(yōu)化為什么會(huì)報(bào)hardfault中斷,可以看一下mepc??mcause??mtval幾個(gè)寄存器看看是啥值,mepc可以定位出錯(cuò)的位置,mcause可以查看出錯(cuò)的原因,mtval可以查看引起出錯(cuò)的值。可以直接調(diào)用函數(shù)查看這幾個(gè)寄存器的值,如下圖。關(guān)于這幾個(gè)寄存器的具體介紹,可參考我們

QingKeV4 微處理器手冊(cè),下載鏈接如下:


image.png



mepc=6700, HEX,1A2C 對(duì)應(yīng)代碼段,剛好是我最后一句讀Flash的操作。

28????????????ConfigInfo.iTime2?=?*(u32?*)(FLASH_POWERDATA_ADDR+0x0B);
00001a26:???lui?????a5,0x800e
00001a2a:???addi????a5,a5,11
00001a2c:???lw??????a5,0(a5)

mcause=4? ?斷點(diǎn)?

mtval = 0x800e00b? ?這個(gè)就不知道啥意思了。?



我剛試了下,關(guān)閉優(yōu)化是要報(bào)。 但是選其它優(yōu)化,哪怕是調(diào)試優(yōu)化,程序也能正常運(yùn)行。? 對(duì)實(shí)際卻是沒(méi)啥影響,可以不用管。


您好,mepc表示異常的返回地址;mcause表示異常的原因,4表示下載地址錯(cuò)位,不對(duì)齊;mtval表示引起異常的存儲(chǔ)器訪問(wèn)地址或指令編碼,即0x800e00b這個(gè)地址不對(duì)齊。原因應(yīng)該是你用32位指針訪問(wèn)一個(gè)不是四字節(jié)對(duì)齊的地址,導(dǎo)致異常,你可以按照下圖修改試一下。

image.png


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

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