DSP多任务实时操作系统内核设计

2016-03-22 14:20张健李跃鹏刘威鹏曾丽丽
电脑知识与技术 2016年2期
关键词:多任务

张健 李跃鹏 刘威鹏 曾丽丽

摘要:针对广泛使用的DSP处理器,分析TI公司实时操作系统DSP/BIOS的特点,论述DSP多任务实时操作系统架构。基于DSP/BIOS完成任务创建与堆栈检测、中断管理、时钟管理、多任务调度策略及任务间通讯等内核关键部分的设计,实现一个具有基本功能的DSP多任务实时操作系统内核。并给出所设计的内核软件在TI的 DSP TMS320C6655上的应用实例,通过实验验证内核的一些关键功能(定时器、任务调度策略)。所设计的多任务操作系统内核,架构简洁,实时性强,便于进行二次开发。

关键词:实时操作系统;DSP/BIOS;多任务;操作系统内核

中图分类号:TP316 文献标识码:A 文章编号:1009-3044(2016)02-0077-03

Abstract: In view of the widespread use of DSP processor, Analysis of the characteristics of TI company real-time operating system DSP/BIOS,DSP real-time multitasking operating system architecture is also discussed. The key part of the kernel design is based on DSP/BIOS to complete the task to create and stack detection, interrupt management, clock management, task scheduling strategy and intertask communication.All of the implement a basic function of DSP real-time multitasking operating system kernel. the design of kernel software is used on DSP TMS320C6655 application and through the experiment verify the kernel' s some key function (timer, task scheduling strategy). The designed multitasking operating system kernel architecture is simple, it has strong real-time performance,and is convenient for secondary develop-ment.

Key words: real-time operating system; DSP/BIOS; multitasking; OS kernel

如今,DSP芯片的片上资源的不断增加,DSP芯片的软件设计也开始更多的关注如何更好地进行控制资源和任务管理[1]。同时,DSP 处理器以运算速度高效著称,在 “实时性”和“并行性”具有优势。DSP 芯片在系统结构和指令算法方面进行了特殊设计(如采用哈弗结构体系[2],集成的硬件加速器,功能单元并行操作,汇编指令软件流水等),具有很高的编译效率和指令执行速度。这些特点为其在嵌入式操作系统领域的应用提供了基础。

1 DSP实时操作系统内核

DSP/BIOS是德州仪器基于TMS320系列DSP平台提供的一个实时操作系统内核[3]。DSP/BIOS是一个可升级的实时内核,它提供的底层应用函数接口,可用于支持系统实时分析、线程管理、调度软件中断、周期函数、外部硬件中断及各种外设管理。DSP/BIOS 支持4种不同优先级的线程:硬件中断(HWI)、软件中断(SWI)、任务(TSK )、后台线程(IDL )[4]。

如图1 所示,DSP操作系统内核界于BOOT区和应用程序接口层之间, 它主要实现任务管理;系统时钟管理;任务间通信与同步和中断管理。并利用信号、定时器、优先级、中断、任务调度等机制为应用层提供支撑[5]。向下主要与BIOS初始化接续。

接口1中,当BIOS初始化完成后,调用系统main()函数后,操作系统先执行初始化操作,信号量和任务创建,应用程序上电自启动等。接口2中,内核通过DSP系统提供的API函数与应用层间实现交互,实现定时器、任务、优先级等功能的使用。

2 DSP实时操作系统内核设计

本方案设计的DSP实时操作系统内核将应用程序分为若干任务进行管理,并且负责任务间的通信,可以极大地简化应用系统的设计。任务调度采用基于优先级的抢占式调度策略,该策略中赋予每个任务一个优先级,任务越重要,赋予的优先级就越高[6],内核总是将CPU分配给处于就绪态的优先级最高的任务运行,保证重要的突发事件及时得到处理[7]。

2.1 任务堆栈检测与状态转换

采用动态方法向内核创建任务,首先由Task_Params_init(&taskParamsTemp)函数初始化任务控制块结构体Task_Params,配置任务优先级、堆栈大小、任务状态字等参数,然后,调用函数Task_create创建任务。

2.2 中断管理

系统内核采用中断服务和任务切换结合的机制:每当中断发生后,系统及时进行中断响应, 将全部CPU 寄存器推入当前任务栈,执行中断服务程序,再恢复现场, 调用脱离中断函数,执行中断返回。如果中断服务子程序使一个高优先级的任务进入了就绪态,则在中断恢复过程中完成新任务的寄存器内容恢复,中断返回后,通过任务切换函数完成任务切换。为减少任务响应时间,中断服务程序中要做的事应尽可能少。其大部分工作由中断服务程序中就绪的高优先级任务完成。中断任务调度流程图如图3所示:

