在网络技能运用日益广泛的今日,网络传输是最经济有用的数据传输办法。怎么运用廉价的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树立衔接和停止衔接的详细进程的完结。TCP协议是一个面向衔接的协议,衔接的两边无论是哪一方向另一方发送数据,都有必要先经过“三次握手”进程在两边之间树立一条衔接,和经过“四次握手”停止衔接。
衔接树立后,TCP就可以发送数据块,称为数据段。当TCP宣布一个段后,它发动一个定时器,等候意图端承认收到这个报文段。假如不能及时收到一个承认,将重发这个报文段。别的,TCP将坚持它首部和数据的查验和。
体系主运用程序的完结
体系初始化后,进入主程序循环的两部分:一是对接纳到的以太网数据帧进行解包,供运用程序运用,一是对发送的数据进行封装并发送,使选用TCP/IP协议的以太网内的一切计算机都能收到此数据帧。图2是体系的主运用程序的流程图。
图3 体系的主运用程序的流程图
单片机完结TCP/IP协议的难点
51单片机的程序空间、可用的内存RAM、运算速度、指令集等原因,在UNIX或Windows上完结的TCP/IP协议的源代码并不可以直接移植到8位的单片机上。在51单片机上编写代码会受许多约束,特别是完结TCP/IP协议这样联系杂乱的程序,咱们有必要依据实际状况尽可能发掘51单片机的功能。归纳来说,单片机完结与UNIX完结TCP/IP有如下差异:
(1)操作体系:Windows或UNIX都是多任务操作体系,这使得代码编写简略化,在单片机只能是单任务体系,代码结构为次序履行+硬件中止的办法,无法并发履行。
(2)内存分配:Windows或UNIX的内存分配是动态的。而一般单片机只要外接的一块32K字节的RAM,并一起被各个协议运用。一个最大的以太网数据包有1.5K字节,分配一包的缓冲区就要1.5K字节。为此,咱们分配一个256×6=1536个字节的固定的RAM来寄存收到的以太网数据包。收到一包就处理一包。
(3)指针:在PC里一切程序都有必要先放在RAM里才干运转,所以它的指针都指向RAM。而单片机的结构和PC的结构有很大不同,指针类型许多,各指针运算的速度也不一样,特别是“一般指针”运算很慢,还会占用许多程序空间。UNIX完结TCP/IP的源代码中,用得最多的便是指针,而在单片机里一般要求少用指针,或运用特定类型的指针。对运用UNIX的源代码需求作许多的改动。
(4)参数传递:在UNIX完结的TCP/IP源代码中,一般有许多的参数传递,而在单片机里答应传递的参数是有限的(由于遭到内部RAM的约束),一起参数传递的进程要糟蹋程序代码空间,也下降单片机履行速度。所以在单片机的完结里,一般不要做太多的参数传递,而多运用公共的全局变量来完结调用的进程。
(5)硬件接口:在UNIX或Windows里,对网卡驱动无一例外都是选用中止办法,由于PC的处理速度快,一次中止的处理时刻也很短,不会影响体系内的其它中止。而在单片机的运用中,大部分的计划都是查询式的。PC的NE2000的网卡,一般都是用16位DMA的办法,而在单片机里却只能用8位DMA办法。这也使UNIX对网卡驱动的代码不能直接移植。
结语
本文规划的嵌入式网络接入计划,选用廉价的8位51单片机完结了简化TCP协议和UDP协议,并支撑自动和被迫衔接、跨过网关,完结互联网接入,在被控设备与上位操控机之间供给了一条通明的传输通道,用户不需对原有串口设备或其他数字设备做任何修正,就可享遭到网络的优点。现在,本文的体系已被成功运用在网络化的数据收集器中。