历史上的今天
返回首页

历史上的今天

今天是:2025年02月05日(星期三)

正在发生

2018年02月05日 | 基于ARM9的嵌入式Web服务器Boa的软/硬件设计

2018-02-05 来源:eefocus

    1.ARM简介

    广义地讲,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。它是嵌入到对象体系中的专用计算机系统,以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。目前非常流行的ARM内核有ARM7TDM1、S t r o n g A R M 、A R M 7 2 0 T 、A R M 9 T D M 1 、ARM920T、ARM940T、ARM946T、ARM966T、ARM10TDM1等。本文所讨论的目标板的CPU为ARM920T内核的三星S3C2410芯片。

    ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。它包含ARM920T、ARM922T和ARM940T三种类型,广泛应用于PDA、移动通信、路由器、工业控制等领域。

    2.嵌入式Web服务器实现原理

    嵌入式Web服务器是指将Web服务器引入到现场嵌入式设备中,并驻留其中有限的代码空间内。与传统的Web应用相比,简化了系统结构,并将信息采集和信息发布都集成到现场的嵌入式设备中。在相应得软硬件平台支持下,利用标准的接口形式和通信协议,内嵌于嵌入式设备的Web服务器可以向任何接入到它所在网络的合法用户提供统一的基于浏览器方式的操作和控制界面,此时浏览器成了设备的前端控制板。当前在嵌入式应用领域,嵌入式系统转变为嵌入式WebServer,大体可分为2种实现方案:

    (1)基于网关服务器的嵌入式设备Internet接入;

    (2)直接实现TCP/IP的嵌入式设备Internet接入。本课题中采用第二种实现方案。

    3.系统功能的实现

    3.1 开发流程

    图1为本课题所采用的实验环境以及开发流程。①在主机的RedHat Linux操作系统下安装Linux发行包以及交叉编译器armlinux-gCC;②对Linux进行配置(makem e n u c o n f i g),并选择适合本课题系统得相关配置;③编译生成Linux映像文件zlmage;④通过u-boot的tftp命令将该文件下载到目标板并执行。这将在下面的内容中作介绍。     

    3.2 加载Linux内核映像

    3 . 2 . 1 将J X A R M 9 - 2 4 1 0的串口0与P C的C O M 1连接,J X A R M 9 - 2 4 1 0的网卡和P C 的网卡使用直连网线进行连接, 或者将J X A R M 9 - 2 4 1 0和P C机使用普通网线接入同一局域网。A R M 实验箱的I P 为192.168.1.45,虚拟机下的Linux的IP设为192.168.1.180,并将安全级别设置成无防火墙,宿主机IP设为192.168.1.145.

    3.2.2 将JXARM9-2410上电,正常情况下将在终端DNW中看到bootloader菜单界面。在bootloader中按照提示进行加载完成后输入CTRL+C进入Linux命令行。如果出现失败,则可能存在一下几种问题:

    1)加载内核时总体是“TT”,这是由于tftp服务器没有连接成功,在uboot中输入PINg 192.168.1.180命令,如果提示为not alive请检查网络有没有正确连接:使用网线正确与否或者宿主机和目标机的IP地址不在同一子网。此处要求宿主机和目标机都在192.168.1.xxx网段,而且最后一位不能相同;如果提示为alive而仍然提示“TT”,请检查Windows防火墙设置,关闭防火墙,如果仍然不行,请关闭系统中启动的其它程序,如杀毒软件等。

    2)提示“PACket too big”,这个问题是由于uboot接收到非法的包产生的,少量这种提示不会影响内核的加载,如果导致内核加载失败,请按照如下方式检查:①使用直接网线连接计算机和实验箱;②关闭计算机中打开的所有与网络相关的程序。

    3.3 Boa Web服务器的建立

    建立Boa Web服务器包括以下步骤:

    3.3.1 下载Boa源代码

    Boa web服务器的源代码可以从http://www.boa.org下载,本文中下载文件为:

    boa-0.94.13.tar.gz,为当前最新版本。

    3.3.2 安装并编译Boa源代码1)通过Vmware Tools中的文件共享将Windows下载的Boa源代码复制到/home/cvtech/jx2410/examples/目录下。

    2)安装源代码:生成Makefile文件#./configure.

    3)修改Makefile文件,找到CC=gcc,将其改成C C = a r m - l i n u x - g c c,再找到C P P = g c c - E,将其改成C P P = a r m - l i n u x -gcc-E,并保存退出。

    4)运行make进行编译,在boa/SRC目录下将生成Boa文件,该文件即为Boa Web服务器执行文件。将调试信息剥去,得到的最后程序只有约60KB大小。

    3.3.3 配置Boa Web服务器,使其能够支持CGI程序的执行

    Boa启动时将加载一个配置文件boa.

    conf,在Boa程序运行前,必须首先编辑该文件,并将其放置于src/defines.h文件中SEVER-ROOT宏定义所定义的缺省目录,或者在启动Boa时使用参数“-c”指定boa.

    conf的加载目录。


    用户可以根据自己需要,对boa.conf进行修改,但必须要保证其他的辅助文件和设置必须和boa.conf里的配置相符,不然Boa就不能正常工作。在上面的例子中,我们还需要创建日志文件所在目录/var/log/boa,将mime.types文件拷贝到/etc目录。mime.types文件用来指明不同文件扩展名对应的MIME类型,一般可以直接从Linux主机上拷贝一个,大部分也都是在主机的/etc目录下。

    3.4 系统功能的测试

    在移植完Boa服务器后就是测试它能否正常工作,静态HTML页面能否正常访问,还将测试动态Web页面能否正常访问。本课题中将采用NFS方式来进行测试工作。

    测试Web服务器。Boa测试开发环境如图2所示:

     

     

    可以将嵌入式目标系统上的/etc目录复制到主机的NFS共享目录下,然后将NFS共享目录下的etc重新mount为目标系统上的/etc目录。这样就可以在主机上对etc目录下的各种配置文件进行修改而立刻在目标系统上生效。

    先前设定JXARM9-2410的IP地址为:192.168.1.45,且在JXARM9-2410的JFFS2文件系统中已经预先烧写好了配置好的boa.

    conf文件,位于/mnt/jffs2/etc/目录。

    启动JXARM9-2410 Linux,然后按如下步骤进行:

    a)将Boa的执行文件复制到tftpboot目录下;

    b)将主机下的tftpboot目录挂载到目标板的nfs目录下;

    c)启动Boa服务器。

    根据上文中boa.conf的配置,此时在目标板的mnt/jffs2/web目录下包含测试主页面index.html、存放各种图片的目录IMAGES以及CGI脚本的存放目录cgi-bin.

    启动后测试Boa服务器,在网页浏览器中访问如下网址:http://192.168.1.45/如果网络连接正常,且Boa启动正常的话,将可以看到/mnt/jffs2/web/index.

    html网页,如图3所示,表示静态HTML页面测试通过。可以修改该网页,并替换成所需要的网页,然后刷新浏览器显示。

     

    3.5 动态Web页面测试

    在JXARM9-2410 Linux的命令行中输入如下命令,将主机的tftpboot目录挂载到目标板的nfs目录:

    上述命令首先将编写好的CGI程序cgi_test放置boa.conf定义的cgi-bin目录下。

    本课题中路径为/ m n t / j f f s 2 / w e b / c g i -bin/,然后启动boa服务器。CGI程序就能被正确地执行。

    使用网页浏览器访问如下网址:http:

    //192.168.1.45/cgi-bin/cgi_test.

    如果正确,将显示输出一个表单。点击“submit”按钮将提交表单并由cgi_test程序处理,将在页面上返回处理的信息。


