引言
随着网络技术的不断发展,嵌入式系统将不断地和网络相结合。嵌入式Web技术是计算机领域研究的热点,其优点是开发成本低、通用性强,能运行在8位或16 位MCU环境中,其丰富的Web用户图形界面使得嵌入式设备具有极好的交互性。因此,一旦在嵌入式设备中集成了Web服务,就能实现用户与嵌入式设备低成本、高通用性的信息交流,即客户端利用HTTP浏览器(如IE),在任何时间、任何地点都能实现与嵌入式设备的信息交互。可以说,嵌入式Web的应用必将极大地促进嵌入式设备,特别是低端控制设备、仪器、仪表的信息化,最终将促进物联网的各种应用。
在MCU上开发Web服务器的难点在于其资源有限。相比台式机PC(几个GB的双核CPU,几个GB的内存和几百个GB的硬盘)来说,嵌入式系统的各种硬软件资源少得可怜。在嵌入式系统中实现复杂的Web动态服务及Web控制,既没有必要也不现实。因此,如何紧紧围绕嵌入式系统的具体应用要求,恰当地实现 Web动态服务及Web控制,进而实现物联网应用是一个需要解决的技术难题。
1 嵌入式Web服务的一般实现方法
目前,嵌入式设备中通常使用的Web服务器有Apache、httpd、Boa、Thttpd和mini-httpd等。常用的实现动态Web页面的技术主要有CGI、ASP、PHP、JSP、Java、ISPI等。其中,Boa是一个运行在类Unix系统中的小型Web Server,虽然功能比较齐全,但很多功能(如virtual hos-t,内存使用量较大)对嵌入式应用而言是冗余的;Apache功能较强大,但占用空间太多(需要几MB空间,其他Web服务器只需要几百 KB);PHP 可扩展性较差,安全性不高;标准的CGI需要用到文件、进程等操作。
为节省资源、提高效率,嵌入式环境下现应用较多的是嵌入式动态Web实现方法,一般采用“Apache+PHP”或者是“Boa+CGI”技术。然而,在低端的嵌入式设备中,特别是8位MCU的仪器、仪表中,因为受资源尤其是存储资源的限制,要用上述思路来实现嵌入式Web服务不太现实,毕竟对于低端的嵌入式设备而言,移植操作系统是一件奢侈的事情。
2 嵌入式Web动态服务的改进思路及实现
考虑到嵌入式Web服务器的应用领域多数是专门的控制设备仪表,绝大多数控制设备仪表的工作流程都是基本固定的,所以可以考虑采用某种固定的交互模式来控制这些仪表。能否用这种思路进行设计的关键是要弄清下面两个问题:第一,嵌入式Web服务器的功能有哪些?第二,这些功能是否固定,是否需要扩展?如果这种功能既不是很复杂,又相对固定,那么就可以按照这种思路进行设计,而完全没有必要用CGI、ASP等Web动态服务技术来实现Web动态服务。遵照这一思路,本文实现如下:
①将显示界面不变的部分作为一个静态页面,以HTML格式存储在ROM中,以方便MCU直接操作。这样设计后,需要注意的问题是,MCU的ROM空间是否能同时存储程序代码和网页HTML代码。笔者所设计的嵌入式Web服务器的程序代码量有28 KB,而HTML代码量有2~3 KB,采用的MCU(即W78E58B)有32 KB ROM空间,因此采用这种设计思路完全可行。
②利用替换法提供Web动态服务。对需要动态改变的内容部分作特殊标记,例如,环境温度值为“TAG:Temperature”,网页长度为 “TAG:PageLen”。程序运行时,先将静态页面由ROM读入内存,然后将环境温度值和网页长度值传送到服务器节点,服务器读取实际值并存入内存,再用实际值代替标记,生成一个新的页面并将其送给浏览器,这样用户看到的就是一个动态的页面。
③经过上述设计后,网页文件的值是动态的,但不是实时的。可以采用如下思路实现实时动态服务:利用HTML语言的
来实现网页内容的自动更新,其刷新时间由文件开头语句中的 content的内容决定。该值可根据具体应用需求进行设置,例如笔者设计的刷新时间为2 s。按照这种设计实现后,网页文件就能在2 s范围内实时显示系统通过温度传感器采集来的环境温度。
3 嵌入式Web控制的实现
按照上述思路可实现服务器对客户端的Web动态服务。然而在实际的嵌入式应用中,仅仅一个Web动态服务是不够的,它还应支持客户端数据上传到服务器,以达到通过客户端来控制服务器的目的。
那么,如何实现客户端对服务器端的控制呢?遵照上述设计思路,并结合HTTP请求中的POST命令来实现简单的Web控制。实现过程如下:
②在嵌入式Web服务器的HTTP接收模块中分析HTTP请求的POST数据,当LEDCtr1=0时,发送指令点亮LED灯,否则熄灭LED灯。
4 功能测试
测试时可将嵌入式Web服务器与客户端主机直接相连,并利用PC机的IE浏览器实时读取服务器测量的环境温度,结果如图1所示。左图是测量的当前环境温度显示的结果,右图是当采用物理手段(如利用打火机烧烤传感器)以提高环境温度后显示的结果。由图可知,嵌入式Web服务器能完成正常的Web动态服务。经实践验证,服务器系统LED灯的亮/灭完全可由图1所示的亮/灭控件来控制,也就是说已成功实现了Web控制。
图1 客户端动态获取服务器
5 结论
笔者分析了当前嵌入式系统实现Web动态服务的几种思路,以采集环境温度、控制LED灯的亮/灭为例,给出一种在嵌入式设备中实现Web动态服务与Web 控制的实现思路,并在给出实现结果的基础上验证了该设计思路的可行性。这为嵌入式设备,特别是低端嵌入式设备中顺利实现Web动态服务及Web控制,进而实现物联网技术打下了坚实的基础。
上一篇:工业以太网和CAN总线在污水处理系统中的应用
下一篇:基于Linux的EtherCAT主站的研究
推荐阅读最新更新时间:2024-05-02 23:26
- 有奖下载:邂逅大师——福禄克全新专家级红外热像仪
- 汽车VCU知识问答第二站:了解VCU开发流程和任务分解、岗位需求
- TI 嵌入式处理主题直播月|报名观看直播赢好礼【低功耗WiFi MCU、Sitara AM57X平台、机器学习】
- 有胆就来|英飞凌IGBT7密室逃脱,邀你来玩!
- EEWorld邀你来拆解第9期——电机驱动专场,拆旧物 赢电机等好礼
- 【DIY数控电源】入围方案及后续活动安排!
- 有奖直播:TI DLP® 产品赋能工业光控领域与创新
- 有奖直播|物联网时代的典型应用
- Littelfuse第2期 | 符合AEC-Q200 车规的保险丝/熔断器
- 下载有礼|是德科技电子书 《通过了解测试精度的基础知识, 提高良率并降低风险》,不做“差不多先生”