esp32 c3智能音箱模塊樂鑫代理商RISC-V機器模式異常管理寄存器,RISC-V 處理器內核中與機器模式異常相關的 CSR 寄存器列表。其中列出了處理器中與機器模式異常和中斷管理相關的 10個 CSR 寄存器。
RISC-V 與機器模式異常相關的 CSR 寄存器
符號 名稱 功能描述 CSR 空間地址
mstatus 機器模式狀態寄存器 Machine Status Register 寄存器中MIE 和MPIE用于中斷全局使能 0x300
medeleg 機器模式異常委托寄存器 Machine Exception Delegation Register 將異常委托給管理員模式 0x302
mideleg 機器模式中斷委托寄存器 Machine Interrupt Delegation Register 將中斷委托給管理員模式 0x303
mie "機器模式中斷使能寄存器
Machine Interrupt Enable Register" 內核中斷使能 0x304
mtvec 機器模式異常入口基地址寄存器 Machine Trap-Vector Based-Address Register 中斷向量表基地址,進入異常的PC地址 0x305
mepc 機器模式異常 PC寄存器 Machine Exception Program Counter 保存異常返回地址 0x341
mcause 機器模式異常原因寄存器 Machine Cause Register 保存異常類型和編碼 0x342
mtval 機器模式異常值寄存器 Machine Trap Value Register 保存異常的附加信息 0x343
mip 機器模式中斷狀態寄存器 Machine Interrupt Pending Register 中斷狀態 0x344
mscratch 臨時寄存器 Machine Scratch 暫時存放一個字大小的數據 0x340
1.機器模式狀態寄存器(mstatus)
mstatus 用于機器模式下控制和跟蹤處理器內核(Hart)的運行狀態,esp32 c3智能音箱模塊樂鑫代理商管理員模式下與之對應的寄存器是 sstatus,用戶模式下與之對應的寄存器是 ustatus。mstatus、sstatus 和 ustatus 在 CSR 空間的地址不同。RV32 架構 mstatus 寄存器中與中斷處理相關的內容,包括 MIESIE、UIE、MPIE、SPIE、UPIE、SPP 位和MPP[1:0]域。對于 RV64,mstatus 寄存器為64 位。
MIE、SIE 和 UIE 分別是機器模式、管理員模式和用戶模式中斷使能控制位。
MIE=1,打開機器模式全局中斷使能,使處理器內核能夠響應中斷請求;MIE=0,關閉機器模式全局中斷使能,esp32 c3智能音箱模塊樂鑫代理商處理器內核不響應任何中斷請求。
SIE=1,打開管理員模式全局中斷使能;SIE-0,關閉管理員模式全局中斷使能。
UIE=1,打開用戶模式全局中斷使能;UIE=0,關閉用戶模式全局中斷使能。
MPIE、SPIE、UPIE 分別是機器模式、管理員模式和用戶模式下的中斷狀態位。
發生中斷請求時,MPIE=MIE、SPIE=SIE。如果開啟中斷使能,即MIE和SIE為1,則中斷發生時MPIE和SPIE置1。
發生中斷請求時,MPP[1:0]和SPP 自動保存中斷發生前處理器內核的特權模式。在MPP[1:0]中可以保存M、S和U三種模式碼;SPP中保存S和U兩種模式碼。
2.機器模式異常和中斷委托寄存器(medeleg 和 mideleg)
對于RV32,medeleg 和 mideleg 是 32 位可讀/寫寄存器。在支持機器模式、管理員模式和用戶模式 3 種模式的 RISC-V 處理器系統中,設置機器式下 medel?;?mideleg 中某一個位,可將與該位對應的異?;蛑袛辔薪o管理員模式或用戶式處理。esp32 c3智能音箱模塊樂鑫代理商設置管理員模式下 sedeleg 和 sideleg 寄存器中某一位,可將與該位對應異?;蛑袛辔薪o用戶模式處理。在支持管理員模式的系統中,必須擁有 medele和mideleg 寄存器,而 sedeleg 和 sideleg 寄存器只存在于同時實現了用戶模式中斷和N擴展的系統中。
無論怎樣設置中斷和異常委托寄存器,發生異常時的控制權都不會移交給比當前級別更低的特權模式。在機器模式下發生的異??偸窃跈C器模式下處理。esp32 c3智能音箱模塊樂鑫代理商在管理員模式下發生的異常,根據具體的委托設置,可能由機器模式或管理員模式處理,但永遠不會由用戶模式處理。
3.機器模式中斷使能寄存器(mie)
在 RV32 架構中,mie 是 32 位寄存器,設置不同模式和類型中斷的使能狀態。
mie 寄存器結構圖其中,USIE 是用戶模式軟件中斷使能位,SSIE是管理員模式軟件中斷使能位,esp32 c3智能音箱模塊樂鑫代理商MSIE 是機器模式軟件中斷使能位,UTIE 是用戶模式定時器中斷使能位,STIE 是管理員模式定時器中斷使能位,MTIE 是機器模式定時器中斷使能位,UEIE 是用戶模式外中斷使能位,SEIE 是管理員模式外中斷使能位,MEIE 是機器模式外中斷使能位。
使能位置 1,使能與該位對應的中斷類型;使能位清 0,關閉與該位對應的中斷類型。
對于 RV64,mie 寄存器是 64 位。
管理員模式下對應的寄存器是管理員模式中斷使能寄存器(sie)。與 mie 相比sie 去除了 MEIE、MTIE 和 MSIE 位。
用戶模式下對應的寄存器是用戶模式中斷使能寄存器(uie)。與 mie 和 sie相比,uie寄存器中只有 UEIE、UTIE 和 USIE 位。
4.機器模式異常入口基地址寄存器(mtvec)
mtvec 寄存器保存異常向量表基地址。mtvec 低 2 位選擇中斷外理程序人口模式(mode),高 30 位是異常向量表基地址(base[31;2])的高 30位基地址4字節對齊。對于 RV64,mtvec 寄存器為 64位。
mode=0,查詢方式。所有中斷響應后的入口地址相同,皆為基地址(baseaddress),進入中斷處理程序后,查詢具體中斷源信息,然后根據中斷源進行相應處理。
mode=1,向量中斷模式。直接跳到向量表中與中斷源相對應的位置,獲取與該中斷源對應的中斷服務程序入口地址,執行中斷服務程序。esp32 c3智能音箱模塊樂鑫代理商在中斷向量表中,與中斷源對應的向量地址為 base address+4Xmcause[30:0]。
mode≥2,保留。
在管理員模式下,與 mtvec 對應的寄存器為管理員模式異常向量基地址寄存器(Supervisor Trap Vector Base Address Register,stvec)。
5.機器模式異常 PC寄存器(mepc)
在 RV32 架構中,mepc 是 32 位寄存器,用于保存發生異常時的 PC值,可以是有效的物理地址或虛擬地址。
當發生異常,esp32 c3智能音箱模塊樂鑫代理商處理器進入機器模式時,mepc 寄存器自動保存發生中斷或異常時指令的邏輯地址、物理地址或虛擬地址。
對于 RV64,mepc 寄存器是 64 位。
在管理員模式下,與 mepc 對應的寄存器是管理員模式異常 PC 寄存器(Supervisor Exception Program Counter,sepc)。
6.機器模式異常原因寄存器(mcause)
mcause 保存產生異常的原因,異常發生時用當前異常碼(Exception Code)自動更新該寄存器的值。RV32 架構中 mcause 寄存器結構圖。其中,高位Interrupt 表示異常類型,低 31 位是異常編碼。對于 RV64,mcause 寄存器為 64 位Interrupt=1,表示內核中斷;Interrupt=0,表示異常。
列出了RISC-V中斷相關的異常編碼,中斷類型包括軟件中斯、內核定時器中斷和外部中斷。
RISC-V 中斷異常編碼
中斷(Interrupt) 異常編碼 異常描述
軟件中斷 0 用戶模式軟件中斷
軟件中斷 1 管理員模式軟件中斷
軟件中斷 2 保留
軟件中斷 3 機器模式軟件中斷
定時器中斷 4 用戶模式定時器中斷
定時器中斷 5 管理員模式定時器中斷
定時器中斷 6 保留
定時器中斷 7 機器模式定時器中斷
外中斷 8 用戶模式外中斷
外中斷 9 管理員模式外中斷
外中斷 10 保留
外中斷 11 機器模式外中斷
保留 15 保留
保留 ≥16 保留
在管理員模式和用戶模式下,與 mcause 對應的寄存器分別為管理員模式異常原因寄存器(Supervisor Cause Register,scause),以及用戶模式異常原因寄存器User Cause Register, ucause) 。
7.機器模式異常值寄存器(mtval)
在RV32 架構中,mtval是 32 位寄存器。當發生異常進入機器模式時,mtval置零,或者寫入該異常的特定信息,以便協助軟件處理異常事件。在esp32 c3智能音箱模塊樂鑫代理商RV64 架構中,mtval 寄存器是 64 位。
在管理員模式下,與 mtval 對應的寄存器為管理員模式異常值寄存器(Supervirsor Trap Value, stval) 。
8.機器模式中斷狀態寄存器(mip)
在 RV32 架構中,mip 是 32 位寄存器,指示機器模式下的中斷狀態。
mip寄存器結構。其中,USIP 是用戶模式軟件中斷狀態位,SSIP是管理員模式軟件中斷狀態位,MSIP 是機器模式軟件中斷狀態位,UTIP 是用戶模式定時器中斷狀態位,STIP 是管理員模式定時器中斷狀態位,MTIP 是機器模式定時黑中斷狀態位,UEIP 是用戶模式外中斷狀態位,SEIP 是管理員模式外中斷狀態位,MEIP 是機器模式外中斷狀態位。
當中斷請求發生時,如果 mie 寄存器中與該中斷類型對應的使能位為 1,則 mip相應的狀態位置 1。例如,MEIE=1,當出現外中斷請求時 MEIP=1。對于 RV64,mip 寄存器是 64 位。
在管理員模式下,與 mip 對應的寄存器是管理員模式中斷狀態寄存器(sip)。與mip 相比,sip 寄存器中去除了 MEIP、MTIP 和MSIP 位。esp32 c3智能音箱模塊樂鑫代理商在用戶模式下,與 mip 對應的寄存器是用戶模式中斷狀態寄存器(uip),與 mip和 sip 相比,uip 寄存器中只有 UEIP、UTIP 和USIP位。