| HWI | SWI | TSK | IDL |
优先级
| 最高 | 次高 | 次低 | 最低 |
优先级
等级数
| 由具体DSP型号决定;
| 15个优先级。其中,PRD周期函数的优先级与PRD_swi软件中断对象的优先级一致;TSK任务调度软件中断的优先级最低;
| 16个优先级。其中包括用于idle循环的一个任务;
| 只有一个优先级;
|
能否中断(或推迟)自己的执行
| 不能。HWI硬件中断运行到结束,除非其它HWI硬件中断被抢先;
| 不能。SWI软件中断运行到结束,除非被其它高优先级线程抢先;
| 可以;
| 不应该。否则会阻止PC主机获得DSP目标系统的信息;
|
执行状态
| 不活动;(no active)
准备好;(ready)
运行中;(running)
| 不活动;
准备好;
运行中;
| 准备好;运行中;
阻塞或挂起;(pending)
终止;(terminated)
| 准备好;
运行中;
|
使线程无效的函数调用
| HWI_disable,HWI_enter
(用某些屏蔽位为参数)
| SWI_disable;
| TSK_disable;
| 从不抢占
|
如何被触发或变为运行
| 中断发生
| 以下函数调用:SWI_post,SWI_andn,SWI_dec,SWI_inc,SWI_or,SWI_tick;
| TSK_create函数调用;
| main( )返回,并且无其它线程正在运行;
|
堆栈使用
| 系统堆栈(所有中断共用一个系统堆栈);
| 系统堆栈(所有中断共用一个系统堆栈);
| 任务堆栈(每个任务一个);
| 使用默认的一个任务堆栈;
|
被其它线程抢先时环境的保存
| 可由用户制定;
| 固定寄存器保存到系统堆栈;
| 整个任务环境保存到任务堆栈;
| 没使用;
|
暂停或阻塞时的环境保存
| 没使用;
| 没使用;
| 保存寄存器设置;
| 没使用;
|
线程如何使用共享的数据
| 流、队列、管道以及全局变量;
| 流、队列、管道以及全局变量;
| 流、队列、管道、邮箱、资源锁以及全局变量;
| 流、队列、管道以及全局变量;
|
线程的同步机制
| 没使用;
| SWI邮箱;
| 旗语,邮箱;
| 没使用;
|
钩子函数(HOOK)
| 没有;
| 没有;
| 任务创建、删除、退出、任务切换以及任务就绪时可以使用钩子函数;
| 没有;
|
通过DSP/BIOS配置工具静态创建
| 包含在默认的配置模板中;
| 可以;
| 可以;
| 可以;
|
动态创建
| 可以;
| 可以;
| 可以;
| 不可以;
|
动态改变优先级
| 不可以;
| 可以,调用函数SWI_raisepri,
SWI_restorepri;
| 可以,调用函数TSK_setpri;
| 不能;
|
暗含的事件记录
| 无;
| 放到执行队列(post)和完成软件中断;
| 任务就绪,任务开始,任务暂停,任务重新开始,以及任务终止;
| 无;
|
暗含的统计对象
| 监测值;
| 执行时间;
| 执行时间;
| 无;
|