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 中某一个位,可将与该位对应的异常或中断委托给管理员模式或用户式处理。esp32 c3智能音箱模块乐鑫代理商设置管理员模式下 sedeleg 和 sideleg 寄存器中某一位,可将与该位对应异常或中断委托给用户模式处理。在支持管理员模式的系统中,必须拥有 medele和mideleg 寄存器,而 sedeleg 和 sideleg 寄存器只存在于同时实现了用户模式中断和N扩展的系统中。
无论怎样设置中断和异常委托寄存器,发生异常时的控制权都不会移交给比当前级别更低的特权模式。在机器模式下发生的异常总是在机器模式下处理。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位。