推荐阅读

史海拾趣

Galil Motion Control Inc公司的发展小趣事

Galil Motion Control Inc. 的五个发展故事

故事一:技术创新引领者

Galil Motion Control Inc.,成立于1983年,位于美国加州硅谷中心,是电子行业中运动控制技术的先驱。公司成立初期,便致力于研发基于微处理器的精密运动控制器。据《DESIGNNEWS》杂志报道,Galil是全球第一家推出数字运动控制器的公司,这一技术创新在业界引起了巨大反响。此后,Galil不断推陈出新,其产品已发展到第五代,采用RISC结构的DSP技术,结合最新控制理论及网络技术,使得伺服更新速率和指令执行周期显著提升,引领了运动控制领域的技术潮流。

故事二:全球市场的扩展

随着技术的不断成熟,Galil的产品逐渐在全球市场上占据了一席之地。目前,全球有超过500,000台Galil的运动控制器在稳定运行,应用领域覆盖了医疗、半导体、纺织、物料搬运、食品加工、机床、产业机械、航天、测试测量等多个行业。这一广泛的应用不仅证明了Galil产品的可靠性和稳定性,也为其在全球市场的扩展奠定了坚实的基础。

故事三:分布式运动控制器的诞生

在进入21世纪之初,Galil公司又开发出了DMC3425分布式运动控制器。这款控制器不仅提供了API函数支持高级应用开发,还引入了极其简单易学的2字符命令集,使得应用编程变得如同书写英文字母般简单。这一创新不仅降低了用户的学习成本,也极大地提高了系统的开发效率,进一步巩固了Galil在运动控制领域的领先地位。

故事四:与光纤激光切割技术的结合

近年来,随着激光切割技术的快速发展,Galil公司也紧跟这一趋势,将运动控制技术与光纤激光切割技术相结合。通过设计以Galil控制卡为核心的四轴联动伺服控制系统,实现了激光切割设备的高精度控制。这一结合不仅提升了激光切割设备的性能,也拓展了Galil运动控制技术的应用领域,为工业制造带来了更多的可能性。

故事五:全球销售与服务网络的建立

为了更好地服务全球客户,Galil公司在全球范围内建立了完善的销售和服务网络。目前,Galil拥有众多销售代理商,遍布世界各地。这些代理商不仅负责产品的销售工作,还为客户提供专业的技术支持和售后服务。通过这一网络,Galil能够迅速响应客户的需求,确保每位客户都能获得最佳的产品体验和服务保障。这种以客户为中心的服务理念,也为Galil赢得了良好的市场口碑和广泛的客户认可。

