片上系统中断机制的可靠性设计

发布者:hylh2008最新更新时间:2007-09-24 来源: 中国集成电路关键字:转移  程序  指令  检测 手机看文章 扫描二维码
随时随地手机看文章
1 引言

在嵌入式系统应用中,异步实时交互系统占了很大部分,这就要求系统对数据或者控制信号的输入具有较高的响应速度。相对查询方式而言,中断方式具有响应速度快、效率高等特点,因而在嵌入式系统中广泛采用。随着VLSI进入深亚微米时代,嵌入式系统趋向于片上系统(SOC),中断控制部分不再由独立的通用中断控制芯片构成,而是由系统开发者根据特定的中断类型设计专用的中断控制逻辑。

目前,对于中断控制器的设计方法以及中断的快速转移等已经有大量的研究,但是对于中断机制的可靠性问题研究较少。事实上,中断机制的可靠性问题是不可忽视的,因为Windows、Unix和Linux等操作系统中,中断的发生可以导致系统由用户态进入核心态,如果中断机制存在问题,在严重情况下可能导致安全漏洞和系统隐患。因而中断机制的可靠性问题对于高可靠性系统来说是一个重要问题。本文尝试对中断机制的可靠性问题进行了一些探 讨,从中断检测、中断转移和中断处理三个角度提出了安全性原则和相关的解决方法,并针对这些问题提出了一种安全的中断机制的实现。

2 中断机制可靠性的讨论

2.1 概述

中断是一种控制转移机制,它引起处理器暂停当前程序的执行,并将控制转移给中断处理程序(Interrupt Service Routine),当中断处理完成之后恢复原来程序的执行。中断的处理通常是对当前正在执行的程序透明的,并且保留处理器发生中断时的状态。

按照中断的起源,可以分为以下三种情况:

第一种情况,一个中断可能是源于外部事件,一般称之为外部中断。大多数处理器(如x86微处理器和Alpha微处理器)都采用如下类似的方式实现:处理器的一些物理引脚被设计成可以改变电压(如从+5V变成-5V),从而引起CPU停止当前工作并开始执行处理中断的特殊代码——中断处理程序。依据它们如何发送给处理器的方法而进一步分为可屏蔽中断(INTR)和不可屏蔽中断(NMI)。

第二种情况,一个中断可能是源于处理器内部,一般称之为异常。这种中断一般对应于一条指令执行过程中检测到的某种状态。

第三种情况,一个中断可能是源于处理器指令的,一般称之为软件中断,如x86微处理器中的INT指令。软件中断是一个指令执行的直接结果。

在本文中,将以上三种中断统称为中断。

一般来说,一次中断从发生到处理结束可以分为中断检测、中断转移和中断处理三个阶段,以下依次讨论其中的可靠性问题。

2.2 中断检测中的可靠性问题

对于中断检测的基本要求是准确及时检测所发生的中断,并将检测到的中断递交中断转移单元。这里所涉及的安全问题主要是不会遗漏发生的中断,不因干扰而误报错误的中断。

对于前者,要求中断检测单元具有一定的检测速度,并且在递交中断时如果中断转移单元处于忙碌状态,需要中断检测单元具有保存所发生的中断并可延迟提交的能力。

对于后者,一般外部中断管脚在噪音干扰下可能有短时间的跳变,如果采用简单的电平检测或者边沿检测就会产生误报中断的情况。一种解决的方法是采用边沿检测,但是要求边沿两侧的低电平和高电平持续若干周期。另一种解决的方法是采用电平检测,如低电平有效,但是要求该电平必须持续若干周期。这样,通过加宽检测范围的方法,就可以滤除部分噪声干扰的影响,减少误报中断的几率,维持系统正常的运行。

2.3 中断转移中的可靠性问题

中断发生之后,中断检测单元会触发中断转移单元,中断转移单元应该中断当前任务的运行,转向中断处理程序。对于简单的中断机制而言,中断转移过程可能只有一个周期或者几个周期;但是,对于复杂的中断机制而言,中断转移过程可能需要上百个周期,如x86微处理器中的某些中断转移即是如此。所以,中断转移中的安全问题主要是必须保证中断转移的完整性,或者中断转移的不可中断性,否则,系统状态将进入一种未知的状态。

一种解决方法是在中断转移的过程中将中断转移单元置于忙碌状态,中断检测单元应停止中断的提交。

2.4 中断处理中的可靠性问题

