重庆大学倪晓嵌入式作业.docx

上传人:b****8 文档编号:29510259 上传时间:2023-07-24 格式:DOCX 页数:25 大小:2.36MB
下载 相关 举报
重庆大学倪晓嵌入式作业.docx_第1页
第1页 / 共25页
重庆大学倪晓嵌入式作业.docx_第2页
第2页 / 共25页
重庆大学倪晓嵌入式作业.docx_第3页
第3页 / 共25页
重庆大学倪晓嵌入式作业.docx_第4页
第4页 / 共25页
重庆大学倪晓嵌入式作业.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

重庆大学倪晓嵌入式作业.docx

《重庆大学倪晓嵌入式作业.docx》由会员分享,可在线阅读,更多相关《重庆大学倪晓嵌入式作业.docx(25页珍藏版)》请在冰豆网上搜索。

重庆大学倪晓嵌入式作业.docx

重庆大学倪晓嵌入式作业

 

嵌入式系统

 

基于浏览器的远程电机运转控制设计

 

指导教师:

倪晓

学院:

自动化学院

学生:

学号:

 

2013、1

 

 

基于浏览器的远程电机运转控制设计

摘要:

本设计构建基于ARM的嵌入式web服务器,通过互联网、远端计算机通过浏览器浏览试验箱网页,试验箱网页上的控制按钮能够控制试验箱电机的运转和停止。

利用网页的表单与CGI技术相结合,最终实现使用浏览器远程控制电机的运转。

由于本次课程设计任务量较大,为了方便学习和更好地完成任务,我和田正民、瑞娜组成小组,每个人都做了分工,平时相互学习、讨论。

大部分工作是我们一起完成的,我主要负责文件系统的制作,Busybox的移植,CGI脚本的制作。

1嵌入式系统开发环境

1.1硬件开发环境介绍

像计算机,嵌入式系统应该有:

在硬件方面:

中央处理器CPU,RAM,ROM(Flash),端口,总线,用户界面和输入输出设备,等等。

在软件方面:

BIOS,Boot-loader,操作系统,文件系统和用户应用程序,等等。

开发主机:

它是标准计算机,其上可运行交叉工具链来开发用户代码。

用户代码可以从开发主机通过JTAG口或串口下载到目标板,然后再对代码进行调试。

目标机:

具有特定处理器的开发板。

目标重定向机:

因为通常目标机没有键盘和显示器,目标机的输入和输出通过串口被重定向到另外一台计算机,开发人员通过运行特定的软件(如windows的超级终端或Linux的minicom)在重定向机上操作目标板上的软件运行。

本次课程设计采用的是一款基于ARM2410试验箱。

板载以太网口,因此可以满足课程设计的需要。

串口作为终端输入与输出,USBDevice接口配合DNW用于下载程序。

基本开发模型示意图如图1.1所示:

图1.1嵌入式基本开发模型示意图

 

ARM2410试验箱如图1.2所示:

图1.2ARM2410试验箱

1.2虚拟机中安装红帽企业版

安装Vmware8.0虚拟机

其安装方法和其他软件类似,运行其安装程序,按照提示一步一步进行下去就是了。

安装好后运行此程序,如下:

安装RedHatEnterpriseLinux5(RHEL5)

起动Vmare后,点击“CreateaNewVirtualMachine”,选择用户自定义安装:

按照提示,到加载ISO镜像这步:

在网络类型处,选择Usebridgednetworking。

最后,完成NewVirtualMachineWizard:

点击Finish后,将安装刚才的RHL5,安装如下步骤:

1.选择安装方式(这里我选择图形界面安装)。

2.回车后继续。

3.点击Next继续。

4.这里要求选择安装过程中所用的语言,默认的为英文,我选择该选项,点击Next继续。

5.这里选择键盘类型,使用默认的,点击Next继续。

6.由于该Linux版本为REDHATENTERPRISELINUX5.1Server,在此要求输入序列号,该步骤可以跳过不输入序列号(不输入序列号有些软件包不会被安装,但在进入系统后可自己添加软件包),输入序列号确认无误后,点击Next继续。

