中断控制器与处理机制详解
1. 机器外部中断处理
机器外部中断处理程序主要完成以下几个关键步骤:
1. 解码中断原因,这与机器时间处理程序中的操作相同。
2. 从PLIC(Platform-Level Interrupt Controller)的声明寄存器中读取中断源ID。
3. 通过将4乘以ID的值加到PLIC向量表的基地址上,计算出中断处理程序的地址。
4. 调用中断处理程序。
1.1 设置PLIC优先级
可以使用以下C函数来设置中断优先级:
#define PLIC_INT_PRIORITY_BASE 0x0C000000
/* Set interrupt priority
*
* Interrupt source id: 1 - 52
* Interrupt priority levels
* Bits 2:0
* 0 - never interrupt / disables interrupt
* 1 - lowest active priority
* 7 - highest priority */
void plic_set_priority ( unsigned int source , unsigned int priority ){
*(( unsigned int *) PLIC_INT_PRIORITY_BASE + source ) = priority ;
}
该函数通过向特定地址写入优先级值来设置中断源的优先级。
中断控制器与处理机制详解
超级会员免费看
订阅专栏 解锁全文
1764

被折叠的 条评论
为什么被折叠?



