基于单片机的嵌入式系统网络接入方案
扫描二维码
随时随地手机看文章
引言 在网络技术应用日益广泛的今天,网络传输是最经济有效的数据传输方式。如何利用廉价的51单片机来控制网卡芯片进行数据传输,加载tcp/ip协议连接到互联网,实现网络通信成了众多设计者的目标。但由于指令及资源的限制,实施过程会有许多困难。我们在设计方案中舍弃了耗费资源的高级协议,采用发送小数据包的方式以避免分段,来简化tcp协议和udp协议,实现互联接入。 硬件设计与实现 系统的硬件结构框图如图1所示。本系统的微控制器是winbond公司的78e58,网络接口芯片是与ne2000系列兼容的realtek公司的rtl8019as。rtl8019as内置了10base-t收发器,外接一个隔离lpf滤波器,经rj-45接口输出。外部ram是62256,24c02是i2c总线的 eeprom。 图1 嵌入式协议转换硬件框图 系统的软件设计与实现 为适应上网的需求,系统软件设计主要包括两部分内容:一是要执行对rtl8019as等的控制功能,二是要执行与连接internet相关的功能,实现tcp/ip协议。本文着重介绍第二部分,主程序采用c51语言编写。 rtl8019as初始化 要将嵌入式系统接入以太网,首先要设置rtl8019as的工作方式和工作状态,分配收发数据的缓冲区,通过对地址及数据口的读写来完成以太网帧的接收与发送。然后设置rtl8019as的工作参数,亦即设置内部控制寄存器。对rtl8019as的工作参数进行设置完毕后,进入正常工作状态,接下来就读写rtl8019as的ram以完成数据包的接收和发送。由于篇幅有限,这里就不再详述。 tcp/ip模型 tcp/ip协议是一套把internet上的各种系统互连起来的协议族,保证internet上数据的准确快速传输。tcp/ip通常采用一种简化的四层模型:应用层、传输层、网络层、链路层。 本系统中,应用层传递来自以太网和数据终端的数据,并对数据报作打包拆包处理。传输层采用传输控制协议tcp或用户数据协议udp。网络层实现ip协议,还要实现能报告数据传输差错等情况的icmp协议。链路层部分由rtl8019as完成,链路层由控制同一物理网络上的不同机器间数据传送的底层协议组成。 在单片机里只实现与需要有关的部分,而不使用的协议则一概不支持。单片机应用的tcp/ip协议大多是为了完成数据采集和数据传输,而不需要网页浏览、文件传输这些功能。 arp协议(地址解析协议) 以太网是tcp/ip协议主要采用的局域网技术,是系统接入internet的基础。arp本质是完成网络地址到以太网物理地址的动态映射。unix系统的arp协议支持以太网、令牌环等网络,但我们的单片机系统里只支持以太网。 ip协议(网际协议) ip是tcp/ip协议族中最为核心的协议。所有的tcp、udp、icmp及igmp数据都以ip数据报格式传输。就对某些协议而言,ip包最大可以为65k,可以分段传输,而在单片机里根本无法容纳如此大的数据包,因此一般是不支持分段的。我们的设计中采用发送小数据包的方式,以避免分段。 tcp协议(传输控制协议) tcp数据封装在一个ip数据报中,并具有自己的tcp首部, tcp协议定义十分复杂,鉴于51单片机的片内资源十分有限,本系统对tcp协议进行了一定的简化处理。标准的tcp协议使用慢启动的滑动窗口机制,如果只使用单个窗口,就变成了一种简单确认的处理方法。即只需对单个数据报发送和确认,节约了系统资源,也使维护更加方便。 编程实现tcp协议的另一个难点在于tcp建立连接和终止连接