中断处理中面临的安全问题主要是正确的维护系统状态,包括处理器状态(如寄存器等)和系统表状态等。中断处理可以使用两种方式,一种是发生中断的任务中的某段程序来进行处理,另一种是采用另外一个独立的任务来进行处理。前者只需要在同一 任务内进行控制转移,只需保存中断处理程序使用的部分寄存器,比较简单,转移过程也比较好;后者需要发生任务切换,可以保存处理器的全部寄存器状态,对中断具有较好的隔离性,但是需要花费的时钟周期数目较多。为了兼顾转移的效率和处理的安全程度,有必要对全部中断进行合理的分类,对于非严重的中断采用当前任务处理,对于严重的中断必须采用独立的任务进行处理。如果对于系统的性能要求较高,可以为中断处理程序专门保留一些寄存器使用,这些保留的寄存器在非中断处理程序中是不可见的。

中断处理时另外一个安全问题和中断转移类似,即正在执行中断处理程序又发生了另外的中断,中断处理程序应该继续执行还是响应新的中断。如果肓目的忽略中断继续执行,可能错过对某些中断的处理时机;如果及时响应新发生的中断,多次中断嵌套可能导致堆栈溢出等问题。一种解决方法是对中断分级,高优先级中断可以中断低优先级的中断处理程序,但是低优先级中断不可中断高优先级的中断处理程序;同时,对中断分类,限制某些严重中断嵌套的层数,而不限制非严重中断的嵌套层数。

3 “龙腾S1”片上系统中的中断机制可靠性设计

在西北工业大学最近实现的一种面向工业控制的SOC芯片“龙腾S1”中,所实现的中断机制严格的考虑了安全性问题。“龙腾Sl”片卜系统应用于工业控制的嵌入式应用中,内含32位嵌入式微处理器、PC104总线控制器、SDRAM控制、电子盘控制器和串并口控制器等,是PC104系统的高度集成。“龙腾S1”支持256个硬件中断和软件中断,中断的整体分布和主要属性如表1所示。

由表1可以看到,除NMI之外,中断分为三种类型:故障、陷阱和中止。故障主要用于指令执行之前的中断检测,故障处理完毕之后,故障指令可以重新执行;陷阱主要用于指令执行结束之后的巾断通知,陷阱处理完毕之后,系统将继续执行下一条应该执行的指令;中止用来汇报系统的严重错误,系统接收到中止异常之后,处理程序需要重建各种系统表,并可能需要重新启动操作系统。

3.1 中断检测中的可靠性考虑

对于外部中断的检测,采取了上升沿的检测方法,要求低电平和高电平各持续8个周期以上。

对于中断提交的时机,指令内部中断可在中断转移单元空闲的任何时间提交,以便尽快的中断转移并进人中断处理程序;而对于外部中断则需要在指令窗口之间提交(即上一条指令执行结束和下一条指令即将开始之时),以便保持指令执行的完整性。

3.2 中断转移中的可靠性考虑

由于中断转移周期较长,所以中断转移是依靠处理器固化的微程序实现的。为了防止中断转移被新的中断所打断,中断转移微程序首先设置中断电路中的状态标志字为忙碌状态,这样可以避免中断检测电路再次提交新的中断,从而保证中断转移的完整性。在中断转移完毕后,中断转移微程序设置中断电路的状态标志字为空闲状态。

3.3 中断处理中的可靠性考虑

“龙腾S1”为中断的处理提供了两种方式:中断/陷阱门和任务门。前者无需任务切换,而后者实施任务切换。如前所述,对于严重错误,如无效TSS(任务状态段)、双故障等,必须使用任务门进行中断处理,这样可以保证处理程序在一个有效的任务环境之中。其他中断通常可在当前任务环境中进行处理。中断门和陷阱门的唯一区别是中断门屏蔽可屏蔽中断,而陷阱门不屏蔽可屏蔽中断,用户可以根据需要进行选择。

“龙腾S1”为了保证中断处理过程中的堆栈安全,为不同特权级设置了不同的堆栈。“龙腾S1”支持四种特权级,一般操作系统运行在最高特权级0,用户程序运行在最低特权级3。当用户程序发生中断时,无论是通过中断/陷阱门处理还是任务门处理,如果处理器由最低特权级转换到最高特权级,堆栈也会随之改变。通过这种机制,可以保证中断处理程序具有自己的堆栈,从而可以保证有足够的空间来保存处理器状态和任务上下文等。有关四种特权级下的堆栈指针信息全部保存在任务的任务状态段(Task State Segment)中,堆栈切换时新的堆栈将从任务状态段中读取。

