CH32V103 讀取CSR寄存器的問(wèn)題

在QingKeV4_Processor_Manual文件的第30頁(yè),有描述架構(gòu)編號(hào)寄存器(marchid),讀取值為:0xDC68D886.

于是在CH32V103上嘗試讀取,調(diào)用core_riscv.c文件中的如下函數(shù):

uint32_t __get_MARCHID(void)

{

? ? uint32_t result;


? ? __ASM volatile("csrr %0,""marchid": "=r"(result));

? ? return (result);

}


__get_MARCHID(); 在程序中運(yùn)行到這個(gè)函數(shù)時(shí),似乎是卡死了。不知為何?


請(qǐng)問(wèn)在CH32V103上如何正確操作,才能讀取到架構(gòu)編號(hào)寄存器 ( marchid )的值?


您好,我們的CH32V103是青稞V3A內(nèi)核的處理器,marchid的值未進(jìn)行設(shè)定,默認(rèn)為0;

如果您想要讀取的話,因?yàn)楣俜降?/span>EVT例程默認(rèn)是工作在用戶模式下運(yùn)行的,當(dāng)對(duì)內(nèi)核的寄存器進(jìn)行訪問(wèn)的時(shí)候,需要在中斷或者機(jī)器模式下進(jìn)行,否則會(huì)進(jìn)hard fault

關(guān)于進(jìn)入機(jī)器模式的方法,在內(nèi)核手冊(cè)中有相應(yīng)的說(shuō)明,在啟動(dòng)文件startup_ch32v10x.s文件的初始化中把mstatus寄存器的MPP設(shè)置為0x3即可;相關(guān)改動(dòng)如下:

已修改好的打印MARCHIP的例程已放在附件中,可以自行下載調(diào)試。

QQ截圖20220907150020.png

icon_rar.gifCH32V103_MARCHID.zip



感謝支持! 可以讀取marchid的值啦,確實(shí)是全0.


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

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