《嵌入式多媒体网络通信系统的设计与实现.pdf》由会员分享,可在线阅读,更多相关《嵌入式多媒体网络通信系统的设计与实现.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、TM1300 嵌入式多媒体网络通信系统的设计与实现 TM1300 嵌入式多媒体网络通信系统的设计与实现 关键词:嵌入式微处理器,多媒体,网络,实时操作系统 BSP(Board Suppport Package),网络驱动 摘要:摘要:提出了一种利用 TriMedia 嵌入式微处理器 TM1300 为 CPU 的多媒体网络系统的整体硬件设计方案。介绍了利用设备库和 BSP 分层概念在系统中音视频外设编程的应用,重点介绍基于 pSOS实时操作系统网络部件 pNA+的网络驱动程序的基本设计方案及网络编程模型。多媒体技术与网络技术的有机结合满足信息化社会人们对各种信息的大量需求。网络多媒体技术的迅速发
2、展,加速了多种网络多媒体技术的应用,如:视频会议系统、数字视频监控系统、多媒体电子邮件、视频点播(VOD)、远程多媒体数据库等。随着微处理器技术的发展和嵌入式操作系统的日益广泛的应用,嵌入式系统以其高速响应、高度自动化、功能易于扩展等独特优势已成为计算机工业新的增长热点。而且,嵌入式设备接入Internt 已经成为不可避免的趋势,并显示出美好的应用前景。嵌入式系统在多媒体通信应用领域同样得到了很好的应用,各种基于嵌入式 Internet 技术的频服务器、多媒体远程监控系统已经成功应用于多种场合。本文论述一种具有网络通信和多媒体处理功能的嵌入式系统的设计实现方法。1 系统总体框架设计1 系统总体
3、框架设计 基本的多媒体通信系统一般应该具有各种音视频输入输出设备,并具有高速网络通信功能。本系统采用 Philips 公司 TriMedia 系列的 TM1300 媒体处理器作为主核来构造。其系统设计的各个功能模块如图 1 所示。1.1 TM1300 媒体处理器简介及其系统设计特点 TM1300 是一种具高质量数字视频和音频应用处理能力的媒体处理器。它拥有接线员大的超长指令字(VLIW)核 DSP CPU,独立于 DSP CPU 的 DMA 方式工作的音视频输入输出接口,32 位高带宽数据总线将所有的片上模块单元连接,如 PCI、SDRAM、图像协处理器(ICP)等,使数据处理极为快速方便。另
4、外,其强大的面向多媒体应用的指令系统和丰富的库函数使开发者能快速完成软件编程。TM1300的PCI/XIO接口控制和复用逻辑使其可以用于为PC机环境设计的PCI音视频处理加速卡,也可以用于独立工作的嵌入式系统。在系统设计中,既可以访问 PCI 外设,如 PCI 网络接口芯片,又可以访问各种 8 位外设,如 ROM、8 位 MCU、程序存储器 Flash Memory 等。1.2 系统框图说明及芯片典型选型 本系统是一种嵌入式系统,它能完成视频和音频数据的采集与输出功能,并能通过高速网络传递压缩编码后的音视频数据流。TM1300 具有强大的多媒体数据处理能力,它在系统中可以完成音视频数据的压缩编
5、码或解码,同时处理网络数据的收发,并可以通过 pSOS 实时操作系统协调和调度整个系统的任务,从而形成强大的多媒体音视频数据处理和传输系统。当然,本系统框图仅旨在一般意义上的系统,在实际应用中可以按照具体要求裁剪或添加其他外设,如 UART 控制器、Modem 控制器模块等,使系统具有用户特定的功能。(1)TM1300 的视频输入接口提供 810 位视频 A/D 转换接口,其最高采样率可以达 81MHz。可以采用 Philips 公司 SAA7113、SAA7114 等视频解码芯片(Video Decoder)来完成系统各种格式的视频信号采集。(2)视频输出接口提供 8 位的视频数据输出口,可
6、以完成解码后的视频数据输出,可以采用 Philips 公司的视频编码芯片(Video Encoder)完成视频数据的 D/A 转换。(3)音频信号采集和输出的数据都是通过 TM1300 的标准 I2C 总线接口来传输的。可以用Philips 公司的 UDA1344 音频编解码器(Audio Codec)完成音频数据的 A/D 和 D/A 转换。(4)基于网络接口芯片可以采用常用的 Realtek 公司的 RTL8139C,它是具有 10/100Mbps自适应功能的以太网收发控制器,是目前应用最为广泛的一种网络接口芯片。设计时,应为其配置启动 EEPROM,如 93LC46、93LC56 等。(
7、5)启动 EEPROM 一般使用符合 I2C 的器件,如 24LC16、24LC32 等。因为除了要存放系统启动设置信息外,还要存放用于系统自举 L1 代码,EEPROM 不得小于 2K 字节空间。EEPROM 具体内容格式参照 TM1300 芯片资料文档。特别值得注意,设计本系统 PCI 总线与设计 PCI 卡时不同的是,TM1300 使用 PCI 总线访问时总线仲裁需仲裁器。这是因为在基于 PC 机主板和 PCI 桥接芯片上已经有总线仲裁逻辑,不需要另外再作处理。嵌入的 TM1300 系统则需要仲裁来处理 PCI 总线的请求和应答,具体的逻辑设计应参考 PCI 规范相关内容。另外,嵌入式系
8、统需要通过 JTAG 口进行调试和仿真,并要在系统中加入程序代码存储器 Boot Flash。2 音视频外设编程的分层模型及应用2 音视频外设编程的分层模型及应用 系统中的视频 A/D、D/A 芯片单元通常连接在 TM1300 的 I2C 总线上,其初始化和设置是通过 I2C总线访问其内部寄存器实现,音频处理芯片则通过 I2C 接口总线与 TM1300 连接。TM1300 正是通过这些总线对其进行初始化设置。在软件上,TriMedia 层次化软件架构 TSA 引入设备库层(Device Library Layer)概念,该层为板级库到应用程序之间提供了一个公共接口。设备库输出两个接口,其架构由
9、图 2 所示。在设备库中,基本的 API 调用函数和功能描述在表 1 中给出。表 1 设备库 API表 1 设备库 API 函数名 功能说明 devGetCapabilities 设备兼容性请求,如版本、数据格式等 devOpen 请求设备实例 devInstanceSetup 设备实例设置 devStart 开始运行当前设备实例 devStop 停止运行当前设备实例 devClose 释放当前设备实例 例如,视频输出的设备库函数有 voCapabilities、voOpen、voInstanceSetup 等。在 TriMedia的软件开发环境 TriMedia SDE 2.2 对音视频等设
10、备库函数都有定义,因此使用时只需加入相应的头文件即可。TriMedia 软件架构中,设备库由板级欢欣鼓舞。板级库以板级支持包(BSP)的形式实现,BSP函数由设备库调用,它负责完成对硬件设备的所有初始化设备,高层软件不必深入到底层硬件设备细节就能完成对音视频等硬件设备的编程。BSP 允许设计者对底层的接口硬件设备(如 Audio D/A)改动,而不必改动该设备的上层编程。如要使用 AD1847 作为音频 A/D、D/A 设备,仅需要修改该部分的 BSP 即可。在 TriMedia SDE2.2 中已经附带很多典型器件的 BSP,如 SAA7113、SAA7121、UDA1344 等。开发音视频
11、应用程序时,只需要调用设备库 API、设置好数据缓冲区指针、指定相应的断服务程序来处理音视频设备接口到主存储器SDRAM的数据传递即可。用户也可以根据具体硬件自己开发BSP。3 面向 pSOS 网络驱动设计与网络编程模型3 面向 pSOS 网络驱动设计与网络编程模型 网络设备的驱动程序,按照网络协议栈分层概念,在这其将其称为网络接口(Network Interface,简称 NI),其主要功能是其将最底层的物理网络细节和上层应用程序隔离开,编程时用考虑网络硬件、网络传输介质和网络拓扑等。在 TriMedia 软件架构中,可以将网络驱动设计成 pSOS 网络部件 pNA+访问网络接口。这样设计的
12、优点是:上层软件可以使用 pSOS 系统的 pNA+软件部件丰富的系统调用函数,这些函数不但可以操作网络接口,而且可以操作套节字(Socket)进行高级 TCP/IP 网络编程,而不需用软件来实现 TCP/IP 协议栈。本节内容旨在论述基本 pNA+部件的网络接口设计和网络编程的基本概念模型,对其中存储配置管理没有作很多具体介绍。论述时按照由底层到高层的顺序进行。3.1 pSOS 简介及 TriMedia SDE 对 pSOS 的支持 pSOS 系统是一个模块化、高性能的实时操作系统,它提供了一个基于开放系统标准的多任务环境。PSOS 系统采用模块化结构,围绕 pSOS 实时多任务内核,集成了
13、基于标准结构的各种功能模块。其系统架构主要由实时多内核 pSOS+、多任务及多处理器的内核 pSOS+m、TCP/IP 管理部件pNA+、远程过程调用部件 pRPC+、文件系统管理部件 pHILE+、ANSI C 标准库部件 pRPEC+等组成。TriMedia 在得到 pSOS 系统开发商集成系统公司(IIS)许可权的前提下,已经对 pSOS 进行了移植和标准化,并在 TriMedia SDE 中发布,因此使用时不需要独立安装。在 TriMedia 软件架构中,pSOS 也是通过库链接到应用程序中。pSOS 内核的配置通过包含头文件(sys_conf.h)的形式来完成,头文件和内核编译后形成
14、 pSOS 板级支持包,即 pSOS BSP。3.2 在系统中设计面向 pNA+服务的网络接口 网络接口提供 pNA 对网络的访问,并将其与物理网络隔离开来。一个 pNA+节点可以连接一到多个网络接口,每个网络接口都分配独立的 IP 地址和接口号。在设计时,网络接口须为 pNA+提供 7 种不同的网络接口功能调用,在表 2 中将其列出。表 2 网络接口功能表 2 网络接口功能 服 务 功能号 功能描述 NI_INIT 1 初始化网络接口 NI_GETPKB 2 分配网络接口包缓冲区 NI_RETPKB 3 返回网络接口包缓冲区 NI_SEND 4 网络接口发送包 NI_BROADCAST 5
15、网络接口广播包 NI_POLL 6 查询包收发及缓冲区状态 NI_IOCTL 7 执行 I/O 控制(1)几种接口功能详细说明 NI_INIT:在 pNA+初始化时,自动调用该功能,也可以通过 pNA+的系统调用 add_ni()来激活该功能。在 NI_INIT 中初始化网络硬件、包缓冲池,设置网络接口的中断服务程序入口,并保存pNA+传递的 Announce_Packet 入口参数(包接收通知处理函数入口)及一些其他网络接口参数;NI_POLL:该功能用来查询网络是否有接收包,当有接收包时,它通过 Announce_Packet 入口点将包传递到 pNA+;NI_IOCTL:该功能通过 pN
16、A+传递的不同命令执行网络的 I/O 控制操作,主要有调协 IP 地址、多播主机地址的增加、删除等。另外几个接口功能不再详细介绍。(2)网络接口功能调用接口主函数 NIMain 设计 上述各种网络接口功能通过一个接口主函数调用,它提供 pNA+和网络接口之间功能调用的接口。调用时,pNA+必须为 NIMain 函数提供两个参数:一个整型的功能号;一个定义为 nientry 联合体指针的网络接口参数。其中 nientry 是由 niinit、nigetpkbniioctl 等结构体构成的联合,分别对应上述各功能的参数结构。所以,NIMain 函数的一般形式:long NIMain(int fun
17、ction,union nientry*p)/*注:NI_INIT 到 NI_OCTL 常数及本文所用到各种数据结构及系统函数在 TriMedia SDE pSOS头文件 pna.h 中定义*/int rc;switch(function)/*NI_INIT 调用处理*/*网络芯片及缓冲区初始化,记录网络接口号.*/Lan_chip_Init();InitBuffer();number=p-niinit.if_num;ni_init();case NI_GETPKB:/*NI_GETPKB 调用处理*/case NI_RETPKB:/*NI_RETPKB 调用处理*/case NI_SEND:
18、/*NI_SEND 调用处理*/case NI_BROADCASE:/*NI_BROADCAST 调用处理*/case NI_POLL:/*NI_POLL 调用处理*/case NI_IOCTL:/*NI_IOCTL 调用处理*/default:/*返回错误代码*/return rc;可以看出,pNA+在调用网络接口功能时,只需传递参数指针,其具体动作都是由 NIMain 函数完成,NIMain 起到了隔离网络底怪和 pNA+的作用。(3)pSOS 系统中加入网络接口的方法 在 pSOS 系统添加网络接口增添其它的设备驱动程序类似,采用 InstallNi 函数完成。其函数定义格式如下面程序片
19、段所示:struct ni_init*pna_Init;/*用于传入 pNA+配置表的 nc_nni 字段*/void InstallNi(int(*entry)(),int ipadd,int mtu,int hwalen,int flags,int subnetaddr,int dstipaddr)pna_Init-entry=(int(*)()entry;/*NI 接口函数入口*/pna_Init-ipadd=htonl(ULONG)ipadd);/*IP 地址*/pna_Init-mtu=ntu;/*大传输量,以太网为 1518 字节*/pna_Init-hwalen=hwalen;/
20、*硬件地址长度,以太网为 6*/pna_Init-flags=flags;/*接口标志*/*子网掩码、目的 IP、缺省变量*/ni_ptr-subnetaddr=htonl(ULONG)subnetaddr);ni_ptr-dstipaddr=htonl(ULONG)dstipaddr);ni_ptr-reserved0=0;3.3 pNA+部件的配置及初始化 pSOS 系统中,各个部件的配置都定义成一个结构体,并存放在结点配置表中(Node Configuration Table),结点配置表可以驻留在系统存储区的任意地址处。PNA+部件配置表结构为 pNAConfigTable。它用于定义
21、 pNA+所需的硬件和特定应用信息。如 pNA+代码入口、网络接口初始化信息、初始 ARP 表、套字节数量、pNA 后台程序优先级等。PNA+使用时,需要通过 pNA+配置表结构进行初始化。在初始化设置网络接口时,需调用前面所述的 InstallNi,调用时必须将其第一个函数指针变量参数 entry 用 NIMain 代入,系统自动执行 NI_INIT 功能调用,使 pNA+和特定网络接口实例关联起来。应用程序在进行 pSOS 系统初始化时,需要将 pNA+配置表加入结点配置表,以后就可以通过 pNA+访问网络接口了。3.4 使用 pNA+部件进行网络编程 pNA+部件提供了 pSOS 系统对
22、 TCP/IP 协议的支持。PNA+可以通过工业标准网络编程套节字Socket对 TCP/UDP、IP、ICMP、IGMP、ARP 等进行访问。PNA+还提供 NFS、Telne、RPC(远程过程调用)的支持。可见 pNA+可以满足绝大多数的网络编程。pNA+的软件架构可用图 3 表示。pNA+定义了很多系统调用函数进用户编程使用,包括与 Windows Socket 编程完全兼容的众多Socket API 函数,如:socket、close、bind、recvfrom、sendto、listen、accept、connect等。另外,还定义了套节字 Socket 的属性选项设置和控制、消息块
23、的分配、网络接口国入等 API函数,如 setsockopt、ioctl、pna_allocb、add_in 等。4 系统应用4 系统应用 设计的目的是将本系统用于银行监控系统中,作为多媒体音视频数据采集和网络传输的终端服务器。这种基于嵌入式技术监控系统的优点是:由于这种系统的硬件是一个与处理和操作系统捆绑较为紧密、功能专一、专门设计的独立设备,不像插卡系统那样受通用计算机系统中其它软硬件的影响,因此性能更稳定,且便于安装,省掉各种复杂的电缆,配置简单方便,仅设置一个 IP地址即可以使用了。本系统是基于具有开放性的 IP 网络来实现,具有通用性。而音视频数据处理可以按照实际应用采用各种不同的编解码标准,如 MPEG、JPEG、H.263 等。它可以用于多媒体远程监控系统、Web Camera(网络摄像机)、视频服务器、可视电话、视频会议终端等。