原创 深入DSP/BIOS的API函数 - 周期函数PRD

2008-5-23 11:06 5748 3 3 分类: 处理器与DSP

        在我们的应用程序中,有一部分应用程序可以根据实时时钟来确定改函数运行的时间,也有一些应用需要根据I/O是否可用或者已经计划好的事件来确定运行的时间。这时,我们可以利用DSP/BIOS提供的PRD来完成这些要求。
 
一、PRD模块概述


        PRD函数大多被用于那些需要定时执行的函数,特别是一些需要周期性地执行而其执行频率很低地函数。如:键盘等慢速I/O设备地扫描,WATCHDOG地监控等。这些简单地应用情况我们仅仅需要在创建PRD模块时说明该PRD模块执行地时间间隔即可。而有些时候,我们需要根据条件来启动周期性函数,或对一些周期性函数进行延时操作,这是就可以调用PRD_start和PRD_stop等API函数来增强PRD模块地管理。
        PRD函数实际上是由内核的PRD_swi(SWI对象)来管理的。当用户在DSP/BIOS配置工具中建立一个PRD对象后,系统内核将自动创建一个软件中断模块PRD_swi。当PRD_tick函数计数达到预设值时,内核启动PRD_swi模块,并由该模块具体确定将哪个PRD对象放到执行队列中等待运行。
  
二、PRD模块配置
 
        1、根据实时时钟确定函数运行地时间
              打开PRD模块地属性修改窗口,勾选“Use CLK Manager to driver PRD”框,以启动运行周期函数管理程序。然后在每个PRD对象属性窗口中,设置该对象调用函数的执行频率。
 注意:当程序中有多个PRD对象时,所有的PRD对象都是由同一个周期计数器来驱动的。通常情况下,是由DSP/BIOS的时钟CL模块来管理的。每一个PRD对象在不同的周期内完成自己的功能。
        2、根据I/O地可用性或者一些其他事件确定函数运行时间
              如果用户想自己管理周期函数的计数器,则需勾除“Use CLK Manager to driver PRD”框,然后在程序中自己调用PRD_tick来对周期计数器加1,已保证周期函数能顺利启动。


三、PRD模块API函数说明


        1、PRD_getticks:返回周期性函数执行的计数值;
        2、PRD_start:启动该PRD模块计数器;
        3、PRD_stop:停止该PRD模块计数器;
        4、PRD_tick:系统内核或用户调用该函数完成对PRD管理模块的计数;


 

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /2 下一条