- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
嵌入式Web访问时的内存丢失问题
由于嵌入式技术的发展,嵌入式Web服务器软件越来越大,对硬件的要求也相应地提高,但在工业现场的底层控制中,一般嵌入式系统的硬件配置都不是很高,导致了软件和硬件的冲突。本文就是对实际应用过程中,偶尔出现的Web页面访问出错问题进行深入的研究。
1 嵌入式Web在系统中的应用
多支点触发系统包括以下几个模块:控制台模块、网络触发源模块、被触发设备模块。其中,网络触发源和被触发设备都是挂载在总线上的,通过现场总线可以将系统各个节点相互连接起来以方便管理。嵌入式web就是应用于网络触发源模块中,它负责控制台和被触发设备之间的通信。控制台通过浏览器访问网络触发源,在Web页面上完成相应控制操作后,由网络触发源把操作命令发送到总线上,被触发设备从总线上接收到命令后,完成相应操作。在网络触发源模块中,Web服务器采用的是Boa,嵌入式操作系统采用的是uClinux,处理器采用的是Sam-sung公司的S3C44BO。多支点触发系统结构如图1所示。
2 Boa的运行流程及出现的问题
Boa是单任务的http服务器,源码开放,性能高。与传统的Web服务器不同,它并不对每个进入服务器的连接开辟新的进程,所有活动的http连接都在内部进行处理,而只为每个CGI连接启动新进程。在已进行的测试中,Boa服务器比其他的Web服务器要快,所以它应用在嵌入式系统中是具有良好前景的。图2是Boa基本的运行流程。
在Boa运行过程中,用户请求初始Lo-gin页面时,系统能正常响应操作。当用户输入正确的Login信息,要实现页面跳转时,PC机上的浏览器里面不能正确浏览,提示错误:"502 bad gate-way The CGI was notCGI/1.1 compliant"。由于运行的是CGI程序,通过调试和查看错误日志,发现系统停留在步骤⑤~⑦间。在排除CGI程序错误后,通过串口调试终端打印出的错误信息发现:在执行CGI程序时,内核申请内存时出错,提示申请的内存块不能得到,即内存丢失。
3 系统内存丢失分析
3.1 uClinux的内存管理
uClinux不能使用处理器的虚拟内存管理技术,它仍然采用存储器的分页管理。系统启动时对存储器分页,加载应用程序对程序分页加载。由于没有MMU管理,所以uClinux采用实存储器管理。uClinux系统对内存的访问是直接的(它对地址的访问不经MMU,而是直接送到地址线上输出),所有程序访问的地址是物理地址。那些比物理内存还大的程序将无法执行。
作者:周宾,章勇 南京航空航天大学 来源:单片机与嵌入式系统
上一篇:TMS320F2812程序的远程升级方法
下一篇:UPS常见故障现象原因分析