Glorious Sources Co Ltd公司的发展小趣事
用于监测环境中的光强度变化,如监测室内光线变化以自动调节窗帘或灯光亮度。
Collins Electronics Corp公司的发展小趣事

随着科技的飞速发展,Collins Electronics Corp意识到技术创新是企业持续发展的关键。他们投入大量资源进行研发,推出了一系列具有创新技术的电子产品。其中,他们开发的一款新型高频无线电收发器,因其传输速度快、信号稳定而广受好评。这项技术不仅为公司带来了可观的利润,还推动了整个电子行业的技术进步。

Catalyst / ON Semiconductor公司的发展小趣事

为了进一步扩大市场份额和提升品牌影响力,Catalyst / ON Semiconductor公司开始实施全球扩张战略。公司先后在多个国家和地区设立了分支机构和研发中心,以便更好地服务当地客户并吸引优秀人才。同时,公司还积极与其他知名企业进行战略合作,共同推动半导体技术的创新和应用。

Chesivale Electronics公司的发展小趣事

在技术创新和合作伙伴关系的支持下,Chesivale Electronics公司开始加速市场扩张的步伐。公司不仅在国内市场取得了良好的业绩,还积极拓展海外市场。通过参加国际电子展会、设立海外分支机构等方式,公司的品牌知名度和影响力逐渐提升。同时,公司也注重品牌建设,通过提升产品质量、加强客户服务等措施,赢得了客户的信任和好评。这些努力使得Chesivale Electronics公司在国内外市场上都取得了不俗的成绩。

GTE Microcircuits公司的发展小趣事
学习高性能复合放大器电路的设计需要掌握模拟电路的基础知识,包括放大器的工作原理、电路分析方法、以及元器件的选择和使用等。此外,还需要通过阅读专业书籍、参加培训课程、以及实践项目等方式来不断积累经验和提高技能。

问答坊 | AI 解惑

VHDL programming by examples(英文原版)

英文原版,希望对大家有用。…

查看全部问答>

2010年北京电子信息大赛

本帖最后由 paulhyde 于 2014-9-15 09:33 编辑 2010年北京电子信息大赛定于5月30号举行,赛方提供xilinx的SOPC开发板,定于4月份发放,就此请大家发一些建设性的培训意见和关于xilinx的sopc的一些技术文档,请大家多多支持。  …

查看全部问答>

请问有用过WG7210(WIFI+Bluetooth)模块的高手吗?

有用过这个模块的吗?我现在要用这个模块做WIFI和Bluetooth,式基于wince5.0和S3C2442的,找不到这个模块的驱动,厂家不提供驱动源码。这个驱动该怎么做呢?…

查看全部问答>

DMA模式什么意思啊?如何应DMA接收串口数据?

DMA模式什么意思啊?如何应DMA接收串口数据?…

查看全部问答>

vs2005 mfc工程移植入windows mobile

写的一个很简单的拼音输入程序,想植入windows mobile。我自己水平不行,希望哪个牛人帮忙做一下。愿意帮忙的留下邮箱,我发过来。…

查看全部问答>

怎样让spce061CPU跑起来???

我现在已经将spce61板连,probe,电脑接好了,Load的了一个程序,调试状态下,怎么也还是从main可以呢?不连接板的时候调试也是从main开始,我是通过PC指针开始进入程序是一样的,觉的cpu是没有跑起来。要怎样cpu才能跑起来,也是从main开始吗?还 ...…

查看全部问答>

请教做过270的camera驱动的大侠

最近一直在搞pxa270的camera的驱动,用的是ov2640,ov9653,现在遇到了一个奇怪的问题,就是YUV预览的时候,我设置dma直接从quick capture的3个数据寄存器到LCD的frame buffer。如果不去读pxa 270 quick capture那边的那3个数据寄存器的话,LCD上只 ...…

查看全部问答>

帮我看下代码C2061 C2660错误原因,我搞好长时间不知道为什么错 给分

帮我看下代码C2061  C2660错误原因,我搞好长时间不知道为什么错: //presetdlgs.h // int ReadHospitalInfo (const char *path, Hospital_Info *hospital_info); //presetdlgs.cpp ...... int ReadHospitalInfo (const char *path ...…

查看全部问答>

DSP2407A中连续转换模式下的AD转换问题

本帖最后由 dontium 于 2015-1-23 13:29 编辑 我使用的DSP2407A的EVM仿真板,AD转换引脚全部悬空,在AD转换过程中使用连续转换模式时,测得引脚上的电压是1.1V左右,而在启动/停止模式下测得AD转换引脚上的电压大约是500mV;在这两种情况下,当接 ...…

查看全部问答>

预告,大批开发板准备转让(附明细价格)

家里的开发板都放得快发霉了,准备国庆翻出来绝大部分转让了,价格绝对比淘宝上任何人低,加上大量赠品奉送,大家可以帮我出出主意怎么处理,是拍卖还是怎么办?谢谢! 大概回顾了一下,有M3系列TI的 811 6432 5956 2956 8962 9b90 9b96 ,NXP的111 ...…

查看全部问答>