基于VDK的AD系列DSP软件开发技术_第1页
基于VDK的AD系列DSP软件开发技术_第2页
基于VDK的AD系列DSP软件开发技术_第3页
基于VDK的AD系列DSP软件开发技术_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、欢迎访问Freekaoyan论文站基于VDK的AD系列DSP软件开发技术欢迎访问Freekaoyan论文站    欢迎访问Freekaoyan论文站    摘要:作为AD系列DSP软件开发环境VisualDSP的一个重要组成部分,VDK特别适合用于开发需要精巧控制代码的系统。本文介绍了VDK的原理及基于他开发应用系统的优点。最后给出了一个基于VDK开发应用系统的简单例子。         关键词:VDK;ADSP软件设计;VisualD

2、SP;AD         当前数字信号处理器(DSP)已广泛应用于图像处理、智能化仪表、通信、自动控制等许多领域。AD公司是全球通用DSP领域最有影响力的厂家之一,VDK(VisualDSPKernel)是AD公司DSP软件开发工具VisualDSP的一个重要组成部分,他特别适合用来编写需要精巧控制代码的应用程序。某些大型系统可能需要许多算法完成,而每个算法还可能包含许多功能模块,这要由控制代码加以组织。处理器日益强大功能的发挥也需要精巧的控制代码。基于VDK开发的程序中,这些控制码是由一个叫“内核”的程序>

3、;' target='_blank' class='infotextkey'>管理的,内核常驻在DSP中。1VDK的原理        VDK实际上是一种带API(Application ProgramInterface)函数库的实时操作系统内核。下面先对VDK的各个组成部分加以介绍,然后总体描述其工作原理。文中所述的被调用的函数均在API函数库中。11线程        一个应用程序可以划

4、分为多个功能模块,每个模块可以用一个线程实现,线程之间可以互相通信。线程并不是直接定义的,而是先定义线程类型,再由线程类型例化得到。一个线程类型可以有多个例化,也就是说一个系统中多个线程可以属于相同的线程类型。线程类型实质上是各空间VDK下线程类的子类,而线程是该子类例化得到的对象。线程类型创建时被分配一个默认的优先级,该优先级可以通过调用函数SetPriority()改变,同一类型的线程具有相同的优先级。每个线程包含5个成员函数:创建函数、初始化函数、运行函数、错误处理函数和销毁函数。创建函数类似于C中类的构造函数,用于创建一个线程并为他分配资源。销毁函数类似于C中类的析构函数,用于销毁一个

5、线程并释放其所占资源。包含线程所要完成算法的运行函数是线程的核心部分,类似于C中的main()函数。12调度        调度是一种>' target='_blank' class='infotextkey'>管理和协调线程的机制,他保证优先级最高的就绪线程能够最早占用处理器来运行。所谓就绪,就是线程已经具备运行所需的所有数据、参数等资源。调度在具有最高优先级的线程改变时被激发。调度的实现基于一种被称为就绪队列的内部数据结构。就绪队列中的就绪线程先按优先级排队,

6、然后遵循先进先服务的原则占用处理器,如图1所示。线程最高优先级为0,是保留的;最低优先级为DSP数据字宽减去2,如32 b DSP为30。具有最低优先级的线程是预定义的IDLE线程,他在就绪队列为空时自动运行,使得DSP处于低功耗状态。13信号        信号是线程之间进行通信和同步的桥梁。(Semaphore)、事件位和事件(Event and EventBit)、设备标志(Device Flag)。        信标是应用系统

7、中所有线程都可访问的全局资源的抽象,VisualDSP20中他有2个值:真和假。他的值为真时,表示该资源可用,所有正在等待该信标的线程中优先级最高的那一个进入就绪队列等候运行;他的值为假时,表示该资源已被占用。线程或者中断服务程序利用信标所代表的资源完成自己的任务后调用API函数释放该资源以便其他线程或者中断服务程序使用。        事件和事件位是标识系统状态的信号,用于协调线程的执行。事件位用来指示系统某一要素所处状态;事件是所有事件位按照指定规则进行布尔操作的结果。任何一个事件位改变都会导致事件的值被重新计

8、算。信标标识系统资源是否可用,而事件位和事件标识线程中的操作主体利用系统资源完成其工作后所处的状态。线程可以调用PendEvent()等候一个事件发生。        设备标志是设备驱动与线程之间联系的纽带。例如他可以将AD采样数据的到来这一事件通知多个等待这些数据的线程,而信标、事件和事件位就不能描述他。由于和设备驱动息息相关,后面将会结合设备驱动对设备标志进行详细介绍。14中断服务程序        VDK的中断服务程序必须用汇编语

9、言编写而且应该比较短小,完成释放信标、改变事件位、激活设备驱动、与线程交换数据等工作,而所有的计算应该在线程域完成。中断可以调用API函数被允许或禁止。15设备驱动        基于VDK的应用程序可以分解为2个域:线程域和中断域。图2所示线程域中对线程进行>' target='_blank' class='infotextkey'>管理的机制称为软件调度,也就是前文所述的调度,由内核完成;中断域中对中断进行>' target='_blan

10、k' class='infotextkey'>管理的机制称为硬件调度,由DSP硬件(中断控制器)完成。硬件调度和软件调度是并行的,但中断发生时硬件调度抢先发生,这时软件调度和线程的优先级是无意义的。        众所周知,操作系统是将键盘、显示器、打印机和通信端口作为扩充文件来处理的,而这种处理是通过设备驱动程序实现的。作为一种操作系统内核,VDK也对外部设备进行抽象,可以调用API函数对他们进行打开和关闭、同步读和同步写以及控制。设备驱动是线程域和中断域之间沟通的桥梁,也是VDK应

11、用程序与外部环境通信的接口。其代码既不在线程中也不在中断服务程序中,而是一个独立的函数,他也不直接被内核和中断控制器调度。设备标志是与设备驱动相关联的信号。一个设备标志为真时,就表示与该标志对应的设备准备好,所有等待该设备标志的线程进入就绪队列。16API        API(Application Programming Interface)是存放应用程序可以调用的函数和宏的库。API函数库为VDK提供基本的服务:中断处理、调度>' target='_blank' class=&#

12、39;infotextkey'>管理、线程>' target='_blank' class='infotextkey'>管理、信标>' target='_blank' class='infotextkey'>管理、事件和事件位以及设备标志的传递等。        VDK总体工作原理可以用图3描述。        VDK应

13、用程序以线程域和中断域为主体,以信号为纽带,以设备驱动作为与外部环境进行通信的接口,以调度为线程和中断的>' target='_blank' class='infotextkey'>管理和协调机制来完成复杂的控制功能。2使用VDK开发应用程序的优点        使用VDK开发AD系列DSP应用程序具有以下优点:        (1)开发周期比手写控制代码要短得多代码自27动生成、文件

14、模板和设备驱动的标准接口,使软件开发者可以专注于算法和控制流程的设计,而不是程序执行的细节。        (2)调试方便程序执行过程中发生的线程切换、信号的等待和公布(post)等重要事件可用图形和图表直观地表示出来。        (3)码的可移植性和可重用性VDK提供了硬件的抽象层,用户可以用高级语言(C或C)进行同硬件平台无关的编程,生成的代码可以移植到AD公司所有的DSP核中。许多繁琐的数据读写等基本工作可以直接调用API函数

15、而无需自己编写。        (4)项目>' target='_blank' class='infotextkey'>管理方便采用基于线程的编程方式,可以把应用程序分解成许多独立的模块进行编写和调试,为项目>' target='_blank' class='infotextkey'>管理提供了极大的方便。3结语        VDK非常适

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论