modify the content of kernel/int.md

This commit is contained in:
Yan_yan 2020-11-10 10:38:25 +08:00
parent f944a669ba
commit c4ecc9d04a
9 changed files with 8 additions and 8 deletions

View File

Before

Width:  |  Height:  |  Size: 209 KiB

After

Width:  |  Height:  |  Size: 209 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

View File

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 147 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -55,7 +55,7 @@
+ mstatus(Machine Status Register):机器模式状态寄存器 + mstatus(Machine Status Register):机器模式状态寄存器
mcause寄存器的Exception Code域标识是何种异常或者何种中断。定义如下图表格所示 mcause寄存器的Exception Code域标识是何种异常或者何种中断。定义如下图表格所示
![XiUOS EXCEPTION TABLE](/images/int_exception_table.png) ![XiUOS EXCEPTION TABLE](./imagesrc/int_exception_table.png)
+ 退出异常时需要从异常服务程序中退出并返回主程序。RISC-V架构定义了一组专门的退出异常指令MRET、SRET、URET分别对应机器模式、监督模式、用户模式的退出。 + 退出异常时需要从异常服务程序中退出并返回主程序。RISC-V架构定义了一组专门的退出异常指令MRET、SRET、URET分别对应机器模式、监督模式、用户模式的退出。
以MRET为例当处理器执行MRET指令后硬件行为如下 以MRET为例当处理器执行MRET指令后硬件行为如下
@ -80,7 +80,7 @@ CLINT 的全称为处理器核局部中断控制器Core Local Interrupts Cont
PLIC 全称为平台级别中断控制器Platform Level Interrupt Controller它是 RISC-V架构标准定义的系统中断控制器主要用于多个外部中断源的优先级仲裁。 PLIC 全称为平台级别中断控制器Platform Level Interrupt Controller它是 RISC-V架构标准定义的系统中断控制器主要用于多个外部中断源的优先级仲裁。
RISC-V中断控制器如下图所示 RISC-V中断控制器如下图所示
![XiUOS RISC-V CONTROLLER](/images/int_riscv_controller.png) ![XiUOS RISC-V CONTROLLER](./imagesrc/int_riscv_controller.png)
@ -98,12 +98,12 @@ cortex-M提供了一个异常响应系统支持为数众多的系统异常和
### 异常处理机制 ### 异常处理机制
cortex-M支持的异常如下表所示 cortex-M支持的异常如下表所示
![ARM CORTEX-M EXCEPTION](/images/arm_exception_table.png) ![ARM CORTEX-M EXCEPTION](./imagesrc/arm_exception_table.png)
表格中的SVCall异常属于系统服务调用用于产生系统函数的调用请求该异常必须得到响应例如操作系统不让用户程序直接操作硬件通过一些系统服务函数发出SVC请求触发一个SVC异常然后通过SVC异常服务程序执行 表格中的SVCall异常属于系统服务调用用于产生系统函数的调用请求该异常必须得到响应例如操作系统不让用户程序直接操作硬件通过一些系统服务函数发出SVC请求触发一个SVC异常然后通过SVC异常服务程序执行
PendSV异常属于可悬挂系统调用它可以像普通中断一样被悬起典型应用是提供线程切换服务。 PendSV异常属于可悬挂系统调用它可以像普通中断一样被悬起典型应用是提供线程切换服务。
![ARM PENSV EXAMPLE](/images/arm_pensv_example.png) ![ARM PENSV EXAMPLE](./imagesrc/arm_pensv_example.png)
1. 任务 A 呼叫 SVC 来请求任务切换(例如,等待某些工作完成) 1. 任务 A 呼叫 SVC 来请求任务切换(例如,等待某些工作完成)
2. OS 接收到请求,做好上下文切换的准备,并且 pend 一个 PendSV 异常。 2. OS 接收到请求,做好上下文切换的准备,并且 pend 一个 PendSV 异常。
@ -120,7 +120,7 @@ PendSV异常属于可悬挂系统调用它可以像普通中断一样被悬
### 中断类型 ### 中断类型
![ARM INT TYPE](/images/arm_int_type.png) ![ARM INT TYPE](./imagesrc/arm_int_type.png)
NVIC共支持1到240个外部中断输入IRQs。另外 NVIC还支持一个不可屏蔽输入中断除了包含控制寄存器和中断控制逻辑外还包含了MPU的控制寄存器、systick定时器以及调试控制。 NVIC共支持1到240个外部中断输入IRQs。另外 NVIC还支持一个不可屏蔽输入中断除了包含控制寄存器和中断控制逻辑外还包含了MPU的控制寄存器、systick定时器以及调试控制。
@ -128,7 +128,7 @@ NVIC共支持1到240个外部中断输入IRQs。另外 NVIC还支持一
### 中断控制器 ### 中断控制器
cortex-M系列包含一个NVIC嵌套中断向量控制器提供硬件嵌套中断服务。在中断发生时NVIC自动取出对应的服务例程入口地址并且直接调用无需软件判定中断源。另外M系列包含一个基本的systick定时器配合NVIC工作用于系统计数。NVIC控制器如下图所示 cortex-M系列包含一个NVIC嵌套中断向量控制器提供硬件嵌套中断服务。在中断发生时NVIC自动取出对应的服务例程入口地址并且直接调用无需软件判定中断源。另外M系列包含一个基本的systick定时器配合NVIC工作用于系统计数。NVIC控制器如下图所示
![NVIC CONTROLLER](/images/arm_nvic_controller.jpg) ![NVIC CONTROLLER](./imagesrc/arm_nvic_controller.jpg)
<span id="riscv_int_process"></span> <span id="riscv_int_process"></span>
@ -141,7 +141,7 @@ cortex-M系列包含一个NVIC嵌套中断向量控制器提供硬件嵌
<center> <center>
![XiUOS ISR](/images/int_isr.png) ![XiUOS ISR](./imagesrc/int_isr.png)
</center> </center>
@ -153,7 +153,7 @@ CPU响应中断并进行处理通常经历以下过程保存当前线程
<center> <center>
![XiUOS PROCESS](/images/int_process.png) ![XiUOS PROCESS](./imagesrc/int_process.png)
</center> </center>