基于物联网的嵌入式以太网终端平台的设计方案

来源:电子发烧友 作者:—— 时间:2012-11-22 11:03

 

  2.2 驱动程序

  操作系统是通过各种驱动程序来和各种硬件打交道的,驱动程序为用户屏蔽了各种各样的硬件设备,而只提供了简单明了的函数接口给操作系统调用。LwIP已经设计好了这些框架,用户只需严格按照顺序完成与底层硬件相关的部分即可实现网络接口层和IP层的通信。需要实现的包括:底层网络接口初始化函数ethernetif_init()、网卡接收函数ethernetif_input()、网卡发送函数 ethernetif_output()和网卡中断处理函数ethernetif_isr()等。驱动程序完成了对设备的初始化、释放和管理,并且完成对底层以太网数据包的接收、搬运和发送。

  2.3 应用程序

  系统应用程序的任务主要是在嵌入式平台上实现网络通信客户端和HTTP网页服务器两方面的功能。利用LwIP提供的API,采用TCP协议客户端到服务器通信的模式,实现嵌入式终端和上位机之间的通信。在这种模式下,嵌入式终端定义为客户端,主动向服务器发起TCP连接;而上位机(PC)定义为服务器端,始终监听来自网络的连接。嵌入式终端主要负责采集来自于传感器或RFID模块的数据,并将这些数据通过以太网传送给上位机。同时嵌入式终端平台上也运行着一个HTTP网页服务器,上位机(PC)可通过网页对嵌入式终端平台进行访问、查看和设置。

  3 WEB服务器的实现

  HTTP定义了浏览器与服务器交互的不同方法,最基本的方法有4种。本系统的实现只涉及到GET和POST这两种最基本的方法。GET一般用于向服务器获取和查询资源信息,而POST一般用于向服务器上传和更新没有长度限制的、大容量的资源信息。一个基本的WEB服务器要实现动态网页服务的关键是要能够对浏览器发送的GET或POST请求做出响应。一般情况下制作动态网页需要使用语言:HTML+ASP或 HTML+PHP或HTML+ JSP等。要在资源有限的嵌入式系统上实现这样的功能是不现实的,一种明智的办法是通过使用回调函数的方式,为浏览器的每一种请求都设计一个服务函数与之对应。当有新增加的GET或POST请求时,则只需要增加相应的服务函数即可。具体实现时可设计一个存放服务函数地址的结构体,其成员包括所请求服务参数的长度、名称和对应服务函数的地址。然后将所有的结构体都初始化在一个数组中,代码如下:

  c.JPG

  在编写应用程序的时候,只需抓取浏览器所发送的请求类型和参数,即可根据不同的请求来调用相应的服务函数。当有新的GET或者POST请求增加时,只需要增加与之对应的服务函数即可,这样就实现了扩展性很强的动态网页服务。WEB服务器响应浏览器访问的流程如图3所示。

  d.JPG

  POST请求分为带参数和不带参数两类,带参数的POST请求,如:设置IP地址,子网掩码等操作,需要提取相关参数后再调用服务函数进行处理。不带参数的POST请求只需直接调用相应服务函数即可,如:重启系统、恢复默认参数等操作。远端PC可以通过该动态WEB服务器来对平台进行访问,完成上述几项操作。在第一次启动本系统时,系统通过运行DHCP客户端程序,向DHCP服务器(路由器等设备)主动申请IP地址,获得IP后,远端PC即可通过该IP地址对本系统进行访问和设置。网页界面如图4所示。

  e.JPG

  4 结束语

  平台采用AT91SAM7X512处理器和DM9161以太网物理层芯片。两者通过MII接口连接,高集成度的处理器提高了系统稳定性,降低了数据传输出错机率。通过向终端平台移植LwIP协议,使终端具备连入以太网的能力,并通过调用函数的方式在该低成本平台上实现了动态网页服务器。在局域网条件下运行该终端和上位机PC进行连接,能很好的通过网络传递RFID读卡器采集的信息,并且上位机PC能够通过网页对本终端进行访问和参数设置。针对更复杂的远程网络连接和访问,网络延迟和丢包等问题还有待进一步的研究。

资讯排行榜

  • 每日排行
  • 每周排行
  • 每月排行

华强资讯微信号

关注方法:
· 使用微信扫一扫二维码
· 搜索微信号:华强微电子