“龙腾S1”中为中断定义的优先级如上表所示,一般在处理低优先级中断时又发生高优先级中断可以串行处理。但是,发生某些严重问题时,系统将不再发生新产生的中断,而是汇报双故障中断。按照各种中断的严重程序,从轻到重将中断分为良性、协作、页故障和中止,如上表所示。至于哪些中断的连续发生会导致双故障,需要按照中断性质进行考虑,如表2所示。

表2中第一行所列为正在处理的中断性质,第一列为又发生的中断性质,表格内容中所采取的策略:串行处理,双故障、页故障和中止。可看到连续发生良性异常,由于中断严重程序较低,系统策略为串行处理;而对于最为严重的中止,发生任何中断都会导致系统进入停机状态,即只有通过NMI信号输入或者系统复位才能使处理器重新启动。最后,我们给出“龙腾S1”中的中断检测电路(图1)和中断转移流程(图2)。


4 小结

中断机制为处理外部请求(如外设请求)和指令执行过程中的一些异常情况和事件提供了有力的支持。中断的处理将会导致控制的转移——从应用程序转移到系统的中断处理程序。本文重点讨论了这一过程中中断检测、中断转移和中断处理三个阶段中的可靠性问题,分别给出了若干设计规则,最后给出了一种工业控制用片上系统“龙腾S1”中的安全考虑和实现方法。“龙腾S1”片上系统已经使用SMIC 0.18微米工艺流片,样片测试中可以运行未经修改的DOS 6.22操作系统,并能运行大量应用程序,从而证明本文针对中断的可靠性设计是有效的。本文的研究结果对口益普遍的片上系统中的中断控制单元设计有着重要的参考价值。

关键字:转移  程序  指令  检测 引用地址:片上系统中断机制的可靠性设计

上一篇:嵌入式Linux操作系统的驱动程序开发要点
下一篇:探究最佳的结构化ASIC设计方法

推荐阅读最新更新时间:2024-05-02 20:38

tiny4412裸机程序之位置无关码
在上篇文章中,将代码的.text、.data、.rodata段重定位到了0x02026400位置处去执行点亮LED的操作。但是,在链接脚本里指定的链接地址是0x02026400,那么为什么在重定位之前的代码能够在0x02023400地址处可以开始执行?就是因为前面使用的是位置无关码。写介绍介个概念: 链接地址:链接脚本里指定的,理论上程序运行时所处的地址。在编译时,编译器会根据链接地址来翻译位置有关码。 加载地址(运行地址):程序运行时,实际所处的地址。 位置无关码,位置有关码,是相对于一条指令的正常目的来说的。比如ldr r0, =xx,它的正常目的是取得标号处的地址,对于这个目的,它是位置有关码,运行的地址不对就获
[单片机]
tiny4412裸机<font color='red'>程序</font>之位置无关码
51单片机入门led闪烁程序
简介:51单片机入门led闪烁程序 这一节简单讲下proteus仿真软件的使用,关键在于需要的元器件的代号,比如电阻是resistor,电容是capacitor等等,不过不用刻意去记,用得多了自然就记住了,碰到新的元器件就网上查找。 上图中的例子是单片机的最小系统以及LED灯,...... 这一节简单讲下proteus仿真软件的使用,关键在于需要的元器件的代号,比如电阻是resistor,电容是capacitor等等,不过不用刻意去记,用得多了自然就记住了,碰到新的元器件就网上查找。 上图中的例子是单片机的最小系统以及LED灯,左侧栏里显示了这一原理图的元器件列表,如果要添加某元器件,那么就单击“P”,就会弹出选择元器件的
[单片机]
51单片机入门led闪烁<font color='red'>程序</font>
防错检测技术在汽车制造中应用
  随着中国人均收入的增长、生活水平的提高以及市场的日趋成熟,人们有了对轿车越来越多的多样化需求。近年来新车型层出不穷,单线多品种生产方式在轿车生产领域得到了广泛的推广和应用。为了适应这种具有较高的机械化和自动化水平的生产方式,有效避免各种缺陷和错误的发生,检查、测量和零件识别技术可谓是功不可没。   ●美国邦纳工程国际有限公司   在全球性竞争日益激烈的汽车行业,提高产品质量、减少加工废品、降低制造成本成为当前企业竞争的一个重要环节。而在汽车制造过程中,合理使用各种检测技术措施,能够有效地提高产品品质。   美国邦纳工程国际有限公司(简称邦纳公司)提供的传感器及附件可为汽车行业客户提供经济适用的防错检测解决方案,能够确保产
