APP下载

Spartan6芯片μC/OS-II的可抢占式嵌套中断控制方法

2014-09-06孙丰祥许学芳程玉伟

单片机与嵌入式系统应用 2014年6期
关键词:处理程序嵌套任务调度

孙丰祥,许学芳,程玉伟

( 国电南京自动化股份有限公司, 南京 210061)



Spartan6芯片μC/OS-II的可抢占式嵌套中断控制方法

孙丰祥,许学芳,程玉伟

( 国电南京自动化股份有限公司, 南京 210061)

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

Spartan6;μC/OS-II;中断抢占;中断嵌套

引 言

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/OS-II操作系统配合,不支持中断间的抢占与嵌套[2];如果不同优先级的中断同时被触发,原有的中断机制无法区分中断优先级的高低。虽然原有中断控制器上面可以设置多中断的优先级,但是汇编代码中却缺乏相应的处理机制,使之前设置的中断优先级失去意义;应用过程中只能尽量地缩短中断服务程序代码,力争把中断服务程序时间缩到最短;但是实际运用中仍然无法避免多个中断被同时触发的情况发生,严重时可能会导致系统死机。因此有必要开发一种可抢占的并且可嵌套的中断处理机制,解决上述问题。

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

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

图1 软件流程图

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

在硬件平台中设置定时器每1 ms发生一次中断,定时器的中断优先级较高。串口不定时地接收到数据,接收到一次数据发生一次串口接收中断,定时器中断优先级高于串口接收中断优先级。当中断被触发后相应的中断信号的电平由低变高,中断处理函数完成中断相关处理后,中断信号由高电平回复为低电平。将定时器中断信号与串口接收中断信号分别引出,并接示波器观察。图2中,示波器通道1是定时器中断波形,通道2是串口接收中断波形。如图1所示,定时器中断先被触发,串口中断后被触发,CPU处理完定时器中断后才去处理串口中断的处理程序。图3中,示波器通道1是定时器中断波形,通道2是串口接收中断波形。如图2所示,串口接收中断先被触发,定时器中断后被触发,CPU中止串口中断处理程序而转入定时器中断的处理程序,定时器中断处理程序执行结束后,继续执行串口中断的处理程序。

图2 低优先级中断不能抢占高优先级中断示意图

由图2和图3可以明确得出结论,低优先级中断不能打断高优先级中断,需要高优先级中断处理结束后,才处理低优先级中断;反之高优先级中断可以打断低优先级中断。也就是说中断的可抢占功能得到了充分的验证。由于示波器无法明确捕捉到中断嵌套的实现,因此在中断程序代码中加标志位计数,进入中断时,标志位加1,退出时标志位减1;并将标志位的数值打印出来,以检测进入同一中断的的次数。打印信息证明,中断嵌套可以正确稳定地实现,实际运用中结合工程实际情况,兼顾系统稳定与运行效率,把嵌套次数设置为3,既能满足现场运行的需要又能防止中断嵌套占用过多的资源。

图3 高优先级中断可以抢占低优先级中断示意图

结 语

[1] 何宾, 王瑜. 基于Xilinx MicroBlaze多核嵌入式系统的设计[J]. 电子设计工程,2011,19(13):141-144.

[2] 刘艳军. 嵌人式操作系统μC/OS-II面向数控系统的改进[J].现代电子技术,2011,34(12):83-86.

[3] 刘钊,杜永锋,许知博. 基于Xilinx-Spartan6 FPGA的MultiBoot设计的实现[J].电子科技,2012,25(3):28-32.

孙丰祥(工程师),从事继电保护平台研究。

◆ USB挂起指示。

◆ 时钟输出。

◆ LED变化显示数据传输。

◆ 脉冲或边沿触发计数。

◆ 远程唤醒。

在评估你的USB桥接器芯片设置时,要选择可以提供完整桥接器产品组合解决方案的半导体供应商,他们支持几乎所有主流的通信接口。确保选择的固定功能的通信桥接器具有免晶振USB操作、片内调压器、片内可编程存储器和小尺寸封装选项。为下一个嵌入式应用选择合适的桥接芯片最终能够为你节省大量的开发工作和费用,并且有助于缩短产品设计上市时间。

表1对比了10种采用常见通信接口的Silicon Labs桥接器产品的特征参数。

表1 常见通信桥接器

关于Evan Schulz

(责任编辑:杨迪娜 收稿日期:2014-04-18)

Interrupt Preemption and Nesting Method Based on Spartan6 and μC/OS-II

Sun Fengxiang, Xu Xuefang, Cheng Yuwei

(Guodian Nanjing Automation Co., Ltd., Nanjing 210061,China)

The hardware Platform based on MicroBlaze was introduced, and the software Platform of the μC/OS-II was integrated in the hardware platform .The method of designing the interrupt which can be preempted and nested was provided;parameters were transferred between the underlying code and the operating system code flexibly. The relationship of interrupt processing and task scheduling was coordinated; the theory of the scheme was recounted, and the software program flow chart was provideding, validating the rightness and feasibility of the theory.

Spartan6;μC/OS-II;interrupt preemption;interrupt nesting

TP399

A

2013-12-17)

猜你喜欢

处理程序嵌套任务调度
高速公路工程变更与计量支付处理程序的优化方法
基于改进NSGA-Ⅱ算法的协同制造任务调度研究
基于时间负载均衡蚁群算法的云任务调度优化
嵌套交易如何实现逆市盈利
基于C++的数控加工通用后处理程序的开发应用研究
企业危机公关管理问题分析
处理房地产纠纷中行政与民事交叉问题的正当程序
程序设计中的嵌套循环
云计算环境中任务调度策略
云计算中基于进化算法的任务调度策略