随着互联网的应用日益普及,信息共享的程度不断提高,通过互联网共享以单片机应用系统为中心的小型嵌入式设备的信息,成为当今电子界的热门话题。如今,传统的互联网应用正从Pc机转到以嵌入式设备为中心。据网络预测,将来在互联网上传输的信息中,有70%来自小型嵌入式系统。这表明互联网应用进入嵌入式互联网的时代已经来临。嵌入式Intemet技术是一种将嵌入式设备接入Intemet的技术,利用该技术可将Intemet从Pc机延伸到8位.16位、32位单片机。并实现基于Intemet的远程数据采集、远程控制、自动报警、上传、数据文件、自动发送E—miI等功能,大大扩展Intemet的应用范围。
1 单片机嵌入式Web应用的硬件系统设计
在硬件系统的设计中,本文采用了ATMEL公司开发的高性能8位AVR(Advanced RISC)单片机AT90S8515,该单片机内置8 KB可编程Flash,使用精简指令集,支持C语言及汇编语言,与MCS 8051系列单片机相比在性能上有很大的提高,在目前单片机开发中用得较多。因此利用AT90S8515单片机作为嵌入式系统的微处理器,通过网络控制芯片将嵌入式系统与Internet相连接。其硬件系统框图如图1所示。
在电路的硬件系统组成中,注意以下几点:
(1)单片机与网卡芯片的接口电路
AT90S8515单片机所提供的8位数据总线PA0~PA7分别对应连接网卡的SD0~SD7引脚;5根地址线PC0~PC4对应连接网卡的SA0~SA4引脚;读信号线RD、写信号线WR与RTL8019AS的相应信号线连接[1]。复位通过PB0控制,PB1片选地址使能[2]。外接时钟电路单片机为8 MHz,网卡芯片为20 MHz。
(2)存储器扩展电路
一般单片机片内数据存储器容量为64 KB,这样的存储空间在进行单片机Web应用系统的开发时显得过小。因此需要扩展数据存储器,扩展容量随系统数据使用量而定。对于Web应用,需要很大的存储空间存放网页等数据,所以本系统采用静态RAM HM62256芯片作为存储器扩展电路。
(3)RTL8019AS工作方式
RTL8019AS有3种工作方式:跳线方式、即插即用方式和RT免跳线方式[1]。在嵌入式应用场合,为了降低系统的复杂性,单片机尽量少接不必要的芯片。所以将RTL8019AS选择工作在跳线方式。其IOCS16B引脚接下拉电阻,JP引脚端接高电平。
(4)MAX232串口电平转换电路
在现场控制端,由于单片机输出为TTL电平,现场数据采集系统(如传感器)输出为EIA电平,而MAX232芯片可以完成单片机和现场数据采集系统间的双向电平转换[3]。
(5)网络隔离滤波接口电路
在网络接入端需要一个网络隔离滤波器HR901170A。HR901170A主要对系统电路起保护作用,减少信号共模干扰,完成信号的传输。HR901170A的内部集成了RJ45接口,可以直接接入到Internet。
2 嵌入式Internet的TCP/IP协议实现
2.1 嵌入式TCP/IP协议
软件编程是实现嵌入式Web系统的关键。Web通信中的数据封装、解析都是由单片机软件实现的。软件实现主要包括两部分:一是单片机精简TCP/IP协议栈的实现,对数据的逐层打包、封帧、传送等流程[2];二是单片机Web应用服务的实现。
2.2 uIP驱动底层网络设备RTL8019AS
uIP是一个仅包含3层网络层协议的协议栈,uIP自身不包含任何类型的底层网络驱动和上层应用程序,它只提供接口函数供用户开发使用。因此为了完成与底层网络设备的交互,用户必须根据网络设备的类型,在uIP中自行实现对底层网络设备的驱动。本文采用的网络设备是RTL8019AS网卡,因此需要在uIP中实现对RTL8019AS网卡的驱动[4]。
RTL8019AS驱动程序包括:RTL8019AS芯片初始化、芯片复位以及数据的发送和接收。RTL8019AS芯片初始化可以通过初始化函数void init_8019(void)完成。芯片复位通过芯片上的RSTDRV引脚执行复位操作,该引脚高电平有效。
3 单片机上嵌入式Web服务器的软件实现
3.1 Web服务器的建立
在进行以上的工作之后,用户就可以建立Web服务器,通过uIP协议实现不同的微控制器或工作站之间的通信。Web服务器和客户端浏览器间的通信采用HTTP协议。嵌入式系统经常需要根据用户的指令,采集系统的当前数据信息传送给客户端浏览器,为实现这种客户端浏览器和Web服务器的动态交互,需要在服务器端采用通用网关接口CGI(Common Gateway Interface)技术。CGI是一个在服务器上运行的程序,它分析处理用户发送到服务器上的数据信息,完成动态文件资源的创建和处理,再将用户信息返回给客户端。
3.2 Web服务器数据处理流程
当系统的网卡接收到从网络传送来的数据包后,首先分析目的地址是否与自己的物理地址一致,如果不一致,则丢弃此包;如果一致,则读取网络数据并分析。如果是ARP请求包,则转入ARP处理程序,并发送一个ARP应答包给客户端。如果是IP包,则交由IP层处理,同时去掉以太网首部[4-5]。IP层根据IP首部的协议字段分析该IP包属于什么数据包,如果是UDP包则,丢弃;如果是ICMP请求包,则发送一个ICMP应答包给客户端;如果是TCP包且IP地址和端口号正确,则接收数据包,数据解包后,将数据部分通过串口输出,控制MAX232现场设备。反之,如果现场通过串口发送数据到单片机,单片机将数据按照TCP协议格式打包,送入RTL8019AS,由RTL8019AS将数据发送到局域网中。根据需要还可以在收到串口数据时,先完成数据预处理,再将处理好的数据送到局域网。具体的处理过程如图2所示。
3.3 单片机上的Web服务器编程
uIP协议栈提供了一个称为宏的UIP_APPCALL的应用程序接口供用户设计应用程序时使用[4]。要在单片机上实现Web Server服务,首先将该宏定义为一个应用程序函数名,然后在此函数中实现HTTP协议。完成后,用户可以从局域网内的任何客户机访问该单片机Web服务器。如果分配一个公网IP地址,则也可以从Internet上访问此Web服务器。实现的程序如下:
#define UIP_APPCALL uip_http /*定义宏UIP_APPCALL为uip_http的应用程序函数*/
void uip_http(void) /*开始实现http协议建立Web服务器*/
{struct uip http_state*s;
s=(struct uip app_state*)uip_conn->appstate;
if(uip_connected())
{… /*打开连接接口函数,开始一个新的应用程序连接*/
}
if(uip_newdat()||uip_rexmit()) /*接收数据接口或重发数据接口函数,应用程序发送数据*/
{if(uip_datalen()>0) /*判定数据的大小接口函数
{if(uip_conn->lport==80) /*收到新连接端口号为80的请求,此即http应用*/
{update_table_data();
s->dataptr=newpage;
s->dataleft=1957;
uip_send(s->dataptrs->dataleft); /*发送上述http应用数据*/
}
}
}
if(uip_acked()) /*返回ACK数据确认接口函数*/
{if(s->dataleft>uip_mss()&&uip_conn->lport==80)
{s->dataptr+=uip_conn->len;
s->dataleft-=uip-conn->len;
uip_send(s->dataptrs->dataleft);
}
return;
}
if(uip_poll())
{… /*轮询接口函数用于轮询各个客户端发起的连接*/
return;
}
if(uip_timedout()|| /*判断连接是否超时*/
uip_closed()|| /*关闭当前的连接*/
uip_aborted()) /*中断连接接口*/
{return;}
}
本文设计的系统成功应用在宁波市某商业广场的地下停车场监测系统中。由于该商业广场停车场业务量较大,常常导致车位饱和而客户不知道的情形下进入停车场寻找车位,而该停车场规定进入停车场超过15 min的车辆即开始收费。导致客户常常寻找超过规定的时间而仍未找到停车位但需付费,从而发生客户和管理方之间的纠纷,影响商业广场的整体形象。使用了该系统后,各个车位上的数据采集系统实时采集停车信息并反馈给系统。系统在停车场入口处显示停车场当前有无可停车位以及哪些区域有空闲车位等信息。如果车位已满,将会显示无可停车位。除此之外,管理人员还可通过客户端进行查询、计时计费等工作。本系统的优点是开发费用低廉且操作简单。在2l世纪,嵌入式系统必将得到更广泛的应用.将Internet联网技术延伸到被,“泛应用8位。16位,32位单片机的软件平台上,必将大大拓宽因特网的应用领域,也将使嵌入式系统的功能跃上一个新台阶。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。