uIP在51单片机上的移植
扫描二维码
随时随地手机看文章
uIP其主要是为8位和16位系统设计的,程序在编写时就考虑到了移植问题。uIP的主要文件包括uip.c和uip_arp.c。
(1)移植的基本过程。
针对所用编译器的类型更改定义数据类型,底层RTL8019AS芯片的驱动和实现应用层代码,系统定时器接口等。下面分别予以说明。
数据类型的定义:
typedefunsignedcharu8_t;typedefunsignedshortu16_t;typedefunsignedshortuip_stats_t;由于KeilC编译器默认情况下的编译模式为small,变量的定义在内部RAM中,编译时编译模式应改为Large,即变量的定义在XDATA中。
(2)RTL8019AS的驱动。
主要包括以下内容。
①etherdev_init()完成系统上电初始化,包括设定RTL8019的物理地址和IP地址等,设定收发缓冲区的位置和大小等。
②etherdev_send()完成数据的发送。
⑨etherdev_read()完成以太网数据的接收。底层网络设备驱动程序与uIP协议栈通过两个全局变量实现接口:变量uip_buf为收发缓冲区的首地址;uip_len为收发的数据长度。
etherdev_send函数将uip_buf里的uip_len长度的数据发送到以太网上。recv函数将接收到数据存储到uip_buf中,同时返回uip—len的值。
④etherdev_timerO_isr()定时器1中断函数为系统提供时钟定时。
51系列单片机一般有2或3个定时器,本移植中选用定时器1产生定时时间,为ip_perioDIC()函数的执行提供基准,另外还对ARP表项,TCP连接超时等提供时间基准。
RTL8019AS初始化、收发包的详细过程在12.6节中已经详细介绍过,在此不再赘述。移植后的文件如下:
uIP的设置在uipopt.h头文件中。在该文件中用户根据具体的实际条件设置uIP的IP地址,MAC地址,网络掩码,网关地址。另外还包括可建立的最大连接数,端口是否启动UDP协议功能等,在具体的应用中可以参考uIP的说明文档,其中都有详细的说明。