郑志伟
中国电子科技集团公司第三十四研究所 广西 桂林 541004
当产品在具体的使用中,需要提高中断事件的响应性能,但是,操作系统无法兼容和支持中断嵌套,此时,如果所采用的设计方案过于复杂,那么将会降低产品的复杂性,甚至还会引发产品成本高、产品质量下降等问题。而中断嵌套机制允许优先级中断的快速执行,确保关键中断事件响应速度慢问题得以有效解决,以满足产品实时响应需求。因此,在SylixOS系统的应用背景下,如何科学研究和实现中断嵌套机制是相关人员必须思考和解决的问题。
为了从根本上解决CPU循环等待问题,现采用程序查询方式,将中断系统引入到计算机系统中。同时,外设随机事件要想享用CPU提供的服务[1],需要向CPU发出相应的中断请求,此时,CPU会暂停所执行的所有程序,然后,响应外设随机事件发出的请求,从而完成对中断服务子程序的执行,当该子程序执行完毕后,CPU会继续执行原程序。由此可见,CPU响应请求,执行程序不需要等待,因此,极大地提高了CPU工作效率和效果。c6x处理器内部含有的可屏蔽中断有12个,各个中断的优先级会随着中断号的降低而升高。中断响应流程如图1所示。为了保证中断处理效率和效果,需要采用非嵌套处理方式,借助CPU,对中断服务程序进行检测,并严格按照中断向量表相关标准和要求[2],从、找出与中断向量表对应的服务程序,并对这些程序进行执行。中断服务程序执行过程除了会被NMI打断外,不会被其他情况所打断,这样一来,为最大限度地提高中断服务程序的执行效率和效果打下坚实的基础。
图1 中断响应流程
中断嵌套作为一种常用的控制机制,主要是指CPU在实际的运行中,一旦遇到级别较高的中断请求,会立即暂停当前正在执行的中断服务程序,而优先执行级别较高的中断服务程序,只有当该程序执行完毕后,才继续执行原来的中断服务程序。通常情况下,CPU仅仅支持NMI所对应的中断嵌套,不支持其他类型的中断嵌套。当SylixOS系统在执行中断服务程序的过程中,会自动屏蔽其他中断请求的响应,只有执行完当前的中断服务程序,才会响应其他中断请求,但这种处理模式显然不符合实际需求,因此,相关人员要采用配置参数方式,对SylixOS系统相关参数进行配置,使得中断嵌套机制应用于SylixOS系统中,确保SylixOS系统在执行当前中断服务程序期间也能对其他中断请求给予一定的响应的处理。首先,当SylixOS系统开始执行中断服务程序时,需要对以下参数进行科学配置:①将NRP寄存器内容保存到SylixOS系统中;②将PGIE内容保存于SylixOS系统中;③将ITSR寄存器内容保存于SylixOS系统中;④将CIE设置为1。其次,当SylixOS系统执行完中断服务程序后,系统代码需要在第一时间内快速完成对寄存器相关内容的安全保存。同时,做好以下参数的配置。①将GIE位置设置为0;②将PGIE位所对应的内容进行恢复处理;③将ITSR寄存器所对应的内容进行恢复处理;④将NRP所对应的内容进行恢复处理。当中断嵌套机制真正地发挥效应时,SylixOS系统在执行中断服务程序的过程中,一旦检测到级别更高的中断请求时,会暂停当前所执行的中断服务程序,而执行级别较高的中断服务程序,当该程序执行完毕后,才能继续执行原来的中断服务程序。同时,为了提高SylixOS系统的运行性能,确保该系统能够快速切换不同级别中断服务程序执行操作,当SylixOS系统刚刚执行中断服务程序期间,需要对当前系统所对应的运行环境进行及时备份,当级别较高的中断服务程序执行完毕后,再将系统运行环境恢复到初始状态,便于SylixOS系统继续执行原来的中断服务程序,只有这样,才能充分发挥和利用中断嵌套的应用优势,使得SylixOS系统优先执行级别较高的中断服务程序。
中断向量表明确指出出各个中断服务程序入口与中断之间的一一对应关系。所有中断向量均有一个中断服务程序入口与之相对应,当CPU在具体的运行中,一旦检测到中断,那么就会自动跳转到相对应的中断服务程序入口,实现对这些程序的快速执行。
在SylixOS系统中,中断服务程序接口主要负责对总中断服务程序的调用,同时,还要借助中断向量号,将中断服务程序相关参数传入并保存到SylixOS系统中,便于其他人员的查看和调用。为了确保SylixOS系统能够可靠、稳定、安全地运行,需要采用全局终端使能方式,针对中断服务程序处理需求,将终端嵌套机制应用于中断处理领域中,以达到提高中断处理效率和效果的目的,这样一来,有利于不断修改、优化和完善SylixOS系统内终端处理框架,确保该系统能够很好地兼容不同硬件平台,从而提高SylixOS系统的利用率。
为了更好地验证中断嵌套的可行性和有效性,相关人员
要重视对嵌入式系统中断嵌套的全面测试。通常情况下,在保证中断服务程序正常运行的基础上,级别较高的中断服务程序会被CPU优先执行。嵌入式系统中断嵌套测试步骤如下:①采用配置GPIO7的方式,将中断向量设置为3;采用配置GPIO8的方式,将中断向量设置为5。②对于中断向量3所对应的中断服务程序而言,一旦进入到执行阶段,系统会自动输出“vector3enter”,在退出程序执行阶段中,系统会自动输出“vector3exit”。③对于中断向量5所对应的中断服务程序而言,一旦进入到执行阶段,系统会自动输出“vector5enter”,在退出程序执行阶段中,系统会自动输出“vector5exit”。④在触发执行GPIO7后,方可触发执行GPIO8,并对最终的显示效果进行观察和记录。
图4 实验结果
实验结果如图4所示,从图中可以看出,在测试SylixOS系统的过程中,中断向量5所对应的中断服务程序在执行的过程中,遇到中断向量3所对应的中断服务程序,由于中断向量3级别较高,会优先执行中断向量3程序,当该程序执行完毕后,才自动返回到中断向量5,并继续执行该向量所对应的中断服务程序,这种实验结果符合预期目标。
综上所述,在SylixOS系统的应用背景下,为了有效地解决关键中断事件响应慢问题,相关人员要重视对中断嵌套机制的制定和完善,确保中断嵌套机制的系统性、健全性和完整性,只有这样,才能最大限度地提高关键中断事件响应速度,避免因中断事件响应效率而严重影响产品质量,甚至增大产品生产成本,为提高相关企业的社会效益和经济效益,促进相关企业的健康、可持续发展提供有力的保障。