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

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

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 22:30:16
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科汇javascript:window.open(this.src);" style="cursor:pointer;"/>地址、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完成了嵌入式智能设备接入以大网,成功实现了应用嵌入式网络系统完成语音数据传输的功能。



上一页  [1] [2] 

Tags:

作者:佚名

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

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