[测试测量]
防错<font color='red'>检测</font>技术在汽车制造中应用
有毒有害气体检测仪使用技巧及维护
一、注意经常性的校准和检测   有毒有害气体检测仪也同其它的分析检测仪器一样,都是用相对比较的方法进行测定的:先用一个零气体和一个标准浓度的气体对仪器进行标定,得到标准曲线储存于仪器之中,测定时,仪器将待测气体浓度产生的电信号同标准浓度的电信号进行比较,计算得到准确的气体浓度值。因此,随时对仪器进行校零,经常性对仪器进行校准都是保证仪器测量准确的必不可少的工作。需要说明的是:目前很多气体检测仪都是可以更换检测传感器的,但是,这并不意味着一个检测仪可以随时配用不同的检测仪探头。不论何时,在更换探头时除了需要一定的传感器活化时间外,还必须对仪器进行重新校准。另外,建议在各类仪器在使用之前,对仪器用标气进行响应检测,以保
[测试测量]
有毒有害气体<font color='red'>检测</font>仪使用技巧及维护
单片机串口收发程序分享
/* ,把发送的数据接收后用P1口的LED灯以二进制的形式显示 并且蜂鸣器发出提示音,再把接收的数据加1并发出。 使用STC ISP软件界面上的串口助手,选择对应的串口号, 设置波特率为9600,选择HEX模式发送和接收 */ #include reg52.h #define uchar unsigned char #define uint unsigned int sbit beep = P2^3;//蜂鸣器接口 uchar num;//发送暂存变量 void delay(uint z) { uint x,y; for(x = z; x 0; x--) for(y = 114; y
[单片机]
STM32驱动1602程序
标 注:用到了 PD_0—7,给PO口( 单片机 板液晶数据口),PA0_2; 已在函数中将他们以寄存器形式配置,注踏出再次配置PD时 不应在配置这些口; 在主函数中需将PD,PA使能。 头函数:#include 1602.h 函 数:在1602.h中有列举; 返回值:无; 用PD0_7给液晶数据,PA0_2位控制为依次rs,rw,en; #ifndef __1602_H #define __1602_H #include stm32f10x.h void write1602_com(u8 com); void write1602_dat(u8 dat); void LC
[单片机]
LabVIEW程序设计模式(二)—基本状态机模式
状态机是一种最为经典的程序设计模式,在LabVIEW 7.1(含)之前它几乎统治了大部分的LabVIEW主程序。最基本的状态机结构如图 1所示。状态是状态机运行的经脉,在开始使用状态机模式撰写程序时需要将应用分为若干个状态。下面以图中的应用为例说明基本状态机的使用。 【 应用1 】 前面板具有3个按钮(Control)和1个波形显示控件Chart(Indicator),功能分别是: 开始采集:Label是start,单击后开始进行模拟数据采集程序(这里使用随机数代替)。 关于:Label是dialog,单击后弹出对话框以说明这个程序的版权、帮助等信息。 停止:Label是stop,单击后停止程序的运行。 Chart:用于
[测试测量]
LabVIEW<font color='red'>程序</font>设计模式(二)—基本状态机模式
华为又一自动驾驶技术专利公布,可提高车辆碰撞概率检测的准确性
8月2日,据天眼查显示,华为技术有限公司的一项名为“车辆碰撞概率检测方法及装置” 的专利公布,该专利将应用于自动驾驶、智能驾驶或者 无人驾驶 领域,该技术能够提高车辆碰撞概率检测的准确性。 专利摘要显示专利方法包括:获取当前车辆及目标车辆的状态信息及参考线、至少一个目标车辆的状态信息及参考线;根据状态信息分别预测当前车辆、目标车辆的行驶轨迹;根据所述至少一个目标车辆的状态信息,预测所述至少一个目标车辆的行驶轨迹;根据状态信息及参考线获取当前车辆、目标车辆的规划轨迹;预测的行驶轨迹及规划轨迹的融合用于指示当前车辆与目标车辆之间的碰撞概率,以及各目标车辆之间的碰撞概率。 此前,5月3日,华为技术有限公司公布“ 自动驾驶 车辆的
[汽车电子]
华为又一自动驾驶技术专利公布,可提高车辆碰撞概率<font color='red'>检测</font>的准确性
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved