摘要:基于IP网络的多媒体应用越来越广泛,本文首先解决多媒体DSP芯片TM1300与以太网控制器CS8900A的硬件接口的设计,分析嵌入式操作系统pSOS+内核中实现TCP/IP协议栈的网络模块pNA+,最后实现在pSOS+操作系统环境下CS8900A的网络驱动程序的设计。 关键词:TM1300 CS8900A pSOS+ pNA+ 驱动程序 1 概述 随着网络技术、多媒体技术的飞速发展,基于IP网络的多媒体应用越来越广泛。TM1300是Philips公司推出的一款高性能多媒体数字信号处理器芯片,适合于实时性强的音视频处理应用,可广泛应用于会议电视、可视电话、远程图像监控等应用场合。具有广阔的应用前景。 根据具体的基于IP网络上的多媒体应用系统的需要,采集的音视频数据经压缩处理后,一般要传送到远程终端或控制中心,这时就需要解决DSP应用系统与IP网络接口的问题。 考虑到国内局域网大部分是以太网,随着交换式网络、宽带网络的发展,使得基于以太网接入IP网络上的应用有着现实意义。 TM1300可以作为PC机的一个外设工作,此时可直接采用PC机上标准的以太网接口传输数据;TM1300支持独立引导,自成一个系统从而脱理PC环境工作,这为实际低价位高性能音频处理终端提供了可能。这种情况下,网络接口的设计就相对复杂一点,需要解决硬件接口电路的设计、基于实时操作系统pSOS+驱动程序的设计等。本文介绍以太网控制器CS8900A,并解决TM1300 DSP系统和CS8900A的硬件接口设计;简单介绍pSOS+操作系统内核中实现TCP/IP协议栈的网络模块pNA+,以及pSOS+操作系统下网络驱动程序的设计。 DSP芯片TM1300的核心是32位VLIW结构CPU,时钟频率可达166MHz,片内集成了SDRAM接口、PCI/XIO总线接口、图像协处理器、可变长解码器、音频输入输出接口、视频输入输出接口、同步串行通信接口等模块,各模块与SDRAM之间采用DMA方式传送数据。CPU各功能模块之间的协调、资源的分析、进程的调度,由运行在CPU上的一个由中断源触发的实时操作系统pSOS+控制。 网络控制器CS8900A是通过XIO总线与TM1300实现接口的。限于篇幅,这里重点介绍TM1300中用于外设端口扩展XIO总线。 TM1300片内的PCI/XIO复用总线接口给用户提供了无缝连接PCI设备及扩展8位外设端口的能力。当PCI/XIO总线接口中的XIO总线逻辑被激活时,作为TM1300系统扩展8位外设的总线,其中PCI-AD[23:0]为地址总线A23~A0,共提供了寻址16M个单元的能力;PCI-AD[31:24]为8位数据总线D7~D0;C/BE0#为读信号RD;C/BE1#为写信号WR;C/BE2#为数据选通信号DS。 3 CS8900A简介 CS8900A是Cirrus公司生产的一种高集成度的全面支持IEEE802.3标准的以太网控制器,其组成结构框图如图1所示。CS8900A支持8位、16位的微处理器,可以工作在I/O方式或Memory方式。片内集成了ISA总线接口,可以直接和有ISA总线的微处理器系统无缝连接。片内集成了4KB容量的PacketPage结构的RAM,这4KB存储器映像结构的RAM包括片内各种控制、状态、命令寄存器,以及片内发送、接收缓存。用户可以以I/O方式、Memory方式或DMA方式访问它们。 之所以选择CS8900A,是因为Cirrus提供了CS8900A的基于各种操作系统的驱动程序源代码,这就为开发带来了方便。基于pSOS的驱动程序是假设目标系统中包含了Intel 80X86的CPU和1个16位的ISA总线接口的,而TM1300中用于扩展外设的XIO总线是8位总线,可见硬件设计的主要任务是实现8位XIO总线与16位ISA总线时序的配合。驱动程序的设计主要是解决基于80X86芯片的源代码移植到TM1300上运行的问题。 4 TM1300与CS8900A硬件接口电路设计 TM1300的XIO总线用于提供用户扩展外设,有8根数据线D7~D0,24根地址线A23~A0,还有I/O读写信号RD、WR。所以,利用TM1300的8位XIO总线模拟1个16位的ISA接口和CS8900A的ISA总线接口连接,即可解决硬件接口的问题。图2给出了接口设计的原理框图。 ①A20用于控制读写。当A20=0时,CS8900A的高8位数据从缓冲器输入;当A20=1时,高8位数据经锁存器输出到CS8900A的D15~D8。 ②A0用于控制8位或16位操作。当A0=0时,对应16位数据读写;A0=1时,对应高8位数据读写。 对CS8900A的16位数据读和写操作有所不同。当TM1300从CS8900A读16位数据时,读16位数据(A0=0、A20=0),CS8900A的低8位数据直接通过8路模拟开关B输入到TM1300的XIO总线的8位数据线D7~D0;同时,高8位数据保存在缓冲器中,紧接着TM1300再读入缓冲器中的高8位数据(A0=1、A20=0)。同样,输出16位数据到CS8900A时,首先将要输出的高8位数据锁存到锁存器中(A0=1、A20=1),然后紧接着直接输出低8位数据到CS8900A的D7~D0(A0=0、A20=1),此时,锁存在锁存器中的高8位数据输出允许,也输出到CS8900A的D15~D8。 A12~A0直接连接TM1300的XIO总线的A12~A0。因此对于TM1300而言没有I/O和存储器的区别,所以WR经与片选取或后直接与CS8900A的IOW、MEMW连接。RD也是直接与CSCS8900A的IOR、MEMR连接。 5 CS8900A网络接口驱动程序设计 pSOS+是WindRiver公司专门为嵌入式系统设计和开发提供的一个模块化、高性能的实时操作系统。它采用模块化结构,包含的一系列软件功能模块有:实时多任务内核pSOS+、多处理器多任务内核pSOS+m、TCP/IP协议栈pNA+、远程调用函数库pRPC+和文件系统pHILE+等。 基于pSOS+实时操作系统的网络接口框图如图3所示。 下面根据网络结构的分层依次进行分析。 (1)物理层 以太网接口的物理实现前面已经分析过。 (2)NI(网络接口)层 pNA+通过一个用户提供的称为网络接口(NI)的软件访问网络。一方面它直接驱动网络接口芯片,控制太网数据帧的收发;另一方面它向pNA+提供符合pNA+要求的函数接口。在pNA+和NI之间的函数接口是标准的,和网络的物理媒介以及网络拓扑无关。这些函数可以使得pNA+不需要知道网络接口底层的细节,可以理解它是pSOS+中的硬件抽象层(HAL)。这些函数如表1所列。
这些函数的实现是网络驱动程序设计的主要任务,它们的代码在cs8900a.c中。这些函数一方面驱动网卡收发,另一方面为pNA+提供了一套屏蔽硬件底层细节的函数实现。另外,NI还包括一个用于处理数据包中断的中断例程。 每一个NI都应该分配一个唯一的IP地址,可以在pSOS+配置文件sys_conf.h中设定IP地址、网关、掩码等网络接口参数。如: #define SD_LAN1 YES #define SD_LAN1_IP 0xca726878 /*202.114.104.120设定IP地址*/ #define SD_LAN1_SUBNET_MASK 0xffffff00 /*设定掩码*/ #define SD_DEF_GTWY_IP 0xca726821 /*202.114.104.33设定网关*/ 另外,还要给这个CS8900A网卡设定一个MAC物理地址。这个地址可以在配置文件mybsp.h中设定为不与网上其它网卡冲突的任意值,如: #define BSP_CS8900_IND_ADDR "00:24:20:10:FF:41" (3)网络层及传输层 pSOS+的pNA+模块集成了网络层和传输层。PNA+在整个网络体系结构中处在第3层,包含IP协议、ARP协议的实理,ICMP协议、IGMP协议的实现;提供了对用户数据报UDP和流式TCP两种传输协议的支持,还提供了符合BSD标准的Socket接口,为应用的实现提供了方便的编程环境。 (4)应用层 在应用层实现用户的网络应用。 网络接口的调试是在PC机上PING这个CS8900A的网络接口。如果PING通,表明整个NI层和pNA+已经正常工作了。这个过程中,可以采用tmdbg.exe调试环境支持的DP()来测试一些结果,克服了TM1300系统没有显示支持的不足。 本系统在实验室局域网环境下,采用双绞线连接,实现了TM1300与CS8900A的以太网接口的设计,实验结果可以成功PING通。基于Socket的简单的C/S结构的网络测试程序也正常工作,在网络低负荷时,可以用于音视频多媒体数据网上传输,具有一定的使用价值。 | ||||||||||||||||||||||||
|