基于VDK的网络音频监控系统的设计与实现.docxVIP

基于VDK的网络音频监控系统的设计与实现.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

?

?

基于VDK的网络音频监控系统的设计与实现

?

?

基于VDK的网络音频监控系统的设计与实现

摘要:提出了一种基于ADI公司的ADSP-BF533和网络芯片LAN91C111的网络音频监控系统的设计与实现方案。介绍了VDK的组成与工作原理、TCP/IP堆栈移植、基于VDK的SOCKET编程、BF533和LAN91C111的电路连接,最后给出了基于VDK的网络通信程序的实现方法。

关键词:数字音频;VDK;BF533;LAN91C111;SOCKET;网络通信

0引言

近年来,数字音频监控系统在我国发展迅猛,尤其是在广播领域,该系统担当着越来越重要的角色,另外,在保证音频信息准确度和实时性的条件下,实现音频数据的网络传输也成为一项十分重要的技术。

本系统以BF533为核心处理芯片,以软件工具VDSP++的自带VDK内核为基础,移植了LWIP作为网络主要结构,实现了TCP/IP在ADSP-BF533上的移植。同时在VDK的基础上,通过开发Socket服务器程序,实现了嵌入式网络终端与上位机电脑直接的数据传输。

1VDK的组成原理

VDK实际上是一种带API函数库的实时操作系统内核.这是一款规模很小但却十分健壮的内核,它是VisualDSP产品的一部分,VDK也一样会随VisualDSP进行相应的升级或改版。使用VDK从产品维护的角度来看,是十分方便的。使用VDK也不会带来附加成本。它具有任务调度和任务管理功能,一共可支持32个任务。VDK是整个软件的基础,所有其他的程序都运行在该Kernel上。VDK的组成部分主要包括线程、调度、信号、中断服务程序、设备驱动、API等。

VDK的工作原理是首先引入多任务并且为每个任务都分配自己的堆栈空间,然后由任务调度器来决定哪个任务获得内核时间。任务调度主要涉及三种方式:

第一是合作调度方式。该方式是最简单的调度方式,系统中所有线程被赋予相同优先级的调度权,系统中线程在运行态占用处理器资源,在阻塞态时被排列在等待队列的最后,也可以自己调用yield函数,以使线程退出运行态而进入等待队列。另外,任何系统调用都会引起当前正在运行的线程阻塞。

第二是时间片轮转调度方式。时间片调度方式给予每一个优先权相同的线程固定的执行时间间隔。VDK中时间间隔是通过设定tick参数确定的。

第三是抢先式调度方式。如果等待队列中有比正在运行的线程优先级更高的线程,则正在运行的线程阻塞后进入等待队列,等待队列中优先级最高的线程获得执行权。该方式提供了比其他两种方式更有效、而且更灵活的调度方式。对嵌入式编程者来讲,最熟悉的调度方式就是“时间片轮转”的方式,在这种方式下,每个应用程序只占用很短的CPU时间,用户几乎无法察觉它们在进行轮换。操作系统或VDK会自动地将操作系统的控制权以轮转调度或时间片的方式在所有线程之间进行传递。每个线程所得到的处理器控制时间的长度由程序员定义。该方式的优先级可以被静态地分配,也可以被动态地分配。静态分配意味着应用程序在创建时就已经被指定好了优先级。动态分配则意味着程序的优先级在其运行时仍能被改变,也就是说,在线程实体化或运行时,其优先级都能被改变。

2TCP/IP堆栈移植

关于TCP/IP堆栈移植,ADI提供有快速解决方案,即一个轻便型堆栈Lwip。Lwip(Light-wEightInternetProtocol)是瑞士计算机科学院(SwedishInstituteofComputerScience)的AdamDunkels等人开发出来的一套用于嵌入式系统的开放源代码TCP/IP协议栈。Lwip的主要优点是可在保持TCP/IP协议主要功能的基础上,减少其对RAM的占用。一般情况下,它只要几十KB的RAM和40KB左右的ROM就可以运行,这使得Lwip协议非常适合在嵌入式系中使用。

Lwip堆栈的调用基于ADI的驱动模型以及SystemServicesLibraries(即系统服务函数库)。Lwip堆栈支持IP、ARP、ICMP、TCP、UDP等基本协议,同时支持一套标准的BSDSocket接口函数。

3基于VDK的SOCKET编程

应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口,以区分不同应用程序进程间的网络通信和连接。生成套接字主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Socket的

文档评论(0)

189****4123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档