喜欢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);
}
}