由于任务切换需要把目标寄存器文件以及控制寄存器文件(CSR、IER、IRP 和 AMR)这些断点数据入栈保护,因此,任务切换所需要的时间取决于CPU 中入栈寄存器的数量。CPU的寄存器越多,任务切换时间越久。由于C编译器不能从C语言中直接处理CPU寄存器,任务切换需要由汇编语言编写,现给出任务切换示意性代码:

为确保T0任务的调度函数执行的完整性,当T0任务通过信号量调度获取CPU使用权后,由函数Task_disable()禁止任务切换,等调度函数执行结束后,再由Task_restore(key)重新使能任务切换,继续等待下一个定时器信号量的到来。

2.4 任务间通讯

对于简单的共享变量,系统通过关中断、开中断来处理,以提高效率。当数据量比较耗费时间时,引入信号量进行任务间通讯,并设计缓冲区机制,保证任务间传输数据的一致性。缓冲区的基本设计思路是:为每一个任务设置多个输出缓冲区,用以支持与其他任务的数据交互。本输出任务总能确保找到一个空闲的缓冲区写入数据,同时其他任务可以从其他的缓冲区中读取数据。每个任务的输出缓冲区的个数为:N = T + 1,T指比当前输出任务优先级低的任务数量。由于最低优先级任务最后执行,数据不会被其他任务读取,故其输出缓冲区个数只需要1个。

3 应用实例验证

本设计的内核是一个通用的DSP多任务实时操作系统内核,在 TI 的 DSP TMS320C6655上由CCS5.1调试。并通过实验测试该内核的一些关键功能。

在系统main函数中除T0定时器任务之外,再创建4个时钟周期任务taskT1、taskT2、taskT3和taskT4,各任务的优先级为:

T0>taskT1>taskT2>taskT3>taskT4。

首先,验证定时器中断间隔:设定产生1ms的时钟中断任务。通过许继自主研发的VIGET图形化工程软件编写测试例程,同时,创建以太网任务,建立系统以太网通信,实现与图形化工程软件的通信。如图5所示,TSTART 和 TSTOP模块根据式(1)算出中断间隔,并由TSTOP模块输出实时中断间隔:

中断间隔 = 中断任务内时钟滴答数(N)* 时间因子(u) (1)

XSUM模块的输出管脚AVG即为中断间隔的平均值(999.7894us),证明定时器中断正常。

4个周期任务的滴答间隔为1,2,4,8。在某些周期(如时钟周期4,8,12...4n)超过2个任务会同时就绪。不满足多任务调度算法原则。因此,需要设计调度算法,使各周期的任务数均衡分布。任务调度策略基本设计思路是:延迟一个周期释放task3任务信号量,提前一个周期释放task4任务信号量。

任务的调度信息通过串口实时输出,图6为依据串口输出信息绘出的任务分布对比图形。可以证实:执行任务调度函数后,任务的执行周期进行延迟和提前,但是各任务执行间隔不变,在同一时钟周期最多有2个任务进入就绪态,各个任务分布均匀,系统负荷均衡。

4 结束语

本文所介绍的仅是DSP实时多任务操作系统内核中一部分的实现方法,所设计的可缩减内核简化了程序设计,程序模块清晰,易于移植,适用于DSP系统。可以根据实际需要添加串口通信、TCP /IP协议栈、动态内存管理、故障诊断等功能,使得完整的嵌入式操作系统在该内核的基础上实现。许继自主研发的电力系统控制保护平台的主处理器中,使用了该内核,实际运行状况良好,满足了强实时性要求。最小任务周期为0.1ms,满足复杂多任务的需求。

参考文献:

[1] 易克非, 胡庆锋. 基于 DSP 的实时多任务调度内核设计[J]. 通信技术, 2011, 44(6): 135.

[2] 邬可军, 朱铭锆, 曹建树. DSP实时多任务操作系统设计与实现[M]. 北京: 电子工业出版社, 2005: 11-12.

[3] Instruments T. TI SYS/BIOS Real-time Operating System Users Guide[R]. USA: Texas, 2012.

[4] 王军宁, 何迪. TIDSP/BIOS用户手册与驱动开发[M]. 北京: 清华大学出版社, 2007.

[5] Texas Instruments Incorporated TMS320C6000系列DSP的CPU与外设[M]. 北京: 清华大学出版社, 2007: 15-17.

[6] 徐亮, 徐中伟. μC/OS-II 实时系统任务调度优化[J]. 计算机工程, 2007, 33(19): 57-59.

[7] 李岩, 王显山. 实时操作系统任务调度算法的硬件实现[J]. 计算机工程与应用, 2010, 46(35): 53.

猜你喜欢
多任务
基于中心化自动加权多任务学习的早期轻度认知障碍诊断
基于判别性局部联合稀疏模型的多任务跟踪
基于多任务异步处理的电力系统序网络拓扑分析
一类完全由内积构造的多任务核的几个性质
基于单片机应用系统的多任务程序结构设计
未知环境下基于粒子群优化的多任务联盟生成