7.选择YES,点击Next继续。

8.这里建立分区,有三种方案可供选择。

9.根据实际情况是否保留原有分区或者数据选择,这里选择在选定的驱动器上移除LINUX分区,并由系统自动分区,比较有经验的可以自定义分区,点击Next继续。

10.确认在选定的驱动器上移除所有的LINUX分区后,点击Next继续。

11.这里可以看到系统各分区的类型和大小(要在第9步中将Reviewandmodifypartitioninglayout前的复选框勾上),点击Next继续。

12.这里配置引导装载程序的安装位置和相关信息,使用默认即可,点击Next继续。

13.这里可以设置BootLoader的密码,以防止单用户进入系统时不需要密码,点击Next继续。

14.这里配置IP的相关信息,可以自动从DHCP服务器获得,也可自己配置,点击Next继续。

15.这里可以设置主机名及DNS相关信息,点击Next继续。

16.这里选择时区,点击Next继续。

17.这里设置根用户的密码,也即超级用户密码,设定好后,点击Next继续。

18.这里选择软件包的安装方式,为了减少麻烦,可以自定义安装,将所有的软件包都装上,点击Next继续。

19.左边是软件包的类型,右边是相应的软件包,将其都选上,所有的软件包依次如下所示。

20.到此在安装前所有的配置完成,这也是最后反悔的机会,点击Next将开始安装系统。

21.开始格式化/文件系统,接着是/boot文件系统。

22.传输安装映像到硬盘。

23.开始安装进程。

24.稍等一会儿,系统继续安装。

25.以下是在安装过程中的几个时间段,所用安装时间取决于硬件配置和存的大小。

26.安装完成系统重启。

27.系统重新启动时的界面。

28.可以看到系统启动时的个进程的详细信息。

29.第一次启动系统时要做相应的配置,会有如下的配置向导。

30.点击Forward继续。

31.同意许可协议,点击Forward继续。

32.如果要添加端口,可以详细的配置,同时在TrustedServices右侧可以选择可信任的服务,配置好后,点击Forward继续。

33.点击YES,然后点击Forward继续。

34.点击Forward继续。

34.该选项可以不选,点击Forward继续。

35.OK后,点击Forward继续。

36.选了Kdump后,在这一步需要重启系统,OK后,系统重;若没有选择Kdump,点击Forward继续。

37.这里设置日期和时间,设定好好,点击Forward继续。

38.这里暂时不注册系统的相关信息,选择以后注册后点击Forward继续。

39.在上一步骤中可以选择WhyshouldIIconnectRAN……?

,出现上图的界面,点击Forward继续。

40.这里选择以后,点击Forward继续。

41.点击Forward继续。

42.创建普通用户的相关信息后,点击Forward继续。

43.如果需要网络登录,也可以配置相关的用户信息,配置好后,点击Forward继续。

44.配置声卡相关信息,配置好后,点击Forward继续。

45.如不需要插入CD,点击Finish完成所用相关信息的配置,至此整个系统的安装初始配置完成。

46.重启系统,使刚才的相关设置生效。

启动界面如下。

47.默认进入图形登录界面,这里输入用户名和密码后,终于进入了图形桌面。

48.按Ctrl+Alt+Fn(n=1,2,3,4,5,6)可进入命令行操作界面,也即真正的终端,按Ctrl+Alt+F7可返回到图形界面。

49.输入用户名和密码后登录了系统,这里在输入密码时没有任何显示。

50.执行几个命令。

51.图形桌面下的菜单。

52.图形界面下的命令行窗口,即虚拟终端。

53.关闭系统时个进程依次终止。

54.完毕。

安装vmware-tools

为了方便编译,为了更好的解决虚拟机与主机的共享问题,VMware公司有一个VMWare-tools,来实现文件共享。

VMWare-tools步骤如下:

1.启动并进入Linux系统。

