TCP/IP协议在VRS51单片机上的实现
发布时间:2008/5/29 0:00:00 访问次数:797
随着人们对信息化程度的要求不断提高, 设备上网已经成为一个趋势。32位机资源丰富,上网方案也较为成熟,但成本相对较高,因而价位偏低的8位机上网方案成为研究的热点。但是,8位机资源有限,因此在实现8位机以太网连接时,一定要考虑周全。本文介绍在vrs51l3074上实现tcp/ip协议栈uip的移植,成功实现了socket通信。
硬件平台
本方案的硬件平台主要由vrs51l3074和cs8900a组成,经网络变压器的隔离,cs8900a与网络接口rj-45连接上,这样整个系统就可以连接到ethernet。数据输入可由串口传递给系统。
vrs51l3074简介
vrs51l3074是ramtron公司最新推出的单周期、基于8051内核、功能丰富的soc单片机,是全球第一款集成fram的高性能单片机。cpu最高处理速度可达40mips,内置64kb flash存储器支持isp、iap功能、4kb+256b的sram以及8kb的fram,带有完全可配置的i2c接口和spi接口等片内外设,支持jtag下载和非侵入式在线调试。vrs51系列单片机和8051完全兼容,支持sdcc、keil等c编译器,编译和下载时需要一些特殊的配置。versa ware jtag软件是vrs51系列单片机的下载工具,和keil uvision配合使用时需要一些配置。
cs8900a简介
cs8900a是cirrus logic公司的一种低价位、高集成度、低功耗、全双工的16bit以太网控制器,是一款专门为嵌入式系统设计优化的以太网控制器。该芯片的突出特点就是使用灵活,其物理层接口、数据传输模式、工作模式都能根据需要而进行动态配置,可通过内部寄存器的配置来适应不同的应用环境。cs8900a有三种工作模式:i/o模式、存储器模式和dma模式。
cs8900a基本工作原理是:在收到由主机发来的数据报后,侦听网络线路。如果线路忙,它就等到线路空闲为止,否则立即发送该数据帧 。发送过程中,首先它添加以太网帧头(包括先导字段和帧开始标志),然后生成crc校验码,最后将此数据帧发送到以太网上。接收时,它将从以太网收到的数据帧在经过解码、去掉帧头和地址检验等步骤后缓存在片内。通过crc校验后,它会根据初始化配置情况,通知主机cs8900a收到了数据帧,最后用某种传输模式传到主机的存储区中。
嵌入式tcp/ip协议栈uip
tcp/ip是一个协议族,它是一个四层协议模型,包括应用层、传输层、网络层和网络接口层。应用层定义清晰的会话过程,http、ftp、telnet和smtp等都属于应用层协议;传输层提供端到端的通信,该协议有传输控制协议(tcp)和用户数据报协议(udp);网络层负责数据打包和逻辑寻址,ip、icmp和arp等协议都属于网络层;网络接口层负责在源和目的节点间线路上进行无差错的传输数据,具有流量控制等功能。
tcp/ip协议较为复杂,实现起来非常困难,一般都采用现有的tcp/ip协议栈来实现。本系统就是采用源码开放的免费嵌入式tcp/ip协议栈uip来实现tcp/ip协议的。
uip是专门为8位和16位嵌入式微控制器设计的微型tcp/ip协议栈 , 它是由瑞典计算机学院的adam dunkels开发的免费开源软件,最新版本为uip1.0。uip完全是由c语言编写的,因此可移植到各种不同的cpu结构和操作系统上。uip提供了网络通信所必须的协议,本身代码和占用的内存数都非常少,uip的源代码只有几kb,ram仅占用几百字节。uip具有如下特点:
1)完整的说明文档和公开的源代码,全部由c编写,并附有详细的注释,便于移植。
2)极少的代码占用量和ram资源要求,尤其适合于8/16位单片机。
3)支持ip、arp、tcp、icmp和udp等基本功能。
4)高度的可配置性以适应不同资源条件和应用场合。
5)支持多个主动连接和被动连接并发,支持连接的动态分配和释放。
6)简易的应用层接口和设备驱动层接口。
7)完善的示例程序和协议实现范例。
为了节省资源占用,简化应用接口,uip1.0在内部实现上做了特殊处理。
1)注意各模块的融合,减少处理函数的个数和调用次数,提高代码复用率以减少rom占用。
2)基于单一全局数组的收发数据缓冲区,不支持内存动态分配,由应用负责处理收发的数据。
3 )基于事件驱动的应用程序接口,各并发连接采用轮循处理,仅当网络事件发生时,由uip内核唤起应用程序处理,这样uip用户只须关注特定应用就可以了。传统的tcp/ip实现一般要基于多任务处理环境,而大多数8位机系统不具备这个条件。
4)应用程序主动参与部分协议栈功能的实现(如tcp的重发机制,数据包分段和流量控制),由uip内核设置重发事件,应用程序重新生成数据提交发送,免去了大量内部缓存的占用。基于事件驱动的应用接口使得这些实现较为简单。
uip实现了tcp/ip协议族的四个基本协议:arp(地址解析协议),ip(网际协议),icmp(因特网信息控制协
随着人们对信息化程度的要求不断提高, 设备上网已经成为一个趋势。32位机资源丰富,上网方案也较为成熟,但成本相对较高,因而价位偏低的8位机上网方案成为研究的热点。但是,8位机资源有限,因此在实现8位机以太网连接时,一定要考虑周全。本文介绍在vrs51l3074上实现tcp/ip协议栈uip的移植,成功实现了socket通信。
硬件平台
本方案的硬件平台主要由vrs51l3074和cs8900a组成,经网络变压器的隔离,cs8900a与网络接口rj-45连接上,这样整个系统就可以连接到ethernet。数据输入可由串口传递给系统。
vrs51l3074简介
vrs51l3074是ramtron公司最新推出的单周期、基于8051内核、功能丰富的soc单片机,是全球第一款集成fram的高性能单片机。cpu最高处理速度可达40mips,内置64kb flash存储器支持isp、iap功能、4kb+256b的sram以及8kb的fram,带有完全可配置的i2c接口和spi接口等片内外设,支持jtag下载和非侵入式在线调试。vrs51系列单片机和8051完全兼容,支持sdcc、keil等c编译器,编译和下载时需要一些特殊的配置。versa ware jtag软件是vrs51系列单片机的下载工具,和keil uvision配合使用时需要一些配置。
cs8900a简介
cs8900a是cirrus logic公司的一种低价位、高集成度、低功耗、全双工的16bit以太网控制器,是一款专门为嵌入式系统设计优化的以太网控制器。该芯片的突出特点就是使用灵活,其物理层接口、数据传输模式、工作模式都能根据需要而进行动态配置,可通过内部寄存器的配置来适应不同的应用环境。cs8900a有三种工作模式:i/o模式、存储器模式和dma模式。
cs8900a基本工作原理是:在收到由主机发来的数据报后,侦听网络线路。如果线路忙,它就等到线路空闲为止,否则立即发送该数据帧 。发送过程中,首先它添加以太网帧头(包括先导字段和帧开始标志),然后生成crc校验码,最后将此数据帧发送到以太网上。接收时,它将从以太网收到的数据帧在经过解码、去掉帧头和地址检验等步骤后缓存在片内。通过crc校验后,它会根据初始化配置情况,通知主机cs8900a收到了数据帧,最后用某种传输模式传到主机的存储区中。
嵌入式tcp/ip协议栈uip
tcp/ip是一个协议族,它是一个四层协议模型,包括应用层、传输层、网络层和网络接口层。应用层定义清晰的会话过程,http、ftp、telnet和smtp等都属于应用层协议;传输层提供端到端的通信,该协议有传输控制协议(tcp)和用户数据报协议(udp);网络层负责数据打包和逻辑寻址,ip、icmp和arp等协议都属于网络层;网络接口层负责在源和目的节点间线路上进行无差错的传输数据,具有流量控制等功能。
tcp/ip协议较为复杂,实现起来非常困难,一般都采用现有的tcp/ip协议栈来实现。本系统就是采用源码开放的免费嵌入式tcp/ip协议栈uip来实现tcp/ip协议的。
uip是专门为8位和16位嵌入式微控制器设计的微型tcp/ip协议栈 , 它是由瑞典计算机学院的adam dunkels开发的免费开源软件,最新版本为uip1.0。uip完全是由c语言编写的,因此可移植到各种不同的cpu结构和操作系统上。uip提供了网络通信所必须的协议,本身代码和占用的内存数都非常少,uip的源代码只有几kb,ram仅占用几百字节。uip具有如下特点:
1)完整的说明文档和公开的源代码,全部由c编写,并附有详细的注释,便于移植。
2)极少的代码占用量和ram资源要求,尤其适合于8/16位单片机。
3)支持ip、arp、tcp、icmp和udp等基本功能。
4)高度的可配置性以适应不同资源条件和应用场合。
5)支持多个主动连接和被动连接并发,支持连接的动态分配和释放。
6)简易的应用层接口和设备驱动层接口。
7)完善的示例程序和协议实现范例。
为了节省资源占用,简化应用接口,uip1.0在内部实现上做了特殊处理。
1)注意各模块的融合,减少处理函数的个数和调用次数,提高代码复用率以减少rom占用。
2)基于单一全局数组的收发数据缓冲区,不支持内存动态分配,由应用负责处理收发的数据。
3 )基于事件驱动的应用程序接口,各并发连接采用轮循处理,仅当网络事件发生时,由uip内核唤起应用程序处理,这样uip用户只须关注特定应用就可以了。传统的tcp/ip实现一般要基于多任务处理环境,而大多数8位机系统不具备这个条件。
4)应用程序主动参与部分协议栈功能的实现(如tcp的重发机制,数据包分段和流量控制),由uip内核设置重发事件,应用程序重新生成数据提交发送,免去了大量内部缓存的占用。基于事件驱动的应用接口使得这些实现较为简单。
uip实现了tcp/ip协议族的四个基本协议:arp(地址解析协议),ip(网际协议),icmp(因特网信息控制协