DSP/BIOS正是CCS的重要组成部分,它实质上是一种基于TMS320C5000和TMS320C6000系列DSP平台的规模可控实时操作系统内核。它也是TI公司实时软件技术eXpressDSP技术的核心部分。
一、采用实时操作系统的好处
DSP BIOS是一个实时操作系统(RTOS),采用DSP BIOS有以下好处:
1、实时调度(Real-time scheduling)
DSP BIOS占用了一定的资源(不光是存储器资源,还有CPU资源),BIOS是以时钟中断来进行驱动的,它是以时钟中断来唤醒一个TASK,(例如SLEEP(5)),若以1ms做为时钟中断,BIOS进行调度的过程所占时间(即核的运行时间)只有几个微秒,其它的时间在运行TSK_idle,而此任务可以被用户任务抢占。即99%的时间可以被用户使用。但是就是这几个微秒的核的执行时间限制了BIOS在一些中断到来过于频繁的系统中的应用。例如,一个系统其中断间隔是10到15个微秒,如果使用DSP BIOS来构建,每中断一次再触发TSK或软中断,内核的开销就占到50%,留给用户的时间就太少了。这种情况下就要不能采用DSP BIOS。
2、享用操作系统的服务(信号量、邮箱)
可以利可以用信号量、邮箱进行线程之间的通讯和同步。
3、算法标准化和可移植(ExpressDSP)
基于实时操作系统写的算法,其隔离度要好一些,算法更标准化实现,便于在不同的DSP上进行移植。
4、创建的应用程序稳定性好(Robust)
因为控制部分和调度部分由DSP BIOS来进行,而非用户自己进行调度。基于这样的实时调度,其程序的稳健性就比较好。
二、一个基于非实时操作系统进行开发时出现的问题
1、 下图是一个典型的由中断驱动的实时系统程序框架:
main()
{
for (;;);
}
ISR1()
{
algorithml();
}
ISR2()
{
algorithm2();
}
在main中进行初始化后,进入一个while循环或for循环,等待中断的到来。中断处理是实时调度的一种方式。一旦ISR1或2被调用,算法1或2就要执行并直至完成,即中断不能被抢占。我们虽然可以使用中断嵌套来解决这一问题,但当多个中断处理时间是交互的情况时,情况就变得复杂。
假如我们希望两个算法都要被实时执行(即在一个时限内完成),那么我们需要考虑下面的问题:
1)ISR1和ISR2同步吗?
如果同步,我们就可以使用一个ISR服务2个算法(前提是我们有足够的处理能力)
2)如果它们不同步呢?
因为不同步,ISR2的到来相对于ISR1是不确定的,当ISR1的时限快到时,来了ISR2,此时允不允许ISR2嵌套?如果允许,ISR1就会被暂停,但是很快ISR1的时限过了,就会出现问题。 这种不可控性是很高的。
3)如果假定ISR1的优先级高,ISR2可能挂起不能抢占,则在如图1所示情况下算法1漏执行一次,这时实时系统中不允许的。
1)写代码困难(对时序要示苛刻)
2)修改代码不方便(如果算法被修改或添加了其他算法时)
方案2:使用操作系统。DSP/BIOS的出现提供了一种组织应用程序各功能模块的机制,它通过可配置的内核服务使各功能模块在系统调度器的安排下按照优先级的高低分时复用CPU资源,这种机制带来了应用程序可维护性的提高,而且也为能够提供更高级、方便的调试手段打下了基础。
优点:
1)写代码容易(各个算法独立开发)
2)代码易于维护和修改(调度由操作系统负责)
3)产品开发周期短。
三、通用操作系统和实时操作系统RTOS
1、通用OS的功能
1)进程管理(线程管理):管理CPU资源,管理在什么时候CPU去执行哪个线程,进行实时调度。
2)存储器管理:管理存储器资源,使其更有效,能否通过分时来实现线程1和2使用同一块存储器
3)文件管理:对文件系统进行管理。DSP BIOS没有文件系统。
4)I/O管理(设备管理):对外设进行管理,对其数据输入输出进行管理。
2、实时操作系统
1)实时操作系统的特点:
必须至少有一个中断,其服务能保证在一个给定的时间内完成,而不论是否发生其他事情。
2)实时操作系统的重要概念:
中断响应时间:发生中断到ISR第一条指令所需的时间,大约为十几个时钟周期(硬件)
抢先式内核:高级任务一就绪就得到响应
3、通用OS和RTOS的比较
1)RTOS与其它操作系统不同的一个特征是:它们必须至少有一个中断,其服务能保证在一个给定的时间内完成,而不论是否发生其他事情。
2)RTOS具有嵌入式软件共有的可裁剪、低资源占用、低功耗等特点。
3)通用OS注重多个任务的平均表现性能,不注重个体表现性能。RTOS注重的是个体表现,更准确的讲是个体最坏情况表现。
4)通用OS的基本设计原则是:尽量缩短系统的平均响应时间并提高系统的吞吐率,在单位时间内为尽可能多的用户请求提供服务。
5)RTOS的基本设计原则是:采用各种算法和策略,始终保证系统行为的可预测性(predictability)
4、Real-time scheduling :SP/BIOS
DSP/BIOS是一个可升级的实时内核。它主要是为需要实时调度和同步以及主机动性-目标系统通讯和实时监测(Instrumentation)的应用而设计的。
1) DSP/BIOS操作系统包括:
代码尺寸小的实时库、调用API函数,使用实时库的服务、易用的配置工具、含有实时分析的程序(config tools)。
2) DSP/BIOS的调度包含:
固定优先级的抢占式调度器
多种线程类型(硬中断、软中断、线程、IDL)
3)实时分析
单步执行会打断DSP的实时执行。而实时分析用于实时捕获和显示数据。
DSP/BIOS提供几种机制实时地获取、传输和显示数据,同时把对程序本身的工作的干扰送减少到最小。此外,DSP/BIOS的模块的运行能够被“隐式”地监测。所以,基于DSP/BIOS的应用程序能够自动观测自己的运行。
4)DSP/BIOS支持4种线程
a、硬件中断(HWI):频率可达200KHz,处理时限在2微秒到100微秒
b、软件中断(SWI):时限100微秒以上,SWI允许HWI将一些非关键处理在低优先级上延迟执行,这样可以减少在中断服务程序中的驻留的地方。
c、任务(TSK):任务执行完一次就不再执行。任务与软件中断不同的地方在于在运行过程中可以被挂起(sleep)。DSP/BIOS提供了一些任务间同不和通讯的机制,包括队列、信号灯和邮箱。
d、后台线程(IDL):MAIN->空闲循环:运行那些没有执行期限的函数。
DSP/BIOS的可裁减性:只把直接或间接调用的模块和API连接到目标文件中。
在利用DSP/BIOS设计应用程序之前,首先应对组成整个应用程序的各个功能模块进行线程类型划分。根据各功能模块触发方式和优先级的不同,可将它们划分为HWI、SWI、TSK和IDL四种线程对象,它们的优先级依次降低。同时,如果存在需要周期性触发的功能模块,可以将其设定为PRD或CLK线程对象。 |