碧波液压网 欢迎你,游客。 登录 注册

嵌入式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[]。物理页面可作为进程代码、数据和堆栈的一部分,还可存储装入的文件,也可作缓冲区。

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论