DSP/BISO 线程调度 DSP/BIOS 使用户的应用程序可以由一个线程集合构筑起来,每一个线程执行一个模块化的功能
通过允许高优先级的线程抢占低优先级的线程,以及允许阻塞、同步、通信等各种线程间的交互方式,使得多线程的应用程序可以在一个处理器上运行
DSP/BIOS 支持多种不同优先级的线程,每种线程类型都有不同的执行和抢占特性
这些线程按照优先级从高到低的顺序排列如下: 硬件中断(HWI),包括 CLK 函数
软件中断(SWI),包括 PRD 函数
任务(TSK)
后台线程(IDL)
在DSP/BIOS中,硬件中断有最高的优先级,然后是软件中断,软件中断可以被高优先权软件中断或硬件中断抢先
软件中断是不能被阻塞的
任务的优先权低于软件中断,共有15个任务优先权级别(加上TSK_idle应该16个)
任务在等待某个资源有效时可以被阻塞
后台线程idle_loop 是优先级最低的线程
线程优先级如下图表示: 下面具体介绍各种线程
HWI module 硬件中断是用来处理应用程序响应外部异步事件时必须执行的关键操作
在典型的DSP 应用中,硬件中断是由片上的外设或者DSP 外部的设备触发的
中断发生后处理器会通过中断向量跳转到相应的ISR 地址
一个中断的跳转由一个DSP/BIOS HWI 对象负责,跳转的地址可以是一个用户函数或者是通用的系统HWI 调度程序(dispatcher)的入口地址
硬件中断ISR 可以使用汇编语言、C 语言或者混合编写
HWI 函数通常使用汇编来提高效率
如果要完全使用C 语言编写,应该使用系统的HWI 调度程序,它会在调用用户C 函数的前后分别惊醒现场环境保护与恢复
所有的硬件中断都会一直运行到结束,如果一个硬件中断在其ISR 得到运行机会前被多次触发,该 ISR 也只运行一次
因此,用户必须尽量和减少HWI