嵌入式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,而是直接送到地址线上输出),所有程序访问的地址是物理地址。那些比物理内存还大的程序将无法执行。
uClinux将整个物理内存划分成为4 KB的页面。由数据结构page管理,有多少页面就有多少page结构,它们又作为元素组成数组men_map[]。物理页面可作为进程代码、数据和堆栈的一部分,还可存储装入的文件,也可作缓冲区。
相关文章
- 2022-05-28典型移动增值业务分析
- 2023-11-10一种测量大尺寸孔同轴度的新方法
- 2023-05-13多功能碳势测定仪的研制
- 2022-06-25数字化车间布局模糊层次评价方法研究
- 2023-02-24指重测长仪的设计
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。