2.然后选择虚拟机菜单中的“虚拟机/安装VMware-Tools”,此时就会有把VMware-tools文件映像到CD-ROM中(就是将VM安装目录下的linux.iso镜像加载到虚拟系统的光驱中,如果提示VM安装目录没有linux.iso文件,需要自己下载一个放到该目录下)。

3.进入linux操作系统,/mnt/cdrom/目录下就可以看到安装文件了,把VMwareTools-文件复制到自己的需要的位置中,。

4.解压#tar-zxvfVMwareTools-。

5.进入cdVMtool/vmware-tools-distrib目录中。

6.输入./vmware-install.pl进行安装,在安装过程中根据提示进行选择,在此我一路选择回车即可。

经过以上安装,最终ware环境下的Linux系统开发环境如下图:

2交叉工具链的安装

在Vmware虚拟机开发环境下,我们要把交叉编译工具链安装到:

$CROSSDIR目录下,安装步骤如下:

把工具代码包arm-linux-gcc-.tar拷贝到/tmp/目录下,运行vmware,执行命令cd/tmp/,进入tmp文件夹,然后执行,解压压缩包,具体指令如下:

#tar-jxvfarm-linux-gcc-.tar.bz2

解压过程需要一段时间,解压后的文件形成了usr/local/文件夹,vmware中操作如图3.1。

进入该文件夹,将arm文件夹拷贝到/usr/local/下#cdusr/local/

#cp-rvarm/usr/local/

现在交叉编译程序集都在/usr/local/arm//bin下面了。

vmware中操作如图3.2所示。

修改环境变量,把交叉编译器的路径加入到PATH。

(有三种方法,强烈推荐使用法一)

  方法一:

修改/etc/bash.bashrc文件

     #vim/etc/bash.bashrc

         在最后加上:

exportPATH=$PATH:

/usr/local/arm//bin(如果不能编辑,先修改相关文件的权限使用chmod命令。

方法二:

修改/etc/profile文件:

#vim/etc/profile

增加路径设置,在末尾添加如下,保存/etc/profile文件:

exportPATH=$PATH:

/usr/local/arm//bin

  方法三:

#exportPATH=注:

(这只能在当前的终端下才是有效的!

)。

本实验用的是方法3,vmware中操作如图3.3

3)立即使新的环境变量生效,不用重启电脑:

 对应方法一:

#source/root/.bashrc

 对应方法二:

#source/etc/profile

4)检查是否将路径加入到PATH:

#echo$PATH

  显示的容中有/usr/local/arm/bin,说明已经将交叉编译器的路径加入PATH。

至此,交叉编译环境安装完成。

5)测试是否安装成功

  #arm-linux-gcc-v

上面的命令会显示arm-linux-gcc信息和版本。

本实验测试结果如图3.4.

图3.1解压压缩包arm-linux-gcc-.tar

图3.2将arm文件夹拷贝到/usr/local/下

图3.3修改环境变量

图3.4测试是否安装成功

3核的编译

1.首先从.kernel.org/pub/linux/kernel/v2.6/获得最新的核的版本。

tarzxvflinux-.tar.gz

ln-slinux-linux(创建软连接,方便查找文件)

cdlinux

makeclean

清除之前的核编译残留的源代码树上的所有文件

makemrproper

在源代码目录树的顶层擦除所有的.config文件

2.配置核

一般开发板都给了默认的配置文件,使用默认的即可。

将其命名为“.config”。

执行makemenuconfig,编译指令见图3.1,出现配置核界面见图3.2。

图3.1编译指令结果

图3.2核配置界面

这时不用做任何更改,在主菜单里选择退出,这样做是为了生成相应配置的头文件。

3.编译核

1)修改Makefile中的CPU体系结构和交叉编译工具。

ARCH?

=arm

CROSS_COMPILE?

=arm-linux-

添加对NandFlash的支持

修改arch/arm/plat-s3c24xx/common-smdk.c

修改结构体smdk_default_nand_part[]

