用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

在TMS320VC5402上实现的嵌入式TCP/IP协议栈

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 22:30:16
【本文由PB创新网为您整理】
摘要:实现一个运行在16位数字信号处理器TMS320VC5402上的小型嵌入式TCP/IP协议栈。对TCP/IP协议中的IP协议、ARP协议、UDP协议进行分析,完成基于TCP/IP协议的嵌入式网络系统。

    关键词:DSP TMS320VC5402 TCP/IP协议栈 嵌入式系统

引言

随着嵌入式系统应用范围的不断扩展及网络应用的日益普及,使得越来越多的嵌入式系统需要支持网络功能。TCP/IP是目前一种被广泛采用的网络协议。TCP/IP是一套把因特网上的各种系统互连起来的协议组,已成为事实上最常用的网络标准之一。本文对TCP/IP协议中的IP协议、ARP协议和UDP协议进行了分析,利用DSP的专用汇编语言实现了自己的通信协议。由此可使DSP直接对Ethernet发来的数据包解分析,并能按照TCP/IP协议正确打包和发送,最终实现DSP与PC机的数据通信,成功地完成了语音数据的采集和发送,实现了DSP与PC机的语音数据传输。

1 TCP/IP协议分析

一般在嵌入式系统中实现的TCP/IP协议都是面向数据采集和传输的,所以大部分实现都是IP协议、ARP协议、UDP协议或者是TCP协议。本文完成的是IP协议、ARP协议和UDP协议。一般认为TCP/IP为四层协议,实现的协议栈结构如图1所示。

DSP程序自下而上实现以下协议:

①媒介访问控制MAC(Media Access Control),向以太网收发数据。传送的数据格式为Ethernet数据帧格式。Ethernet帧的长度是可变的,但都大于64字节,小于1518字节。它包括头部、数据和尾部三部分。8字节的前导用于帧同步,CRC域用于帧校验。目的地址和源端地址是指网卡的物理地址(MAC地址),具有唯一性。

②地址解析协议ARP(Address Resolution Protocol),使得物理地址和IP地址可以对应起来。在Ethernet上,使用地址解析协议ARP协议来实现IP地址到MAC地址的动态转换。ARP Request(ARP请求)和ARP Response(ARP响应)类型都是0X0806。ARP报文格式包括硬件类型、协议类型、硬件地址长度、协议地址长度、操作字段、源端物理地址、源端IP地址、目的物理地址和目的IP地址。

③Internet网核心协议IP(Internet Protocol),实现IP网络上的数据传输的基础。IP协议提供了一种高效、不可靠和无连接的传输方式。IP报文是IP协议的基本处理单元,是由报头和数据两部分组成的。IP报头包括20字节的固定部分和变长的选项部分。20字节的固定部分包括IP协议的版本号、IP首部长度、服务类型、报文总长度、标识符、片偏移、报文生存时间、首部校验和以及源端IP地址和目的端IP地址。
javascript:window.open(this.src);" style="cursor:pointer;"/>
    ④用户数据报协议UDP(User Datagram Protocol),提供不可靠的数据传输功能。它不对要发送的数据进行缓冲,直接把从应用层收到的数据加上UDP首部发送出去。UDP不会把应用层多、次发送的数据合并成为一个包发送出去。这对于编写简单的请求/响应模式的应用是很方便的,而且利用UDP协议对传输速率也没有太大的影响。UDP协议的数据报格式包括源端口口、目的端口号、数据报长度、UDP校验和以及UDP数据。

⑤上层应用协议,对语音数据打包传输,实现DSP与PC机的语音数据传输。

2 硬件接口电路

硬件接口电路如图2所示。

微处理器采用的是TI公司生产的TMS320VC5402数字信号处理器。它采用了改进的哈佛结构,操作速率达到了100MIPS。以太网控制芯片采用RTL8019AS,是台湾Realtek公司生产的一种高度集成的以太网控制器。它实现了以太网媒介访问层(MAC)和物理层(PHY)的全部功能。译码、电平变换及向功能由XC95144xl完成。它是Xilinx公司生产的低功耗CPLD器件。HR61001G是中山汉仁电子有限公司生产的10BASE-T接口器件,起低通滤波和隔离变压等作用。

