CH32V208基于TencentOS如何定位hardfault問(wèn)題?

將原來(lái)的裸機(jī)程序移植到TencentOSTiny之后,總是會(huì)hardfault,通過(guò)調(diào)試,能定位到是哪個(gè)線(xiàn)程,不過(guò)那部分代碼經(jīng)過(guò)精簡(jiǎn),而且增大了堆棧,還是會(huì)出現(xiàn)。而調(diào)試的時(shí)候堆棧也沒(méi)有正常顯示哪里出問(wèn)題。以前用Cortex-M加RT-thread倒是知道怎么通過(guò)PSP定位問(wèn)題,RISC-V不熟悉,看來(lái)一下青稞的文檔,還是不太會(huì)。知道涉及這幾個(gè)寄存器,但是mepc不像有效地址。始終定位不到問(wèn)題所在。

mepc0xaceadd18 (Hex)

mscratch0x4202273e (Hex)

mcause2

mtval0

mtvec0x3b (Hex)

mstatus0x1888 (Hex)

WX<span class='label label-success'>個(gè)人信息保護(hù),已隱藏</span>


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

WX<span class='label label-success'>個(gè)人信息保護(hù),已隱藏</span>

static?void?_cc_entry(void?*arg)
{
????????uint16_t?inval;
????????int?i;
????????while(1)
????????{
????????????tos_task_delay(tos_millisec2tick(10));
????????????inval?=?GPIO_ReadInputData(GPIOB);
????????????for?(i?=?0;?i?<?5;?++i)
????????????{
????????????????if(inval?==?0)
????????????????{
????????????????????inval?=?GPIO_ReadInputData(GPIOB);
????????????????}
????????????}
????????}
}

比較迷惑的是,這個(gè)線(xiàn)程已經(jīng)是很簡(jiǎn)單的了。搞不懂。這個(gè)用4096還是2048的堆棧都是會(huì)hardfault。另一個(gè)netlib的倒沒(méi)出現(xiàn)問(wèn)題。


還有就是,我看rtos里面中斷用的修飾沒(méi)有帶"WCH-Interrupt-fast",是否RTOS下所有中斷都不能帶這個(gè)?



您好,首先若你使用MCU為CH32V208系列的話(huà),注意一下啟動(dòng)文件、ld文件以及相關(guān)宏定義的配置,如下圖1。其次,若你將mstatus寄存器的值設(shè)置為0x1888時(shí),表示配置在機(jī)器模式下,中斷聲明方式采用軟件壓棧的聲明方式,可參考下圖2。后續(xù)若有問(wèn)題,可通過(guò)郵箱(lzs@wch.cn)和我溝通。

image.png

圖1

image.png

圖2


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

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