修改为:

staticstructmtd_partitionsmdk_default_nand_part[]={

[0]={

.name=“Clover_Board_uboot”

.offset=0x00000000,

.size=0x00040000,

},

[1]={

.name=“Clover_Board_Kernel”,

.offset=0x00200000,

.size=0x00200000,

},

[2]={

.name=“Clover_Board_yaffs2”,

.offset=0x00400000,

.size=0x03BF8000,

}

};

添加对yaffs2文件系统的支持

b)cdcvs/yaffs2

c)./patch-ker.shc/opt/linux-.4/

制作配置单

由于S3C2440与S3C2410有很多相同的地方,因此可以在S3C2410的基础上修改

导入arch/arm/configs/s3c2410_defconfig

在SystemType->S3C2440Machines中将SMDK2440与SMDK2440withS3C2440CPUmodule选中。

添加NandFlash驱动

在DeviceDrivers->MemoryTechnologyDevice(MTD)Support中选中NANDFlashsupportforS3C2410/S3C2440SoC

添加对yaffs2文件系统的支持

在Filesystems->Miscellaneousfilesystems中分别选中YAFFS2filesystemsupport,Autoselectyaffs2format,CacheshortnamesinRAM

添加交叉编译器的支持

在KernelFeatures中选中usetheARMEABItocomilethekernel

5)然后执行makezImage编译核。

编译结束后,会在arch/arm/boot目录下生成linux核映象文件:

zImage。

4制作yaffs2文件系统

文件系统的制作主要由我完成。

文件系统是对一个存储设备上的数据和元数据进行组织的机制。

与其他linux开发一样,制作文件系统是必要的。

其实文件系统的制作已经差不多模式化,从网上可以搜索到很多资料,关键是跟自己的核,busybox等环境相适应,还要考虑到移植及使用方便。

1)编译BusyBox

可以在

首先创建一个名字为root_的文件夹,在其中创建如下文件夹

etcbinvardevhomelibmntprocrootsbinsystmpusropt共14个文件夹。

然后解压BusyBox:

#tarjxvfbusybox-.tar.bz2–C/opt

进入源目录,修改Makefile

第164行,CROSS_COMPILE=arm-linux-

第190行,ARCH=arm

编译安装:

#make;#makeinstall

然后就会在上一级目录下生成rootfs文件夹,里面包含几个文件夹/bin/sbin/usrlinuxrc把这些文件全部复制到刚建好的root_目录下,

#cp–rf*../root_

在dev目录下,创建两个设备节点:

#mknodconsolec51

#mknodnullc13

