DSP中的线程(转载)

原创 2007年09月30日 16:17:00
 DSP/BIOS中的线程和电脑中的线程有很大区别。关于DSP/BIOS的详细介绍请参考TMS320 DSP/BIOS User's Guide。下面简单地介绍一下DSP/BIOS的线程。
为了让DSP能够同时处理多个任务,DSP/BIOS提供了如下几种类型的线程。
HWI(硬件中断),SWI(软件中断),TSK(任务),IDL(空闲线程)。
HWI其实就是中断服务。当硬件中断产生之后,DSP/BIOS就会调用相应的HWI函数。如果把HWI设置为Dispatch的话,则会在调用HWI函数的前后自动调用HWI_enter和HWI_exit。在HWI函数的执行时,若有其他的硬件中断产生,当前的HWI会被新的中断抢占,也就是说DSP会先去执行新的HWI。如果希望当前的HWI在不被其他的HWI打断的话,可以在不能被打断的代码前后调用HWI_disable和HWI_enable。HWI的优先级是硬件级别的优先级(固定的),若同时有多个中断向DSP请求的话,它决定DSP先响应哪个中断。而中断所对应的HWI则是可以被任何其他的HWI抢占。
SWI有15级优先级,高优先级的SWI可以抢占低优先级的SWI。一般通过SWI_post(或者类似的函数)来启动它。SWI和HWI一样都是不能被阻塞(blocking)的线程。也就是说一旦它们被运行,就要运行到终点为止,除非被其它的线程抢占。
HWI和SWI都使用系统堆栈,而每个TSK都有自己的堆栈。可以在TSK线程之间随意地互相切换,切换时DSP/BIOS将自动地更新堆栈寄存器,因此TSK线程可以被阻塞。这样TSK就可以写成一个死循环:
While(1){
   Do_some_task();
   Yield_to_other_task();
}
Do_some_task做这个TSK所要做的事情,Yield_to_other_task则把控制权转给其他的TSK。例如如果是把控制权转给同样优先级的其他TSK,则可以调用TSK_yield函数。如果是要把控制权转给低优先级的TSK,则可以调用TSK_sleep函数让自己休眠一段时间,或者调用SEM_pend函数等待。除非TSK中调用了HWI_disable或者SWI_disable,否则它在任何时候都可以被HWI或者SWI抢占。
TSK和电脑上的线程有些类似,而HWI和SWI则不一样。下面举一个例子说明一下:假设有线程SWI1,SWI2,TSK1,TSK2。SWI1的优先级大于SWI2,TSK1的优先级大于TSK2。
则:
若在SWI2运行当中,SWI1被post了的话,DSP马上转到SWI1运行,并且直到SWI1运行结束之后再继续SWI2的运行。这就是说SWI只能被抢占,不能被阻塞。这是因为所有的SWI和HWI都公用系统堆栈,一旦SWI1运行,堆栈的最上层就变成了SWI1的环境,除非SWI1运行结束,是无法切换回到SWI2的环境中去的。
若在TSK2运行当中,TSK1进入ready状态的话,DSP马上转到TSK1运行。稍后如果TSK1被阻塞的话,DSP再继续TSK2运行,当TSK1所等待的信号就绪之后,再转入TSK1运行,如此反复。也就是说DSP可以在TSK之间相互切换。这正是因为每个TSK都有自己独立的堆栈可以保存自己的运行环境。

DSPBIOS多线程入门级要点

1、 多线程的意义,解决多个非相关的程序或函数同时运行的需求,这些程序运行和执行时间都有严格的要求。这样的程序被称为线程(thread)。在DSP中任何独立执行的指令流都被称为线程。 2、 DSP/...
  • zyzhangyue
  • zyzhangyue
  • 2015年05月17日 13:18
  • 1615

高通dsp多线程造成系统挂掉笔记

高通801 adsp上面可以跑3个线程,要注意哦,dsp上面的线程和arm上面线程不完全相同哦,dsp上面挂起已经介绍的线程会造成系统崩溃(我的电脑上面表现为连接adb的状态下,电脑会弹出好多个磁盘)...
  • qq_24815615
  • qq_24815615
  • 2016年12月19日 23:40
  • 408

DSP/BIOS程序开发五:线程调度

【声明:内容源于网络】   一. DSP/BIOS的高级应用        DSP在同一时间执行多个任务,当外部数据变为有效或者出现控制信号时,对外部事件进行响应。通常将这些任务称为线程,DSP/BI...
  • leegang12
  • leegang12
  • 2013年12月22日 22:33
  • 1021

CSDN的博文如何转载

最近发现CSDN的博客,是不能够转载的(或者说根本就没有转载连接;但是可以分享连接的,也只能分享微qq,人人,sina微博等非csdn博文)—— 最后在csdn官网上查看到,原来csdn是本着尊重原创...
  • u010700335
  • u010700335
  • 2014年05月28日 17:55
  • 2060

DSP/BIOS HWI设置为Dispatch的作用

DSP/BIOS中的线程和电脑中的线程有很大区别。关于DSP/BIOS的详细介绍请参考TMS320 DSP/BIOS User's Guide。下面简单地介绍一下DSP/BIOS的线程。      ...
  • zzsfqiuyigui
  • zzsfqiuyigui
  • 2011年11月06日 15:30
  • 2616

DSP/BIOS中的线程

DSP/BIOS中的线程和电脑中的线程有很大区别。 关于DSP/BIOS的详细介绍请参考TMS320 DSP/BIOS User's Guide。下面简单地介绍一下DSP/BIOS的线程。  ...
  • hezikui1987
  • hezikui1987
  • 2013年10月07日 16:46
  • 672

DSP/BIOS 中的线程

DSP/BIOS 中对线程的广义定义:DSP执行的所有独立的指令流。一个线程是一个单独的控制点,它可能包含一个子程序、一个宏或者是一个函数调用。 多线程的程序在一个单独的处理器上运行是通过允许高优先...
  • ghjk014
  • ghjk014
  • 2012年10月10日 14:32
  • 960

DSP中对中断的理解

对中断的理解:中断的执行过程是这样的,当符合中断条件时,外设自发地产生(不需要用户设置)一个中断标志位(通常是置位),例如SCI中的RXDY,这是不需要用户设置的.外设响应这个中断,也称为使能中断。如...
  • nicaiwo123321
  • nicaiwo123321
  • 2017年07月28日 16:00
  • 285

CSDN怎么转载别人的博客

以最新的google为例,来说说我们在阅读csdn遇到别人的好文章转载的办法; 首先,我们找到别人的博客,使用F12审查元素,如下: 找到article_content之后,鼠标右键,按照...
  • ILV_XJ
  • ILV_XJ
  • 2017年05月24日 16:07
  • 344

eclipse中的navigator,package explorer,project explorer

你说的三种视图模式基本上差不多,只不过视角不同而已。就像数据库中的视图一样。navigator:source以及resource是以文件夹为单位形式整合显示的。如果是学习阶段的话,建议使用该模式。本人...
  • zhouxy0901
  • zhouxy0901
  • 2017年04月10日 09:35
  • 334
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DSP中的线程(转载)
举报原因:
原因补充:

(最多只允许输入30个字)