3 软件设计

3.1 DSP上嵌入式TCP/IP协议的汇编程序设计

由于DSP的资源有限,所以网络协议根据嵌入式应用进行了裁减。本设计中完成了ARP、IP、UDP等部分协议,既能够保证DSP接入以太网,又使DSP资源能够满足嵌入式系统应用的要求。

首先介绍一下所设计的DSP接收和发送以太网数据包所使用的数据结构。作者选择了联合体结构作为DSP接收和发送以太网数据包的缓冲区。联合体允许大小和类型不同的定义临时存储在同一存储器空间。这样的好处是各层协议之间数据的传递,实质上是数据指针在传递,而不是数据拷贝传递。而且各层协议可以直接使用该缓冲区,因为缓冲区内的结构体完全是按照各个协议的帧格式设计的。在联合体databuf中有四个结构体成员—ethernetpkt、ippkt、udppkt、arppkt,分别对应着以太网数据帧、IP协议、UDP协议、ARP协议的帧格式。这4个结构体成员是按照它们各自协议的帧格式进行定义的。值得注意的是,因为databuf中存储的是RTL8019AS发送的以太网数据帧,联合体的成员共用databuf缓冲区,所以在各个结构体中要预留低层协议报头存储空间。例如,IP协议的结构体ippkt就要在结构体定义中留下ethernetpkt报头的存储空间,即ippkt定义中前9个整型空间不能使用,从第10个整型空间开始才是IP数据报的内容。

下面分4层介绍所完成的嵌入式TCP/IP协议。

①物理层:主要完成以太网控制器RTL8019AS的复位,寄存器的初始化,并设置RTL8019AS的工作方式、中断响应、DMA通道接收缓冲区的地址设置等。

初始化程序如下:

WRITE 0x21,CR /*设置命令寄存器,选中第0页*/

WRITE 0x4c,PSTART/*页起始地址寄存器初始化,设定接收缓冲区起始页地址*/

WRITE 0x80,PSTOP /*页停止地址寄存器初始化,设定接收缓冲区终止页地址*/

WRITE 0x4c,BNRY

/*页边界地址寄存器初始化,设定从接收缓冲区读取数据的位置,读指针*/

WRITE 0x40,TPSR /*发送页地址寄存器初始化,设定发送缓冲区的起始页地址*/

WRITE 0xcc,RCR

/*接收配置寄存器初始化,使用接收缓冲区,仅接收自己地址的数据包、广播地址数据包和多点播地址包,小于64字节的包丢弃,校验错的数据包不接收*/

WRITE 0xe0,TCR

/*传输配置寄存器初始化,启用CRC自动生成和自动校验,工作在正常模式*/

WRITE 0xc9,DCR

/*数据配置寄存器初始化,使用FIFO缓存,工作在正常模式,DMA传输数据16位宽*/

WRITE 0x01,IMR /*中断屏蔽寄存器初始化,使能数据包正确接收中断*/

WRITE 0xff,ISR /*复位中断状态寄存器*/

WRITE 0x61,CR /*设置命令寄存器,选中第1页*/

WRITE 0x4d,CURR

/*当前页地址寄存器初始化,指向当前正在写的页的下一页,写指针*/

其中WRITE为宏指令,其定义如下:

WRITE .macrodata,reg

ST data,*(net_reg)

PORTW *(net_reg),reg

RPT #(20-1)

NOP

.endm

②网络层:主要实现IP协议和ARP协议。当DSP接收到正确的以太网数据包以后,调用check_packet函数处理。如果是ARP请求,则发送一个ARP应答;如果是ARP应答,则把对方的IP地址和以太网地址放到ARP缓存中;如果是IP包,则调用IP处理模块处理,接收数据。
javascript:window.open(this.src);" style="cursor:pointer;"/>
   

[1] [2]  下一页

Tags:

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:28,453.13000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号