- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于VDK的AD系列DSP软件开发技术
基于VDK的AD系列DSP软件开发技术
基于VDK的AD系列DSP软件开发技术
作者:佚名 ?来源:不详 ?录入:jdzj868 ?更新时间:2009-6-5 9:15:14 ?点击数:2
【字体: 】
!--插入广告JS代码--摘 要:作为AD系列DSP软件开发环境VisualDSP的一个重要组成部分,VDK特别适合用于开发需要精巧控制代码的系统。本文介绍了VDK的原理及基于他开发应用系统的优点。最后给出了一个基于VDK开发应用系统的简单例子。??? 关键词:VDK;ADSP软件设计;VisualDSP;A/D!--关键CH(结束)←--!--→标题EN(开始)--
当前数字信号处理器(DSP)已广泛应用于图像处理、智能化仪表、通信、自动控制等许多领域。AD公司是全球通用DSP领域最有影响力的厂家之一, VDK(VisualDSPKernel)是AD公司DSP软件开发工具VisualDSP的一个重要组成部分,他特别适合用来编写需要精巧控制代码的应用程序。某些大型系统可能需要许多算法完成,而每个算法还可能包含许多功能模块,这要由控制代码加以组织。处理器日益强大功能的发挥也需要精巧的控制代码。基于VDK开发的程序中,这些控制码是由一个叫“内核”的程序管理的,内核常驻在DSP中。1 VDK的原理 VDK实际上是一种带API(Application ProgramInterface)函数库的实时操作系统内核。下面先对VDK的各个组成部分加以介绍,然后总体描述其工作原理。文中所述的被调用的函数均在API函数库中。1.1 线 程 一个应用程序可以划分为多个功能模块,每个模块可以用一个线程实现,线程之间可以互相通信。线程并不是直接定义的,而是先定义线程类型,再由线程类型例化得到。一个线程类型可以有多个例化,也就是说一个系统中多个线程可以属于相同的线程类型。线程类型实质上是各空间VDK下线程类的子类,而线程是该子类例化得到的对象。线程类型创建时被分配一个默认的优先级,该优先级可以通过调用函数SetPriority()改变,同一类型的线程具有相同的优先级。每个线程包含5个成员函数:创建函数、初始化函数、运行函数、错误处理函数和销毁函数。创建函数类似于C++中类的构造函数,用于创建一个线程并为他分配资源。销毁函数类似于C++中类的析构函数,用于销毁一个线程并释放其所占资源。包含线程所要完成算法的运行函数是线程的核心部分,类似于C中的main()函数。1.2 调 度 调度是一种管理和协调线程的机制,他保证优先级最高的就绪线程能够最早占用处理器来运行。所谓就绪,就是线程已经具备运行所需的所有数据、参数等资源。调度在具有最高优先级的线程改变时被激发。调度的实现基于一种被称为就绪队列的内部数据结构。就绪队列中的就绪线程先按优先级排队,然后遵循先进先服务的原则占用处理器,如图1所示。线程最高优先级为0,是保留的;最低优先级为DSP数据字宽减去2,如32 b DSP为30。具有最低优先级的线程是预定义的IDLE线程,他在就绪队列为空时自动运行,使得DSP处于低功耗状态。1.3 信号 信号是线程之间进行通信和同步的桥梁。(Semaphore)、事件位和事件(Event and EventBit)、设备标志(Device Flag)。
信标是应用系统中所有线程都可访问的全局资源的抽象,VisualDSP2.0中他有2个值:真和假。他的值为真时,表示该资源可用,所有正在等待该信标的线程中优先级最高的那一个进入就绪队列等候运行;他的值为假时,表示该资源已被占用。线程或者中断服务程序利用信标所代表的资源完成自己的任务后调用API函数释放该资源以便其他线程或者中断服务程序使用。 事件和事件位是标识系统状态的信号,用于协调线程的执行。事件位用来指示系统某一要素所处状态;事件是所有事件位按照指定规则进行布尔操作的结果。任何一个事件位改变都会导致事件的值被重新计算。信标标识系统资源是否可用,而事件位和事件标识线程中的操作主体利用系统资源完成其工作后所处的状态。线程可以调用PendEvent()等候一个事件发生。 设备标志是设备驱动与线程之间联系的纽带。例如他可以将A/D采样数据的到来这一事件通知多个等待这些数据的线程,而信标、事件和事件位就不能描述他。由于和设备驱动息息相关,后面将会结合设备驱动对设备标志进行详细介绍。1.4 中断服务程序 VDK的中断服务程序必须用汇编语言编写而且应该比较短小,完成释放信标、改变事件位、激活设备驱动、与线程交换数据等工作,而所有的计算应该在线程域完成。中断可以调用API函数被允许或禁止。1.5 设备驱动 基于VDK的应用程序可以分解为2个域:线程域和中断域。图2所示线程域中对线
文档评论(0)