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线程可以被阻塞。
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线程可以被阻塞。
相关文章推荐
- Java多线程 12 剩下的一些特性
- C#一些实用的,容易被遗忘的特性,经验和技巧
- (一二〇)CALayer的一些特性
- div布局的一些特性
- Java一些特性的示例代码
- 文件操作一些特性
- [置顶] Qt5 中对 C++11 一些新特性的封装详解(二)
- 10.2 NSOperation/NSOperationQueue:提供了一些在GCD中不容易实现的特性,如:限制最大并发数量,操作之间的依赖关系.
- 浏览器的一些新特性
- Java的一些高级特性(三)——类部分
- RocketMQ的一些特性
- main函数的一些特性
- 面试时能和面试官聊的一些struts1的特性
- 一些操作和C++语言本身的特性可能成为应用程序的瓶颈
- 一些蛋疼的JavaScript语法特性
- Spring 2.0的新特性及一些点评
- CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
- 关于MVC的特性(AuthorizeAttribute)的一些理解
- UIButton 中的一些小特性
- bin_log的一些特性