然后进入自己建立的etc目录,拷贝Busybox-/examples/bootfloopy/etc/*到当前目录下。

#cp-r../../busybox-/examples/bootfloopy/etc/*./

包括文件:

fstabinit.dinittabprofile

拷贝/etc/passwd,/etc/group,/etc/shadow到当前目录下。

#cp/etc/passwd./

#cp/etc/group./

#cp/etc/shadow./

2)构建文件系统

1.新建文件系统目录:

#mkdirroot_web

2.复制_install中的bin,sbin,usr,linuxrc到root_web

3.在root_web中新建dev、etc、home、lib、mnt、opt、proc、root、sys、tmp、var、

4.在各个目中添加相应容。

5busybox的移植

这部分主要由我和田正民同学完成。

busybox的配置程序和linux核菜单配置方式简直一模一样.在前面已经用make menuconfig方式配置linux的核,所以很容易上手。

1)Busybox是一个轻型的linux命令工具集,在此使用的是busybox-版本。

用户可以从其官方下载最新版本()。

2)解压:

#tarzxvfboa-.tar.gz–C/opt

3)生成配置文件:

#./configure

修改Makefile:

viMakefile

将CC=gcc和CPP=gcc–E修改为:

CC=arm-linux-gccCPP=arm-linux-g++-E

4)修改src/boa.c

注释掉:

if(setuid(0)!

=-1){

DIE(“ickyLinuxkernelbug!

”);

}

修改src/compat.h

将#defineTIMEZONE_OFFSET(foo)foo##->tm_gmtoff

修改为:

#defineTIMEZONE_OFFSET(foo)foo->tm_gmtoff

5)编译并优化

#make,#arm-linux-stripboa

6)移植cgic库

a)解压:

b)修改Makefile:

viMakefile

将:

CC=gccAR=arRANLIB=ranlib

修改为CC=arm-linux-gccAR=arm-linux-arRANLIB=arm-linux-ranlib

将install:

libcgic.a

cplibcgic.a/usr/local/lib

cpcgic.h/usr/local/include

修改为

install:

libcgic.a

cplibcgic.a/opt/arm-2011.03/arm-none-linux-gnueabi/libc/armv4t/lib

cpcgic.h/opt/arm-2011.03/arm-none-linux-gnueabi/libc/usr/include

7)编译并优化

#make,#arm-linux-stripcapture

配置web服务器

修改boa.conf

主要修改容:

Userroot

Grouproot

ServerNameClover

DocumentRoot/web

DirectoryIndexindex.html

ScriptAlias/cgi-bin//web/cgi-bin/

8)配置cgic库

在root_web中新建目录:

mkdirweb;cdweb;mkdircgi-bin

复制cgic库:

cp/opt/cgic205/capture/opt/root_web/web/cgi-bin

6嵌入式web服务器boa的移植

6.1Boa的编译

1.下载Boa源码

下载地址:

.boa.org/,或者

最新发行版本:

下载,注意:

从boa上下载的是,解压方式一样

解压:

2.生成Makefile文件

直接运行src/configure文件

3.修改Makefile文件

a、修改CC=gcc

为CC=arm-linux-gcc

b.修改CPP=gcc–E

为CPP=arm-linux-gcc–E

4.编译

#make

出现一个错误:

gcc-g-O2-pipe-Wall-I.-c-outil.outil.c

util.c:

100:

1:

error:

pasting"t"and"->"doesnotgiveavalidpreprocessingtokenmake:

***[util.o]Error1

解决方法:

修改src/compat.h

找到

#defineTIMEZONE_OFFSET(foo)foo##->tm_gmtoff

修改成

#defineTIMEZONE_OFFSET(foo)(foo)->tm_gmtoff

重新执行make指令,得到名为boa的可执行文件。

#arm-linux-stripboa

arm-linux-strip处理过后,将去掉其中的调试信息,执行文件大小也将小很多。

6.2Boa的配置

Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。

在Boa源码目录下已有一个示例boa.conf,可以在其基础上进行修改。

1.Group的修改

修改Groupnogroup为Group0由于在/etc/group文件中没有nogroup组,所以设成0。

另外在/etc/passwd中有nobody用户,所以Usernobody不用修改。

2.ScriptAlias的修改

修改ScriptAlias/cgi-bin//usr/lib/cgi-bin/

为ScriptAlias/cgi-bin//var//cgi-bin/

3.ServerName的设置

修改#ServerName

为ServerName.your.org.here

注意:

该项默认为未打开,执行Boa会异常退出,提示“gethostbyname:

:

Nosuchfileordirectory”,所以必须打开。

其它默认设置即可。

6.3Boa的执行

成功配置以后,还需要创建日志文件所在目录/var/log/boa,创建HTML文档的主目录/var/,将静态网页存入该目录下(可以将主机/usr/share/doc/HTML/目录下的index.html文件和img目录复制到/var/www目录下),创建CGI脚本所在录/var//cgi-bin,将cgi的脚本存放在该目录下。

另外还要将mime.types文件复制/etc目录下,通常可以从linux主机的/etc目录下直接复制即可。

实际运行时,可以将index.html文件、img目录和mime.types文件放到CF卡目录下,建立目录后,拷贝至相应目录。

制作run.sh

mkdir/etc/boa

cp/cf/boa/boa.conf/etc/boa/

mkdir/var/log

mkdir

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1