insert the jump function inside page into kernel/int.md

This commit is contained in:
Yan_yan 2020-11-02 14:38:05 +08:00
parent 92db010310
commit 9bfea69e3f
2 changed files with 43 additions and 4 deletions

View File

@ -2,7 +2,7 @@
工业生产中控制逻辑的复杂程度千变万化,往往需要具体行业专业人员完成专门的设计,从而提高了行业的技术壁垒,严重阻碍了工业领域的自动化和智能化升级。
XiUOS应用程序框架中的“控”子框架从“控制需求”本身出发同时面向专业用户和非专业用户通过对“控制需求”本身和复杂的工业控制流程进行深入分析通过软件定义的方式提出以“控制”为核心的“控”制流程。具体地,本设计通过解耦复杂的工业控制流程,将工业生产中的各种复制工业控制流程分解为各种类型的“控制”命令,这些“控制”的命令以软件API的形式交互给用户使用从而屏蔽了以PLC为中心的各种控制器的巨大差异形成了方便易用的接口降低了专业的技术壁垒加速了工业领域的智能化升级。
XiUOS应用程序框架中的“控”子框架从“控制需求”本身出发同时面向专业用户和非专业用户通过对“控制需求”本身和复杂的工业控制流程进行深入分析通过软件定义的方式提出以“控制”为核心的“控”制流程。具体地,本设计通过解耦复杂的工业控制流程,将工业生产中的各种复制工业控制流程分解为各种类型的“控制”命令,这些“控制”的命令以软件API的形式交互给用户使用从而屏蔽了以PLC为中心的各种控制器的巨大差异形成了方便易用的接口降低了专业的技术壁垒加速了工业领域的智能化升级。
## 1. XiUOS“控”制框架的关键数据结构定义和解析

View File

@ -1,4 +1,19 @@
# 中断机制
* [简介](#interrupt)
* [RISC-V架构的中断和异常](#riscv_interrupt)
* [概述](#riscv_intro)
* [异常处理机制](#riscv_exception)
* [中断类型](#riscv_int_type)
* [中断控制器](#riscv_int_controller)
* [中断处理流程](#riscv_int_process)
* [中断服务程序](#riscv_int_service)
* [中断处理流程](#riscv_int_process2)
* [中断函数接口](#riscv_int_api)
* [使用场景](#situation)
<span id="interrupt"></span>
## 简介
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
中断的触发一般是由外设或者CPU内部产生由中断控制器进行处理再通知到CPU进行中断响应过程其要点如下
@ -11,13 +26,20 @@
+ 中断可以被屏蔽;
+ 所有的中断源都有一个编号,称为“中断号”;
+ 每一个中断号通过中断向量表与中断服务程序一一对应,中断向量表保存的是所有的中断服务程序的入口地址,该入口地址被称之为中断向量;
<span id="riscv_interrupt"></span>
## RISC-V架构的中断和异常
<span id="riscv_intro"></span>
### 概述
从广义上来说,中断和异常属于一个概念;对于处理器而言,通常只区分为同步异常和异步异常。
+ 同步异常:同步异常是指由于执行程序或者试图执行指令而产生的异常;例如,非法指令访问;
+ 异步异常:最常见的异步异常是外部中断,例如外设触发一个外部中断。
<span id="riscv_exception"></span>
### 异常处理机制
+ 进入异常时RISC-V架构规定(以机器模式为例)
+ 当前的程序执行流停止执行直接跳转到CSR寄存器的mtvec定义的PC地址执行
@ -34,6 +56,9 @@ mcause寄存器的Exception Code域标识是何种异常或者何种中断。定
以MRET为例当处理器执行MRET指令后硬件行为如下
1、当前程序执行流程停止执行跳转到mepc的地址运行
2、更新mstatus状态寄存器(具体情况可参考RISC-V架构介绍)
<span id="riscv_int_type"></span>
### 中断类型
RISC-V 架构定义的中断类型分为 4 种。
+ 外部中断External Interrupt 指来自处理器核外部的中断例如GPIO、UART等产生的中断。
@ -41,6 +66,8 @@ RISC-V 架构定义的中断类型分为 4 种。
+ 软件中断Software Interrupt :软件中断是指来自软件自己触发的中断。
+ 调试中断Debug Interrupt专用于实现调试器Debugger
<span id="riscv_int_controller"></span>
### 中断控制器
+ CLINT 模块生成计时器中断和软件中断
CLINT 的全称为处理器核局部中断控制器Core Local Interrupts Controller主要用于产生计时器中断Timer Interrupt和软件中断Software Interrupt
@ -49,8 +76,13 @@ PLIC 全称为平台级别中断控制器Platform Level Interrupt Controller
RISC-V中断控制器如下图所示
![XiUOS RISC-V CONTROLLER](/images/int_riscv_controller.png)
<span id="riscv_int_process"></span>
### 中断处理流程
<span id="riscv_int_service"></span>
#### 中断服务程序
每一个中断源对应一个中断号,每一个中断号又通过中断向量表和中断服务程序进行关联。当中断产生后,通过中断向量表跳转到中断服务程序的入口地址进行执行。如下图所示:
@ -60,6 +92,8 @@ RISC-V中断控制器如下图所示
</center>
<span id="riscv_int_process2"></span>
#### 中断处理流程
CPU响应中断并进行处理通常经历以下过程保存当前线程的栈信息、跳转中断服务程序运行、恢复被打断的线程栈继续运行。
如下图所示:
@ -69,7 +103,9 @@ CPU响应中断并进行处理通常经历以下过程保存当前线程
![XiUOS PROCESS](/images/int_process.png)
</center>
<span id="riscv_int_api"></span>
## 中断函数接口
```c
@ -105,6 +141,9 @@ xs_int32 xs_EnableHwIrq(xs_uint32 irq_num);
| 参数 | 描述 |
| --- | --- |
| irq_num | 硬件中断号 |
<span id="situation"></span>
## 使用场景