目  录

1.中断... 1

1.1           中断的定义... 1

1.2           中断的分类... 1

1.2.1    外部中断... 1

1.2.2    内部中断... 1

2. SylixOS下的中断浅析... 2

2.1           SylixOS信号系统... 2

2.2           SylixOS时间管理... 2

2.3           SylixOS中断相关的shell指令... 2

2.3.1    ints查看系统中断向量表信息... 2

2.3.2    ss查看系统中所有线程与中断系统堆栈使用情况... 3

3. 参考资料... 4

1. 中断

1.1      中断的定义

中断是指处理机处理程序运行中出现的紧急事件的整个过程。程序运行过程中,系统外部、系统内部或者现行程序本身若出现紧急事件,处理机立即中止现行程序的运行,自动转入相应的处理程序(中断服务程序),待处理完后,再返回原来的程序运行,这整个过程称为程序中断,当处理机接受中断时,只需暂停一个或几个周期而不执行处理程序的中断,称为简单中断。

1.2      中断的分类

简单来说中断就是发生了某种事件需要通知CPU进行处理,如果把中断事件按照来源分类,来自CPU外部的中断就称为外部中断,来自CPU内部的中断称为内部中断。再进行细分,外部中断按是否导致宕机来划分,可分为可屏蔽中断和不可屏蔽中断,而内部中断按中断正常与否来划分则可分为软中断和异常。

1.2.1   外部中断

外部中断是指来自CPU外部的中断,而外部的中断源必须是某个硬件,所以这种类型的中断又可以被叫做硬件中断,对于这种情况CPU提供统一的接口作为中断信号的公共线路,所有来自外设的中断信号都共享公共线路连接到CPU。而CPU则为用户提供了两条信号线INTR(INTeRrupt)和NMI(Non Maskble Interrupt)。

可屏蔽中断作为外部中断的一种,其本质上是指该外部设备发出的中断,CPU可以选择不处理,因为该种中断不会导致系统宕机,所以可以通过EFlags寄存器的IF位将这些中断屏蔽,可屏蔽中断时通过INTR引脚进入CPU的。像外部设备如网卡,硬盘等发出的中断都是可屏蔽中断。

不可屏蔽中断则是通过NMI引脚进入CPU的,它表示系统中发生了致命的错误,它等同于宣布:计算机宕机了。比如常见的内存读写错误,更直接的如掉电等,这样的问题一旦出现,CPU是无法当做没有发生而继续执行其他任务的,所以EFlags寄存器中的IF位对齐也对这种情况无效。

1.2.2   内部中断

内部中断表示CPU内部产生的中断,可以划分为软中断和异常。

软中断就是由软件主动发起的中断,由于这种类型的中断是由软件主动发起的,所以它是主观产生的中断,一般来说并不是客观上某种内部的错误。同时部分具备异常的“错误”结果的软中断也可以被看作是异常。

异常是另一种内部中断,是指指令执行期间CPU内部产生的错误引起的,所以它不受标志寄存器EFlags中IF位的影响。同时异常也可以按照其轻重程度分为以下三种:

1.Fault,即故障,这种错误是可以被修复的,属于最轻的一种异常,通常CPU将问题修复后会将机器状态恢复到异常之前的状态。

2.Trap,即陷阱,异常发生时为了让中断处理程序返回后能够继续向下执行,CPU将中断处理程序的返回地址指向导致异常指令的下一个指令。

3.Abort,即终止,这种情况是最为严重的异常类型,一旦出现,由于错误的严重性无法及时修复,程序将无法继续运行,操作系统为了自身的安全性只能将此程序从进程表中去掉,一般导致此异常的错误通常是硬件错误,或者某些系统数据结构出错。

2. SylixOS下的中断浅析

2.1      SylixOS信号系统

信号是软件层次上模拟的中断,很多比较重要的应用程序都需要处理信号,信号提供了一种处理异步事件的方法,例如,中断用户键入中断键,会通过信号机制停止一个程序,信号处理流程如图 21。

图 21信号处理流程

每个信号都有自己的名字,信号的名字都以“SIG”开头。目前SylixOS可以支持63种不同的信号,其中包括标准信号和实时信号。

2.2      SylixOS时间管理

SylixOS要求提供定时中断,以实现延时与超时控制等功能,定时中断也叫时钟节拍,以下函数由TICK中断调用:

API_KernelTicks: SylixOS 普通定时器周期中断;

API_TimerHTicks: SylixOS 高速定时器周期中断。

2.3      SylixOS中断相关的shell指令

2.3.1   ints查看系统中断向量表信息

格式:

ints

ints  cupidstart

ints  cupidstart  cupidend

说明:

该命令用于显示所有CPU的中断向量表信息 。ints cupidstart显示CPU ID大于等于cupidstart上的中断向量表信息。ints cupidstart cupidend则显示CPU ID大于等于cupidstart且小于等于cpuidend上的中断向量表信息。

返回值:

执行返回0。

备注:

本虚拟机只有1个CPU。

样例:

图 2-2指令ints样例

配置:

该命令属于系统提供的tshell命令,当LW_CFG_SHELL_EN>0时,会允许操作系统提供tshell命令,则包含该命令。

函数接口:

ints命令是通过C语言函数实现的,函数原型是:

static INT  __tshellSysCmdInts(INT iArgC, PCHAR ppcArgV[]);

2.3.2   ss查看系统中所有线程与中断系统堆栈使用情况

格式:

ss

