RISC-V MCU中文社区

【求助】 pmp例程切换usermode模式执行函数触发异常Instruction page fault

发表于 CM32M433R MCU 2024-09-23 17:27:48
0
66
0

配置pmp,spmp模块的区域范围是4G,并且权限都是rwx,在机器模式下都是正常运行的,但切换到用户模式就会触发异常Instruction page fault,这个是什么原因呢?


void JumpUserMode(uint32_t func)
{
	__RV_CSR_WRITE(CSR_MSCRATCH, sMachineModeStack + MACHINE_MODE_STACK_SIZE);
	__RV_CSR_CLEAR(CSR_MSTATUS, MSTATUS_MPP);
	__RV_CSR_WRITE(CSR_MEPC, func);
	__ASM  volatile ( "mret ");
}
/**
 * @brief Main function
 */
int main(void) {
	/* System Clocks Configuration */
	PMP_Config();
	JumpUserMode((uint32_t)Led);
	while (1) {
            LedBlink(LED2_PORT, LED2_PIN);
	    delay_ms(1000);
	}
}


喜欢0
用户评论
yuxin

yuxin 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板