Spartan6芯片μCOS-II的可抢占式嵌套中断机制的正确性与可行性的验证

Spartan6芯片μCOS-II的可抢占式嵌套中断机制的正确性与可行性的验证,第1张

摘要: 介绍了Spartan6芯片搭载MicroBlaze软核的硬件平台,以及集成了μC/OSII *** 作系统的软件平台;给出了在此软硬件平台上的可抢占、可嵌套的中断机制的实现方法;灵活地运用面向底层硬件代码与 *** 作系统代码之间的参数传递,协调了中断处理与任务调度之间的关系。阐述了方案的原理,给出了程序流程图;通过试验,验证了可抢占、可嵌套的中断机制的正确性与可行性。

引言
Xilinx公司推出了32位软核MicroBlaze,用来替代片上的微控制器,可以有效地缩小PCB板的面积和器件数量,降低整个系统的成本。MicroBlaze采用 32位哈佛RISC架构,32位独立的地址总线和数据总线。Spartan6 FPGA为Xilinx公司的低成本、低功耗FPGA。第6代Spartan系列含最多150 000个逻辑单元、高级储存器支持、250 MHz DSP Slice和3.125 Gbps低功耗收发器。本设计中首次采用Spartan6芯片搭载MicroBlaze软核作为硬件平台应用于保护装置中,在此硬件平台上开发适用于对稳定性要求苛刻的电力自动化技术产品。

1 可抢占可嵌套的中断方法实现

Spartan6芯片搭载MicroBlaze软核的保护装置的硬件平台开发中[1],需求分析中明确要求,硬件平台需要提供定时器中断、串口中断、CAN总线中断、以太网接口中断以及A/D采样中断等多个中断信号。基于Spartan6芯片开发的平台首次在保护装置中应用;Spartan6芯片是Xilinx公司的一款FPGA芯片,此款芯片资源丰富,性能可靠,具有PFGA所特有的可灵活配置的特性,各项指标满足在非电量保护装置中应用。但是芯片原有的中断控制器资源与所选用μC/OSII *** 作系统配合,不支持中断间的抢占与嵌套[2];如果不同优先级的中断同时被触发,原有的中断机制无法区分中断优先级的高低。虽然原有中断控制器上面可以设置多中断的优先级,但是汇编代码中却缺乏相应的处理机制,使之前设置的中断优先级失去意义;应用过程中只能尽量地缩短中断服务程序代码,力争把中断服务程序时间缩到最短;但是实际运用中仍然无法避免多个中断被同时触发的情况发生,严重时可能会导致系统死机。因此有必要开发一种可抢占的并且可嵌套的中断处理机制,解决上述问题。

对于本硬件平台在多中断同时响应时不能区分中断优先级高低的问题,通过硬件工程修改设置、改变参数等常规方法都无法解决。由于本硬件平台移植了μC/OSII *** 作系统,因此只能在μC/OSII *** 作系统关于中断处理的相关底层代码中加入我们自主研发的中断控制方法,来解决上述问题。根据μC/OSII *** 作系统的特点,μC/OSII *** 作系统每次是在中断退出时通过调用中断级的任务调度函数,从而实现多任务的切换。因此需要在中断嵌套时禁止任务切换,保证系统运行稳定。Spartan6芯片的软核Microblaze中的中断控制器提供了硬件上的中断优先级设置,但是驱动程序以及μC/OSII中并没有区分优先级,使硬件设置的优先级失去作用[3]。因此本方案中通过查表获得当前运行任务最高的优先级后,屏蔽所有低优先级任务。每次清除上述最高优先级中断后立刻开放此中断,保证中断可以嵌套。

在主函数中首先初始化中断向量表;当中断被触发后跳入汇编代码,跳入汇编程序后首先进行压栈处理进行保护现场 *** 作;同时考虑到μC/OSII中的任务调度是在中断退出时执行的,因此在中断嵌套的过程中不进行任务调度;所以此处采用计数器统计进入中断次数;如果进入中断,计数器加1,如退出中断计数器减1;通过计数器的值作为判断条件,判断是否允许任务调度,从而确保中断嵌套时禁止任务调度。随后读取中断使能寄存器与中断向量寄存器的值,获取当前被触发的中断中的最高的优先级。通过查表处理屏蔽比当前中断优先级低的所有中断,并开放比当前中断优先级高的所有中断,从而实现在多中断同时被触发时,优先级高的首先得到执行,并且可抢占其他正在运行的低优先级的中断;同时,允许比当前中断优先级高的中断对当前中断的抢占。然后清除当前中断的标志位,使其重新开放,实现中断的可嵌套;然后跳转出汇编程序,将当前最高优先级的中断参数传递到C代码中的中断处理函数以及 *** 作系统中的任务调度函数,C代码获得此最高优先级中断参数后,会进入相应的中断处理函数;同时μC/OSII *** 作系统进行任务切换并重新调用汇编程序,恢复中断现场;C代码会清除中断为下一次进入中断做好准备。 软件流程框图如图1所示。

Spartan6芯片μCOS-II的可抢占式嵌套中断机制的正确性与可行性的验证,图1 软件流程图,第2张

 

图1 软件流程图

2 可抢占可嵌套的中断方法试验验证         

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/dianzi/2609008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-10
下一篇 2022-08-10

发表评论

登录后才能评论

评论列表(0条)

保存