首页 | 求职宝典 | 行业秘籍 | 试题精解 | 成功职场 | 资料下载 | 管理文库 | 行业资讯 | 范文
创业 | 毕业生 | 个人简历 | 招聘信息 | 薪酬资讯 | 在线测试 | 酷职贴吧 | 笑话游戏 | 论文
用户名:  
密 码:  
校验码:  
   
找更多文章资料,输入关键字搜索
 
首页 >> 论文频道 >> 电子技术论文 >> DSP论文
在TMS320VC5402上实现的嵌入式TCP/IP协议栈
来自: 作者: 匿名 发布时间:2007-10-1 20:05:39
摘要:实现一个运行在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地址。

    ④用户数据报协议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处理模块处理,接收数据。

    check_packe函数如下:

arp: CMPM *(databuf.ethernetpkt.protocol),#0x0608

;判断协议类型是否为ARP协议

BC ip,NTC

CALL arp_process ;调用ARP协议处理模块

ST #taskfree,*(task);设置空闲任务指针

B taskfree ;跳转到空闲任务

Ip: CMPM *(databuf.ethernet.protocol),#0x0008;判断协议类型是否为IP协议

CC ip_process,TC ;若为IP协议,调用IP协议处理模块

ST #taskfree,*(task) ;设置空闲任务指针

B taskfree ;跳转到空闲任务

arp_process:接收ARP请求后,封装好ARP数据报,调用send_packet函数完成发送。在本设计中,DSP工作复位时,ARP协议发送一个ARP请求,发送自己的IP地址和物理地址给PC机。

ip_process:接收IP数据报后,判断协议 ,协议如果为17,即是UDP协议,则调用函数udp_process,处理UDP数据报,否则丢弃该数据报。在本设计中,正确接收一帧数据报后,会给PC机一个应答信息,通知PC机已经正确接收了数据报,可以继续发送数据。应答信息的封装首先调用create_udp_packet完成对应答信息的UDP协议的封装,然后调用create_ip_packet函数,这个函数完成了把封装好的UDP数据报再封装成IP数据报。最后调用send_packet函数完成发送。

③传输层:如果IP数据报中的协议类型为17,则为UDP数据报,需要调用udp_process函数处理数据报。正确接收了数据后,给发送一个应答信息,上面已经提到了具体过程,这里不再复述了。这里介绍一下UDP协议的一个难点—UDP数据的和校验。UDP和校验要求加上UDP伪首部以后再进行校验,伪首部格式包括32位源IP地址、32位目的IP地址、8位数据0、8位协议和16位UDP数据长度。作者根据接收缓冲区的内存管理特点,即接收缓冲区的成员结构共用同一块数据存储区,所以将IP协议的帧头从生存时间开始到帧头结束封装成UDP伪首部。其实这样做,只需将8位生存时间改为全0,16位首部和改为UDP数据长度即可,8位的协议、32位源IP地址和32位的目的IP地址不用改动。作UDP和校验的时候,从IP协议帧头的报文生存时间开始到IP数据报的数据部分结束作带进位的相加,最后比较对和校验就可以了。

④应用层:由于传输的是语音数据,将采集的数据经过A律压缩放到DSP数据缓冲区databuf中,应用TCP/IIP协议将其发送给PC机。将PC机发送来的语音数据A律压缩通过DSP的多通道缓冲串行口发送给声卡。对于语音数据的处理,交给PC机完成,这里只实现数据的传输。

注:TCP/IP协议源码见网站 www.dpj.com.cn 。

3.2 PC机上的应用程序设计

使用的VB编程,利用Winsock控件完成语音数据的接收。这方面有很多例子可以借鉴,所以就不作太多的介绍。

结语

目前,基于DSP的嵌入式以太网的多媒体应用越来越受到广泛的关注和应用,而且基于TCP/IP协议的嵌入式网络系统已经成功地应用到了语音传输、远程图像控制和数据传输中。其便于操作、传输速度快等优点,受到了有关专家的一致好评。本文利用数字信号处理器DSP和RTL8019AS完成了嵌入式智能设备接入以大网,成功实现了应用嵌入式网络系统完成语音数据传输的功能。

注:只要你是出于公益目的,我们不限制任何人转载本站内容,但请注明出处和原始网址
 
[我要评论]
推荐栏目
管理制度 质量管理 市场营销 合同范本 企划方案 商业计划书 可行性报告 六西格玛 JIT精益生产 KPI TPM 提案
调研报告 品牌管理 战略管理 项目管理 生产管理 经营管理 人力资源 财务管理 汽车行业 现场管理 招聘信息 论文
面试技巧 英文简历 自我鉴定 推荐信 电子简历 简历封面 Resume CV Cover Letter 思想汇报 入党申请书 李小龙
北京数码轻舟科技发展有限公司版权所有 ICP京050055号 客服电话:(010)62535917
地址:北京市海淀区成府路35号北楼119室 邮编:100083 传真:(010)62535917
联系我们:webmaster#koojob.com 客服邮箱:service#koojob.com(请将#替换@)
©Copyright2004-2006 Beijing Shumaqingzhou Technology Development Co., Ltd.