首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

比较DSP/BIOS线程类型的特点

比较DSP/BIOS线程类型的特点



线












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)和完成软件中断;
任务就绪,任务开始,任务暂停,任务重新开始,以及任务终止;
无;
暗含的统计对象
监测值;
执行时间;
执行时间;
无;
返回列表