说明:

该命令用来查看线程和中断堆栈的使用情况。

返回值:

执行返回0。

备注:

无。

样例:

图 23指令ss样例

配置:

该命令属于系统提供的tshell命令,当LW_CFG_SHELL_EN>0时,会允许操作系统提供tshell命令,则包含该命令。

函数接口:

ss命令是通过c语言函数实现的,函数原型是:

static INT  __tshellSysCmdSs (INTiArgC, PCHAR ppcArgV[]);

3. 参考资料

《操作系统真相还原》

《SylixOS应用开发手册》

基于SylixOS的中断浅析相关推荐

  1. 单片机c语言reti的用法,基于51单片机中断跳出指令“RETI”浅议

    原标题:基于51单片机中断跳出指令"RETI"浅议 =RET指令+通知CPU中断服务已结束. 最近在基于编程的过程中出现了个很奇怪的问题"程序执行中在寄存器EA=1,ET ...

  2. 【MCU】基于STM32CubeMX定时器中断实现LED闪烁

    基于STM32CubeMX定时器中断实现 LED 闪烁 本实验基于STM32CubeMX实现对STM32开发板的配置,通过定时器中断实现 LED 闪烁. Table of Contents 基于STM ...

  3. 【JY】基于性能的抗震设计浅析(二)

    嘿~ 即刻关注吧! "通俗讲基于性能的抗震设计" 今天又来分享关于性能的抗震设计: 接上期<基于性能的抗震设计浅析(一)>,我们根据下图可把结构的性能水平分为以下四个阶 ...

  4. S3C2440中断解析和基于WINCE操作系统的中断分析(整理于网络,用于按键中断使用)

    在调试CAN总线的时候,遇到了操作系统的中断,为了彻底的弄清楚中断是怎么回事?我先从底层的中断开始研究,在这里我们只讨论外部中断,下面就结合S3C2440TEST测试程序来分析一下中断是怎么执行的:我 ...

  5. SylixOS 共用中断号机制

    原理概述 SylixOS开发人员在编写中断驱动时经常会遇到多个中断源共用一个中断号的情况,但在驱动中为了保证代码独立性,各个外设的中断服务函数应该放在各自的C文件中编写,用统一的中断服务函数是不合理的 ...

  6. 【JY】基于性能的抗震设计浅析(一)

    拒绝下次 即刻关注 "通俗讲基于性能的抗震设计" 为什么要做性能设计呢? 在建筑物的使用寿命期间,当受到大于本地区设防烈度的罕见大地震时,可以容许建筑物有一定程度的损坏,但为了保护 ...

  7. 【STM32】-串口开发经验分享-基于RTOS+空闲中断

    目录 1. 概述 2.串口介绍 2.1 原理框图 2.2 RS-232C 2.3 RS-422 2.4 RS-485 2.5 UART 3. STM32 USART介绍 4. CubeMx生成Uart ...

  8. 基于STM32外部中断系统的秒表的设计

    1.项目简介 硬件平台:基于某STM32F103开发板. 软件平台:KEIL5 MDK V5.38,基于LCD屏幕库函数例程库为模板,添加了外部中断,定时器中断相关代码,稍加修改而成. 功能简介:有三 ...

  9. PowerPC基于vxWorks的中断初始化分析

    1. 本文简介 本文主要介绍P2020芯片中vxWorks中断初始化过程(部分讲解是以linux为例).P2020属于PPC85XX系列,内核为e500v2,它是PowerPC体系结构中主要应用于通信 ...

最新文章

  1. ServiceLoader的使用
  2. rtsp协议_如何在RTSP协议视频智能平台EasyNVR未登录的情况下调用通道直播的接口?...
  3. css blink不闪烁_使它闪烁HTML教程–如何使用Blink标签以及代码示例
  4. sql查看数据库线程数_SQL Server始终在可用性组数据库上的最大辅助线程
  5. 各种系统扫描磁带驱动器的操作方法
  6. Houdini技术体系大纲
  7. BooKu手机电子书阅读器,正式推出了
  8. Jsp内置对象实验报告
  9. iOS测试之移动App测试指南
  10. js 浏览器下载显示进度
  11. 电脑测试耗电量软件,有测验电脑耗电量的软件么 ?
  12. Exp5 CAL_MSF基础运用 20154328 常城
  13. 2020Spatial-Temporal Graph Convolutional Network for Video-based Person Re-identification论文笔记(时空图卷积)
  14. ERP系统和CRM系统
  15. 遭遇Excel的宏病毒
  16. oracle12突然出现ora12514,【ORACLE】提示ORA-12514错误处理
  17. 使用linux内核仿真ZNS(zoned namespace SSD)
  18. vector的小用法
  19. android svg图片使用
  20. 能力提升的僵化、优化、固化过程

热门文章

  1. 计算机学院运动会解说词,运动会各学院解说词
  2. 如何做一个股票自动交易系统的步骤
  3. 计算机电源接通显示未充电怎么办,win10已接通电源,但不显示充电怎么办_win10电脑电源接通但未充电是怎么回事...
  4. CF400D Dima and Bacteria【并查集】
  5. 企业付款到银行卡API,RSA加密总是报解密真实姓名或银行卡号出错?
  6. Excel打开csv文件出现乱码的解决办法
  7. 大家来看看这算不算抄袭?
  8. FlashFXP使用技巧五则
  9. JS特效(鼠标特效)
  10. 安装教程之Teamviewer下载及安装