历史上的今天
返回首页

历史上的今天

今天是:2024年09月07日(星期六)

2020年09月07日 | 采用ARM9微处理器的嵌入式Web服务器设计方案

2020-09-07 来源:elecfans

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命令将该文件下载到目标板并执行。这将在下面的内容中作介绍。     

采用ARM9微处理器的嵌入式Web服务器设计方案

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服务器的源代码可以从下载,本文中下载文件为:

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所示:

采用ARM9微处理器的嵌入式Web服务器设计方案

可以将嵌入式目标系统上的/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服务器,在网页浏览器中访问如下网址:如果网络连接正常,且Boa启动正常的话,将可以看到/mnt/jffs2/web/index.


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

采用ARM9微处理器的嵌入式Web服务器设计方案

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程序就能被正确地执行。

推荐阅读

史海拾趣

Chino-Excel公司的发展小趣事

在发展过程中,Chino-Excel公司注重品牌建设和市场推广。公司投入大量资金进行品牌宣传和推广活动,提升品牌知名度和美誉度。同时,公司积极参加国际电子展会和行业交流活动,与国内外客户建立广泛的联系和合作,为公司的快速发展奠定了坚实基础。

Fong Ya Enterprise Co Ltd公司的发展小趣事

Chino-Excel公司最初是一家小型电子元件供应商,凭借对技术创新的执着追求,逐渐在市场中崭露头角。公司研发团队不断突破技术瓶颈,开发出性能更优越、成本更低的电子元器件。随着产品质量的提升和市场份额的扩大,Chino-Excel公司逐渐从众多竞争者中脱颖而出,成为行业内备受瞩目的新星。

Equinox公司的发展小趣事

在稳步发展健身业务的同时,Equinox还在不断探索新的领域。例如,公司推出了精品酒店品牌Equinox Hotels,将健身与旅游相结合;同时,Equinox还积极进军健康食品、健康科技等领域,以实现多元化的发展战略。未来,Equinox将继续秉承“健康、活力、高品质”的品牌理念,为全球消费者提供更优质的服务和体验。

General Cable公司的发展小趣事
内部设计有抑制噪声的机制,确保信号传输的稳定性和可靠性。
浙江凡华(FANHAR)公司的发展小趣事
在红外遥控应用中,通信距离可能受到发射功率、接收灵敏度、环境光干扰等因素的影响。解决方法包括增加发射功率(在允许范围内)、使用更高灵敏度的接收头、优化发射和接收角度等。
Bytesonic Corporation公司的发展小趣事

经过几年的艰苦打拼,Bytesonic Corporation在1987年迎来了重要的转折点。这一年9月,公司资本金增至新台币500万元,为公司的进一步扩张提供了坚实的资金基础。有了更多的资本支持,公司开始加大在研发和市场推广上的投入,逐渐在行业内树立起了一定的品牌影响力。

问答坊 | AI 解惑

音响功放开关稳压电源电路.jpg

本帖最后由 paulhyde 于 2014-9-15 09:38 编辑 音响功放开关稳压电源电路.jpg  …

查看全部问答>

想购买一个二手的编程器(烧录器)

要求能够写PIC系列的和ARM系列的MCU,我在广州, 有的联系,QQ:82348559,电:020-82348559…

查看全部问答>

电压基准设计指南

电压基准设计指南 第八版 电压基准设计指南 第七版…

查看全部问答>

关于LED灯电流的问题

今天做实验,本来我的驱动板能驱动3.8V 650ma的电流; 给1W的LED(3.3v350ma)的通电,长时间后,虽然电压 没有多大的变化3。8+-0.1V;LED的电流就开始乱跳 , 为470MA-520ma;再也升不到650,这是为何原因;我这个 驱动其实是为1*3W的灯做的驱 ...…

查看全部问答>

USB 打开管道

我在wince5.0下调时一个camera驱动,打开管道有问题 我的camera有两个EndPoints,有一个control endpoint,EndPoint 0;还有一个Video Data EndPoint,EndPoint 1 现在,我要传输Video data,需要打开pipe,就OpenPipe,结果返回值为NULL,GetLas ...…

查看全部问答>

汇编中经常看到.text是什么区域?

如题,一般什么内容适合放在该区域呢?…

查看全部问答>

求助:熔丝配置成了CKSEL=0000,SUT=00

我首先外接了另外一片正常工作的单片机,其振荡频率为7.3728M(外接晶体振荡器),从此单片机的XTAL1上或XTAL2上引出线到配置错的单片机的XTAL1(未外接任何其他元件)上(同一个电源供电),还是配置不了熔丝,该怎么办啊 …

查看全部问答>

如何烧写到开发板

EVC编好的exe程序如何烧写到ARM板上,板子是2410的, 哪位大虾给讲一下大致的步骤?可以通过USB口烧吗? JTAG怎么用? …

查看全部问答>

什么函数可以判断键盘是否有输入啊?

各位高手,我希望在shell中实现如下功能:输入任务名Test后不停的执行doTest函数,并输出结果,一旦按下键盘上任意按键,就停止执行,我尝试用getchar()来判断,但它只要放在循环里就会卡住一直等待按键输入,这显然不符合我的要求,请问该怎样实现 ...…

查看全部问答>

蹭网100分~!

我现在住的地方用我的笔记本内置无线网卡可接收到外面的无线信号,但是只有一格,连接的时候显示连接不成功,我想问下有什么方法可增强我这的接收信号强度?是否能用无线AP或是无线路由器做客户端来实现增强信号上网?可行性有多大?推荐哪种型号?…

查看全部问答>