diff --git a/docs/doc/kernel/int.md b/docs/doc/kernel/int.md index 31bf11a..ea35cc9 100644 --- a/docs/doc/kernel/int.md +++ b/docs/doc/kernel/int.md @@ -6,14 +6,14 @@ * [异常处理机制](#riscv_exception) * [中断类型](#riscv_int_type) * [中断控制器](#riscv_int_controller) - * [中断处理机制](#riscv_int_process) - * [中断服务程序](#riscv_int_service) - * [中断处理流程](#riscv_int_process2) * [ARM CORTEX-M架构的中断和异常](#arm_interrupt) * [概述](#arm_interrupt_intro) * [异常处理机制](#arm_interrupt_process_mechnism) * [中断类型](#arm_int_type) * [中断控制器](#arm_int_controller) +* [中断处理机制](#riscv_int_process) + * [中断服务程序](#riscv_int_service) + * [中断处理流程](#riscv_int_process2) * [中断函数接口](#riscv_int_api) * [使用场景](#situation) @@ -82,32 +82,7 @@ RISC-V中断控制器如下图所示: ![XiUOS RISC-V CONTROLLER](/images/int_riscv_controller.png) - - -### 中断处理机制 - - - -#### 中断服务程序 -每一个中断源对应一个中断号,每一个中断号又通过中断向量表和中断服务程序进行关联。当中断产生后,通过中断向量表跳转到中断服务程序的入口地址进行执行。如下图所示: - -
- -![XiUOS ISR](/images/int_isr.png) - -
- - - -#### 中断处理流程 -CPU响应中断并进行处理,通常经历以下过程:保存当前线程的栈信息、跳转中断服务程序运行、恢复被打断的线程栈继续运行。 -如下图所示: - -
- -![XiUOS PROCESS](/images/int_process.png) - -
+ @@ -155,6 +130,32 @@ NVIC共支持1到240个外部中断输入(IRQs)。另外 ,NVIC还支持一 cortex-M系列包含一个NVIC(嵌套中断向量控制器)提供硬件嵌套中断服务。在中断发生时,NVIC自动取出对应的服务例程入口地址,并且直接调用,无需软件判定中断源。另外M系列包含一个基本的systick定时器,配合NVIC工作,用于系统计数。NVIC控制器如下图所示: ![NVIC CONTROLLER](/images/arm_nvic_controller.jpg) + + +### 中断处理机制 + + + +#### 中断服务程序 +每一个中断源对应一个中断号,每一个中断号又通过中断向量表和中断服务程序进行关联。当中断产生后,通过中断向量表跳转到中断服务程序的入口地址进行执行。如下图所示: + +
+ +![XiUOS ISR](/images/int_isr.png) + +
+ + + +#### 中断处理流程 +CPU响应中断并进行处理,通常经历以下过程:保存当前线程的栈信息、跳转中断服务程序运行、恢复被打断的线程栈继续运行。 +如下图所示: + +
+ +![XiUOS PROCESS](/images/int_process.png) + +