您的位置:首页 > 其它

SWI,HWI,TSK的一些特性

2012-02-27 16:25 92 查看
DSP/BIOS提供了如下几种类型的线程。HWI(硬件中断),SWI(软件中断),TSK(任务),IDL(空闲线程)。

HWI在配置的时候,如果勾选了Dispatch的话,则会在调用HWI函数的前后自动调用HWI_enter和HWI_exit。如果不勾选的话,需要在程序中写入这两句话。这两个函数完成如下2个功能。

1在执行其ISR之前将它所用到的可能改变的寄存器保护起来,返回时要将这些值填写回去。

在使用HWI对象时,若其中断处理函数使用C语言来编写则一定不能使用interrupt关键字或INTERRUPT pragma,因为HWI对象调用的函数已经包含了这些功能

如果希望当前的HWI在不被其他的HWI打断的话,可以在不能被打断的代码前后调用HWI_disable和HWI_enable。

SWI是一条道跑到黑,如果有SW1,SW2,SW2运行当中,SW1被post的话,立刻执行SW1,SW1执行完后,在执行SW2

TSK是一条道来回跑,任务之间可以相互切换,不用将任务全部执行完在跳转回切换前的任务。

HWI和SWI都使用系统堆栈,而每个TSK都有自己的堆栈。可以在TSK线程之间随意地互相切换,切换时DSP/BIOS将自动地更新堆栈寄存器,因此TSK线程可以被阻塞。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: