DSP /BIOS实时多任务操作系统内核的研究
2010-09-23周杰
周 杰
扬州工业职业技术学院,江苏扬州 225127
DSP /BIOS实时多任务操作系统内核的研究
周 杰
扬州工业职业技术学院,江苏扬州 225127
本文介绍了TI公司TMS320C6713的DSP/BIOS实时多任务操作系统内核,通过研究分析 DSP/BIOS的启动顺序,线程指令流在DSP中存在的方式以及调度的优先级,线程间的让出与抢中,总结出多任务的执行状态和调度的规律。最后将该多任务操作系统应于某伺服控制系统,取得了良好的效果。
BIOS;DSP; 线程抢占;任务
0 引言
DSP/BIOS是TI公司特别为其TMS320C6000TM、TMS320 C28XTM系统DSP平台所设计开发的一个尺寸可裁剪的实时多任务操作系统内核,是TI公司的Code Composer StudioTM开发工具的组成部分之一。
1 DSP/BIOS启动序列
当一个应用程序启动时,boot.s54(C54x 平台)或autoinit.c和boot.snn(C600g 平台)文件中的代码决定了其启动序列,这些文件的编译版本由 biosi.ann 库提供。一般BIOS启动顺序如下:
1)初始化DSP:DSP/BIOS程序从C或C++环境入口点c_ int00开始运行,而复位中断向量被设置为复位后跳转到c_int00,对C600来说,系统堆栈指针(B15)和全局页指针(B14)被初始化分别指向.stack段的末尾和.bss段的开始。
2)当堆栈建立好后,初始化程序用.cinit段中的记录初始化全局变量。
3)调用BIOS_init初始化程序中用到的DSP/BIOS 模块,BIOS_init由配置生成并位于programcfg.snn文件中。主要完成三个子模块的初始化。
HWI_init:硬件中断,设置ISTP和中断选择寄存器。
HST_init:初始化主机I/O通道接口,该程序决定主机与目标DSP的连接方式;
IDL_init:空闲循环的指令计数。该程序用于校准CPU负荷里实时显示的CPU负载值。
4)处理.pinit表:.pinit表包含了指向初始化函数的指针,这里主要初始化各种全局变量。
5)调用用户应用程序的 mian函数:在所有DSP/BIOS模块初始化完成之后,用户mian 函数才会被调用。
6)调用BIOS_start启动DSP/BIOS:该函数在programcfg.snn文件中,在用户mian函数返回调用BIOS_start 。
7)执行空循环:有两种方式可以调用该函数:第一种是任务管理器被使能,任务管理器在运行TSK_idle时会调用IDL_loop;第二种是任务管理器被禁用,则当BIOS start返回时紧接着调用TDL loop。
3线程调度
在DSP/BIOS中线程被定义为由DSP执行的任何独立的指令流,一个线程可以是一段程序,一个函数或一个ISR调用。DSP/ BIOS支持多种不同优先级的线程,每种线程类型都有不同的执行和抢占特性。
硬件中断(HWI),包括CKL函数,用于响应外部异步事件。
软件中断(HWI),包括PRD函数,软件中断通过在程序中调用SWI函数而触发的。
4 线程的抢占与让出
DSP/BIOS调度器会运行处于就绪状态的优先级最高线程,除非发生下列情况:
1)运行中的线程暂时禁止了部分或全部的硬件中断(HWI disable),阻止了相应硬件 ISR运行;
2)运行中的线程暂时禁止了软件中断(SWI disable),阻止了任何更高优先级的软件中断抢占当前线程,但并不阻止硬件中断抢占当前线程;
3)运行中的线程暂时禁止了任务调度(TSK disable),阻止了任务更高优先级的任务抢占当前线程,但并不阻止硬件中断或软件中断抢占当前线程;
4)最高优先级的线程是一个被阻塞的任务线程,当任务调用了TSK sleep、LCK pend、MBX pend、或SEM pend时会发生阻塞。
5 任务的执行状态和调度
任务有16个优先级,最低为0,最高为15。且优先级0保留给系统空闲任务。每个TSK对象总是处于如下四种可能的执行状态之一:
1)运行状态(Running):代表该任务当前正在系统处理器上执行。
2)就绪状态(Ready): 代表任务已经被调度并在等待处理器上执行。
3)阻塞态(Blocked):代表任务必须等到某个事件发生或某些资源呆用时才能执行。
4)终止态(Terminated):代表任务已经被终止,不会再执行。
最高的任务优先级是TSK MAXPRI(15),最低的任务优先级是TSK MINPRI(1)。图1说明了任务的状态是如何改变的。
图1 任务状态化
TSK、SEMT和SIO模块的函数可以改变任务的状态:阻塞或终止当前运行的任务,使之前被挂起(阻塞)的任务就绪,以及重新调度当前线程等。
6 结论
通过对DSP/BIOS实时抢占式内核的分析研究,将该操作系统用于某伺服系统。从复位状态开始伺服系统需要实时向上位机发送一些系统的状态信息。实践证明该系统可以完成系统的功能要求取得很好的效果。
[1]Texas Instruments Incorporated.TI DSP/BIOS 用户手册与驱动开发[M].北京:清华大学出版社,2007.
[2]Texas Instruments Incorporated,TMS320C6000系列DSP的CPU与外设[M].北京:清华大学出版社,2007.
[3]汪安民,张松灿,常春藤,TMS320C6000 DSP实用技术与开发案例[M].北京:人民邮电出版社,2004,4.
[4]三恒星科技.TMS320C6712 DSP 原理与应用实例[M].北京:电子工业出版社,2009,4.
TP39
A
1674-6708(2010)33-0220-02
周杰,讲师,主要从事计算机控制的研究