无忧商务网,免费信息发布推广平台,您可以 [登陆后台] 或 [免费注册] 无忧商务网 | 企业黄页 | 产品库存 | 供求信息 | 最新报价 | 企业资讯 | 展会信息
黄页信息| 库存信息| 技术服务| 供应信息| 求购信息| 二手信息| 加工信息| 供求库| 报价库| 展会库| 代理信息| 保健| 生活黄页| 食谱| 网络黄页| 水族休闲| 人力HR| 招聘
首页>>生活网>>生活保健>>3C小百科-消费性电子-其他
调度器在DSP编程中的应用

<TABLE class=center_tdbgall style="WORD-BREAK: break-all" cellSpacing=0 cellPadding=0 width=760 align=center border=0>
<TBODY>
<TR>
<TD class=main_tdbgall vAlign=top width=575><STRONG>一. DSP介绍</STRONG>
<P>  DSP芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。它的内部采用程序和数据分开的哈佛结构,具有专门的乘法器,广泛采用流水线结构,提供特殊的DSP指令,在一个周期内完成一次乘法和一次加法。在国外,DSP芯片已经被广泛地应用于当今技术革命的各个领域;在我国,DSP技术也正以极快的速度被应用在通信、电子系统、信号处理系统、自动控制、雷达、军事、航空航天、医疗、家用电器、电力系统等许多领域中,而且新的应用领域在不断地被发掘。因此基于DSP技术的开发应用正成为数字时代的应用技术潮流。相对于单片机,它速度更快,外设集成度更高,程序存储器更大。在《时间触发嵌入式系统设计模式》一书中详细介绍了基于单片机的软件设计方法,而本文基于DSP对这种设计进行了扩展,使这种设计方法更为灵活,有效。</P>
<P><BR> <STRONG> 二.调度器介绍</STRONG></P>
<P>  可以从两方面来看调度器:一方面:调度器可以看作是一个简单的操作系统,允许以周期性或单次方式调用任务;另一方面:从底层角度来看,调度器可以看作是一个由许多不同任务共享的定时器中断服务程序。</P>
<P>  <STRONG>1. 调度器的组成</STRONG></P>
<P>  (1)调度器数据结构</P>
<P>  调度器的核心是调度器数据结构。这是一种用户自定义的数据类型,集中了每个任务所需的信息。</P>
<P><BR>  typedef struct <BR>    {<BR>     void ( * pTask)(void); 指向任务的指针(必须是一个void(void)函数)。<BR>     unsigned int Delay; 延时时标数:直到任务将下一次运行所剩时标数.时标,是硬件定时器周期中断设定的时间间隔,它是调度器的驱动者。<BR>     unsigned int Period; 周期时标数:任务连续运行所间隔的时标数。<BR>     unsigned int DelCounter; 若不为周期任务,表示任务运行次数;若为周期函数,则无意义。<BR>     char PrdOrTemp; 若PrdOrTemp=1,则为周期任务;若PrdOrTemp=0,则为非周期任务。<BR>     char RunMe; 当任务需要运行时(由调度器)加1 <BR>    } sTask;</P>
<P>  另外,还需要定义一些全局变量:unsigned int Task_Index 记录当前所添加任务索引变量,对于每一个任务都要定义一个任务索引变量,以便对任务进行查找。例如:可以利用任务索引变量对任务进行删除。任务队列sTask SCH_tasks_G [SCH_MAX_TASKS]记录所有任务数据结构的全局变量,其中SCH_MAX_TASKS为定义的最大任务数。虽然在系统运行时,任务有添加或删除,但系统不是很复杂,给出的SCH_MAX_TASKS一定要大于运行的任务数。</P>
<P><BR>  (2) 初始化函数(void SCH_Init_T(void))</P>
<P>  这个函数主要的作用是设置定时器,用来产生驱动调度器的定期时标。一般的DSP都有多个定时器,它们中的任何一个都可以用来驱动调度器。对于调度器来说,要在不同地微处理器运行,主要是初始化函数不同(即微处理器的定时器初始化不同)。时标设定的大小关系到CPU的利用率和系统的精度,它的大小与具体的系统有关,例如微处理器的速度,执行任务的大小,执行任务周期的大小等。TI 公司推出的2000 系列的DSP与一般51系列的单片机时标的设定有所不同:DSP的CPU频率可达到40M,而且采用流水线结构,基本上一个时钟周期执行一条指令;一般单片机频率为10M,而且远不能达到一个时钟周期执行一条指令。在《时间触发嵌入式系统设计模式》一书中,单片机时标设定为1ms,可获得很高的CPU利用率;而调度器应用在交流数据采集和控制系统中(采用TMS320LF2407), 时标设定为200us,CPU利用率也不小于百分之九十五。</P>
<P><BR>  (3) 添加任务的函数</P>
<P>  unsigned int SCH_Add_Task(void ( * pFunction)( DELAY, PERIOD, DELCOUNTER, PRDORTEMP)</P>
<P>  添加任务函数首先开始检查任务队列sTask SCH_tasks_G[SCH_MAX_TASKS]记录所有任务数据结构的全局变量哪一个空闲,然后将所添加任务的地址,延时执行时标数,周期时标数,任务运行次数,周期任务指示标志赋给任务队列那一个空闲全局变量。再记录下当前任务索引变量,以便在需要的情况下赋给任务自身索引变量,对任务进行跟踪。<BR><BR>  (4) 删除任务的函数</P>
<P>  void SCH_Del_Task(const unsigned int TASK_INDEX)</P>
<P>  删除任务函数从 TASK_INDEX得到所要删除任务的任务索引变量。然后将对应的任务数据结构的全局变量清除。删除任务时,对应的任务数据结构的全局变量的内容清除,但变量并没有撤销,当再次执行添加任务函数时,此任务数据结构的全局变量有可能分配给其他任务。</P>
<P><BR>  (5) 刷新函数 void SCH_Update(void)</P>
<P>  刷新函数是调度器的中断服务程序,用一定的时间间隔刷新调度器。它是由定时器溢出激活的,刷新函数并不复杂。当刷新函数确定某个任务需要运行时,将这个任务Runme标志加一,然后该任务将由调度函数执行。刷新函数的执行流程如图1所示。</P>
<P><BR>  (6) 调度函数 void SCH_Dispatch_Tasks(void)</P>
<P>  调度函数是用来执行任务的函数,而刷新函数并不执行任务。我们之所把刷新函数与调度函数分开,是处于与系统安全考虑的。如果刷新函数与调度函数合并,而一个任务出现异常在一个时标中没有执行完,那么定时器中断将被忽略,下一个任务将不能在预定的时间内执行。调度函数不仅可以运行所需要运行的任务,而且可以删除运行完毕的非周期任务。在调度函数中可加入一些其他功能,可以是系统在任务执行完毕后没有任务执行是进入低功耗状态,以节省电能。调度函数的执行流程如图2所示。<BR> </P>
<P>        <IMG style="WIDTH: 531px; HEIGHT: 417px" height=417 alt=调度函数的执行流程 hspace=0 src="http://www.dzdqw.com/jishu/UploadFiles_9637/200610/20061010223228667.jpg" width=531 border=0></P>
<P><BR> <STRONG> 2. 任务的运行</STRONG></P></TD>
<TD width=3></TD>
<TD class=Article_tdbgall vAlign=top width=180><!--网页中部右栏代码开始-->
<TABLE style="WORD-BREAK: break-all" cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=left_title align=middle>相 关 文 章</TD></TR>
<TR>
<TD class=left_tdbg1>
<LI><A href="http://www.dzdqw.com/jishu/DSP/200610/5467.html">基于Matlab的TMS320LF2407程序快速设计</A><BR>
<LI><A href="http://www.dzdqw.com/jishu/DSP/200610/5468.html">基于TMS320VC5410的会议电话的设计与实现</A><BR>
<LI><A href="http://www.dzdqw.com/jishu/DSP/200610/5469.html">ATMEGA48与DS1302组成的定时控制系统</A><BR>
<LI><A href="http://www.dzdqw.com/jishu/DSP/200610/5470.html">基于DSP的半自主远程控制移动机器人系统</A><BR>
<LI><A href="http://www.dzdqw.com/jishu/DSP/200610/5471.html">DSP应用优化技术――第二部分</A><BR>
<LI><A href="http://www.dzdqw.com/jishu/DSP/200610/5472.html">优化DSP应用的技术</A><BR>
<LI><A href="http://www.dzdqw.com/jishu/DSP/200610/5473.html">将RS-485用于数字发动机控制应用</A><BR>
<LI><A href="http://www.dzdqw.com/jishu/DSP/200610/5474.html">基于DSPE1-16XS的硬件开发平台设计</A><BR>
<LI><A href="http://www.dzdqw.com/jishu/DSP/200610/5464.html">用DSP实现高功率因数PWM整流器的控制</A><BR>
<LI><A href="http://www.dzdqw.com/jishu/DSP/200610/5465.html">基于DSP的指纹识别系统设计</A><BR></LI></TD></TR>
<TR>
<TD class=left_tdbg2></TD></TR>
<TR>
<TD class=left_title align=middle>推 荐 </TD></TR>
<TR>
<TD class=left_tdbg1>

</DIV><IFRAME name=google_ads_frame marginWidth=0 marginHeight=0 src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-3314932315682382&amp;dt=1167793473294&amp;lmt=1164901518&amp;prev_fmts=728x90_as%2C336x280_as&amp;format=160x600_as&amp;output=html&amp;url=http%3A%2F%2Fwww.dzdqw.com%2Fjishu%2FDSP%2F200610%2F5475.html&amp;color_bg=d6d4d0&amp;color_text=000000&amp;color_link=341473&amp;color_url=008000&amp;color_border=d6d4d0&amp;ad_type=text_image&amp;ref=http%3A%2F%2Fwww.dzdqw.com%2Fjishu%2FDSP%2FIndex.html&amp;cc=280&amp;u_h=768&amp;u_w=1024&amp;u_ah=740&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_java=true" frameBorder=0 width=160 scrolling=no height=600 allowTransparency></IFRAME></TD></TR>
<TR>
<TD class=left_tdbg2></TD></TR></TBODY></TABLE><!--网页中部右栏代码结束--></TD></TR></TBODY></TABLE>
相关资讯
类别浏览
安徽 北京 福建 甘肃 广东 广西 贵州 海南 河北 河南 黑龙江 湖北 湖南 吉林 江苏 宁夏 青海 山东 山西 陕西 上海 四川 天津 新疆 西藏 云南 浙江 重庆 辽宁 江西 内蒙古
无忧商务网 版权所有 Copyright © 2020.6 www.cn5135.com All Rights Reserved. 湘ICP备12008603号
本站所有产品都是会员自行发布,所有信息都有对方的企业名片和联系方式,如果您需要咨询产品具体参数和细节,请直接联系和咨询厂商,谢谢。
行业子站: 机械 库存 建材 物流 礼品 能源 农业 汽摩 食品 通讯 五金 玩具 矿产 印刷 休闲 服务 服装 化工 环保 电子 纺织 电工 电脑 电器 办公 安全 包装 仪器 家居