重庆大学倪晓-嵌入式作业

上传人:bei****lei 文档编号:174455932 上传时间:2022-12-15 格式:DOC 页数:19 大小:4.28MB
收藏 版权申诉 举报 下载
重庆大学倪晓-嵌入式作业_第1页
第1页 / 共19页
重庆大学倪晓-嵌入式作业_第2页
第2页 / 共19页
重庆大学倪晓-嵌入式作业_第3页
第3页 / 共19页
资源描述:

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

1、 嵌入式系统 基于浏览器的远程电机运转控制设计指导教师:倪晓学 院:自动化学院学 生: 学 号: 2013、1基于浏览器的远程电机运转控制设计摘要:本设计构建基于ARM的嵌入式web服务器,通过互联网、远端计算机通过浏览器浏览试验箱网页,试验箱网页上的控制按钮能够控制试验箱电机的运转和停止。利用网页的表单与CGI技术相结合,最终实现使用浏览器远程控制电机的运转。由于本次课程设计任务量较大,为了方便学习和更好地完成任务,我和田正民、杨瑞娜组成小组,每个人都做了分工,平时相互学习、讨论。大部分工作是我们一起完成的,我主要负责文件系统的制作,Busybox的移植,CGI脚本的制作。1 嵌入式系统开发

2、环境1.1 硬件开发环境介绍像计算机,嵌入式系统应该有:在硬件方面:中央处理器CPU, RAM, ROM (Flash), 端口,总线,用户界面和输入输出设备,等等。在软件方面:BIOS,Boot-loader,操作系统,文件系统和用户应用程序,等等。开发主机:它是标准计算机,其上可运行交叉工具链来开发用户代码。用户代码可以从开发主机通过JTAG口或串口下载到目标板,然后再对代码进行调试。 目标机:具有特定处理器的开发板。目标重定向机:因为通常目标机没有键盘和显示器,目标机的输入和输出通过串口被重定向到另外一台计算机,开发人员通过运行特定的软件(如windows的超级终端或Linux的mini

3、com)在重定向机上操作目标板上的软件运行。本次课程设计采用的是一款基于ARM2410试验箱。板载以太网口,因此可以满足课程设计的需要。串口作为终端输入与输出,USB Device接口配合DNW用于下载程序。基本开发模型示意图如图1.1所示:图1.1 嵌入式基本开发模型示意图ARM2410试验箱如图1.2所示:图1.2 ARM2410试验箱1.2 虚拟机中安装红帽企业版1.2.1 安装Vmware8.0虚拟机其安装方法和其他软件类似,运行其安装程序,按照提示一步一步进行下去就是了。安装好后运行此程序,如下:1.2.2 安装Red Hat Enterprise Linux 5(RHEL5)起动V

4、mare后,点击“Create a New Virtual Machine”,选择用户自定义安装: 按照提示,到加载ISO镜像这步: 在网络类型处,选择Use bridged networking。最后,完成New Virtual Machine Wizard:点击Finish后,将安装刚才的RHL5,安装如下步骤:1. 选择安装方式(这里我选择图形界面安装)。 2.回车后继续。3.点击Next继续。4.这里要求选择安装过程中所用的语言,默认的为英文,我选择该选项,点击Next继续。5.这里选择键盘类型,使用默认的,点击Next继续。6.由于该Linux版本为REDHAT ENTERPRISE

5、 LINUX 5.1 Server,在此要求输入序列号,该步骤可以跳过不输入序列号(不输入序列号有些软件包不会被安装,但在进入系统后可自己添加软件包),输入序列号确认无误后,点击Next继续。7.选择YES,点击Next继续。8.这里建立分区,有三种方案可供选择。9.根据实际情况是否保留原有分区或者数据选择,这里选择在选定的驱动器上移除LINUX分区,并由系统自动分区,比较有经验的可以自定义分区,点击Next继续。10.确认在选定的驱动器上移除所有的LINUX分区后,点击Next继续。11.这里可以看到系统各分区的类型和大小(要在第9步中将Review and modify partition

6、ing layout前的复选框勾上),点击Next继续。12.这里配置引导装载程序的安装位置和相关信息,使用默认即可,点击Next继续。13.这里可以设置Boot Loader 的密码,以防止单用户进入系统时不需要密码,点击Next继续。14.这里配置IP的相关信息,可以自动从DHCP服务器获得,也可自己配置,点击Next继续。15.这里可以设置主机名及DNS相关信息,点击Next继续。16.这里选择时区,点击Next继续。17.这里设置根用户的密码,也即超级用户密码,设定好后,点击Next继续。18.这里选择软件包的安装方式,为了减少麻烦,可以自定义安装,将所有的软件包都装上,点击Next继

7、续。19.左边是软件包的类型,右边是相应的软件包,将其都选上,所有的软件包依次如下所示。20.到此在安装前所有的配置完成,这也是最后反悔的机会,点击Next将开始安装系统。21.开始格式化/文件系统,接着是/boot文件系统。22.传输安装映像到硬盘。23. 开始安装进程。24.稍等一会儿,系统继续安装。25.以下是在安装过程中的几个时间段,所用安装时间取决于硬件配置和内存的大小。26.安装完成系统重启。27.系统重新启动时的界面。28.可以看到系统启动时的个进程的详细信息。29.第一次启动系统时要做相应的配置,会有如下的配置向导。30.点击Forward继续。31.同意许可协议,点击Forw

8、ard继续。32.如果要添加端口,可以详细的配置,同时在Trusted Services右侧可以选择可信任的服务,配置好后,点击Forward继续。33.点击YES,然后点击Forward继续。34.点击Forward继续。34.该选项可以不选,点击Forward继续。35.OK后,点击Forward继续。36.选了Kdump后,在这一步需要重启系统,OK后,系统重;若没有选择Kdump , 点击Forward继续。37.这里设置日期和时间,设定好好,点击Forward继续。38.这里暂时不注册系统的相关信息,选择以后注册后点击Forward继续。39.在上一步骤中可以选择 Why shoul

9、d IIconnect RAN?,出现上图的界面,点击Forward继续。40.这里选择以后链接,点击Forward继续。41 .点击Forward继续。42.创建普通用户的相关信息后,点击Forward继续。43.如果需要网络登录,也可以配置相关的用户信息,配置好后,点击Forward继续。44.配置 声卡相关信息,配置好后,点击Forward继续。45.如不需要插入CD,点击Finish完成所用相关信息的配置,至此整个系统的安装初始配置完成。46.重启系统,使刚才的相关设置生效。启动界面如下。47.默认进入图形登录界面,这里输入用户名和密码后,终于进入了图形桌面。48.按Ctrl+Alt+

10、Fn(n=1,2,3,4,5,6)可进入命令行操作界面,也即真正的终端,按Ctrl+Alt+F7可返回到图形界面。 49.输入用户名和密码后登录了系统,这里在输入密码时没有任何显示。50.执行几个命令。51.图形桌面下的菜单。52.图形界面下的命令行窗口,即虚拟终端。53.关闭系统时个进程依次终止。54.完毕。1.2.3安装vmware-tools为了方便编译,为了更好的解决虚拟机与主机的共享问题,VMware公司有一个VMWaretools,来实现文件共享。VMWaretools步骤如下:1. 启动并进入Linux系统。2. 然后选择虚拟机菜单中的“虚拟机/安装VMware- Tools”,

11、此时就会有把VMware-tools文件映像到CDROM中(就是将VM安装目录下的linux.iso镜像加载到虚拟系统的光驱中,如果提示VM安装目录没有linux.iso文件,需要自己下载一个放到该目录下)。3. 进入linux操作系统,/mnt/cdrom/目录下 就可以看到安装文件了,把VMwareTools-6.0.2-59824.tar.gz”文件复制到自己的需要的位置中,cp /mnt/cdrom/VMwareTools-6.0.3-80004.tar.gz VMtool。4. 解压# tar -zxvf VMwareTools-6.0.3-80004.tar.gz。5. 进入cd

12、VMtool/vmware-tools-distrib目录中。6. 输入 ./vmware-install.pl进行安装,在安装过程中根据提示进行选择,在此我一路选择回车即可。经过以上安装,最终ware环境下的Linux系统开发环境如下图:2 交叉工具链的安装在Vmware虚拟机开发环境下,我们要把交叉编译工具链安装到:$CROSSDIR目录下,安装步骤如下:把工具代码包arm-linux-gcc-3.4.1.tar拷贝到/tmp/目录下,运行vmware,执行命令cd /tmp/ ,进入tmp文件夹,然后执行tar jxvf arm-linux-gcc-3.4.1.tar.bz2,解压压缩包

13、arm-linux-gcc-3.4.1.tar,具体指令如下:#tar -jxvf arm-linux-gcc-3.4.1.tar.bz2解压过程需要一段时间,解压后的文件形成了 usr/local/ 文件夹,vmware中操作如图3.1。进入该文件夹,将arm文件夹拷贝到/usr/local/下# cd usr/local/#cp -rv arm /usr/local/现在交叉编译程序集都在/usr/local/arm/3.4.1/bin下面了。vmware中操作如图3.2所示。修改环境变量,把交叉编译器的路径加入到PATH。(有三种方法,强烈推荐使用法一)方法一:修改/etc/bash.b

14、ashrc文件#vim /etc/bash.bashrc在最后加上: export PATH$PATH:/usr/local/arm/3.4.1/bin(如果不能编辑,先修改相关文件的权限使用chmod命令。)方法二:修改/etc/profile文件:# vim /etc/profile增加路径设置,在末尾添加如下,保存/etc/profile文件:export PATH$PATH:/usr/local/arm/3.4.1/bin方法三:#export PATH$PATH:/usr/local/arm/3.4.1/bin 注:(这只能在当前的终端下才是有效的!)。本实验用的是方法3,vmwar

15、e中操作如图3.33)立即使新的环境变量生效,不用重启电脑:对应方法一:#source /root/.bashrc对应方法二:# source /etc/profile4)检查是否将路径加入到PATH: # echo $PATH显示的内容中有/usr/local/arm/bin,说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。5)测试是否安装成功# arm-linux-gcc -v上面的命令会显示arm-linux-gcc信息和版本。本实验测试结果如图3.4.图3.1 解压压缩包arm-linux-gcc-3.4.1.tar图3.2 将arm文件夹拷贝到/usr/local

16、/下图3.3修改环境变量图3.4测试是否安装成功3 内核的编译1. 首先从http:/www.kernel.org/pub/linux/kernel/v2.6/获得最新的内核的版本linux-3.8.2。tar zxvf linux-3.8.2.tar.gzln -s linux-3.8.2linux (创建软连接,方便查找文件)cd linuxmake clean 清除之前的内核编译残留的源代码树上的所有文件make mrproper在源代码目录树的顶层擦除所有的.config文件2. 配置内核一般开发板都给了默认的配置文件,使用默认的即可。将其命名为“.config”。执行make men

17、uconfig,编译指令见图3.1,出现配置内核界面见图3.2。 图3.1 编译指令结果 图3.2 内核配置界面这时不用做任何更改,在主菜单里选择退出,这样做是为了生成相应配置的头文件。3. 编译内核1)修改Makefile中的CPU体系结构和交叉编译工具。ARCH ?= armCROSS_COMPILE ?= arm-linux-添加对Nand Flash的支持修改 arch/arm/plat-s3c24xx/common-smdk.c 修改结构体smdk_default_nand_part 修改为: static struct mtd_partition smdk_default_nand

18、_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文件系统的支持a) tar zxvf cvs-root.tar.gz C /optb) cd cv

19、s/yaffs2c) ./patch-ker.sh c /opt/linux-2.6.30.4/制作配置单由于S3C2440 与 S3C2410 有很多相同的地方,因此可以在S3C2410的基础上修改导入 arch/arm/configs/s3c2410_defconfig在 System Type-S3C2440 Machines 中将 SMDK2440 与 SMDK2440 with S3C2440 CPU module选中。添加Nand Flash驱动 在Device Drivers-Memory Technology Device(MTD) Support中选中NAND Flash s

20、upport for S3C2410/S3C2440 SoC 添加对yaffs2文件系统的支持在 File systems-Miscellaneous filesystems中分别选中YAFFS2 file system support,Autoselect yaffs2 format, Cache short names in RAM添加交叉编译器的支持在Kernel Features中选中use the ARM EABI to comile the kernel5)然后执行make zImage编译内核。编译结束后,会在 arch/arm/boot 目录下生成linux 内核映象文件:zI

21、mage。4 制作yaffs2文件系统文件系统的制作主要由我完成。文件系统是对一个存储设备上的数据和元数据进行组织的机制。与其他linux开发一样,制作文件系统是必要的。其实文件系统的制作已经差不多模式化,从网上可以搜索到很多资料,关键是跟自己的内核,busybox等环境相适应,还要考虑到移植及使用方便。1) 编译BusyBox 可以在 下载busybox-1.13.3.tar.bz2,其他版本也行。 首先创建一个名字为root_2.6.31的文件夹,在其中创建如下文件夹etc bin var dev home lib mnt proc root sbin sys tmp usr opt 共1

22、4个文件夹。 然后解压BusyBox:#tar jxvf busybox-1.13.3.tar.bz2 C /opt 进入源目录,修改Makefile第164行,CROSS_COMPILE = arm-linux-第190行,ARCH = arm 编译安装:#make;#make install然后就会在上一级目录下生成rootfs文件夹,里面包含几个文件夹/bin /sbin /usr linuxrc把这些文件全部复制到刚建好的root_2.6.31目录下,#cp rf * ./root_2.6.31在dev目录下,创建两个设备节点:#mknod console c 5 1#mknod nu

23、ll c 1 3然后进入自己建立的etc目录,拷贝Busybox-1.15.2/examples/bootfloopy/etc/* 到当前目录下。# cp -r ././busybox-1.15.2/examples/bootfloopy/etc/* ./包括文件:fstab init.d inittab profile拷贝/etc/passwd, /etc/group, /etc/shadow到当前目录下。# cp /etc/passwd ./# cp /etc/group ./# cp /etc/shadow ./2) 构建文件系统 1.新建文件系统目录:#mkdir root_web 2

24、.复制_install中的bin,sbin,usr, linuxrc 到 root_web3.在root_web中新建dev、etc、home、lib、mnt、opt、proc、root、sys、tmp、var、 4.在各个目中添加相应内容。5 busybox的移植这部分主要由我和田正民同学完成。busybox的配置程序和linux内核菜单配置方式简直一模一样.在前面已经用makemenuconfig方式配置linux的内核,所以很容易上手。1) Busybox是一个轻型的linux命令工具集,在此使用的是busybox-1.13.3 版本。用户可以从其官方网站下载最新版本()。2) 解压:#

25、 tar zxvf boa-1.13.3.tar.gz C /opt3) 生成配置文件:#./configure修改Makefile:vi Makefile 将 CC = gcc 和 CPP = gcc E 修改为: CC = arm-linux-gcc CPP = arm-linux-g+ -E 4) 修改 src/boa.c 注释掉:if(setuid(0) != -1) DIE(“icky Linux kernel bug!”); 修改 src/compat.h 将#define TIMEZONE_OFFSET(foo) foo#-tm_gmtoff 修改为:#define TIMEZO

26、NE_OFFSET(foo) foo-tm_gmtoff 5) 编译并优化 # make,# arm-linux-strip boa 6) 移植cgic库 a) 解压:# tar xvfz cgic205.tar.gz C /opt b) 修改Makefile:vi Makefile 将:CC=gcc AR=ar RANLIB=ranlib 修改为 CC = arm-linux-gcc AR = arm-linux-ar RANLIB = arm-linux-ranlib 将 install: libcgic.a cp libcgic.a /usr/local/lib cp cgic.h /u

27、sr/local/include 修改为 install: libcgic.acp libcgic.a/opt/arm-2011.03/arm-none-linux-gnueabi/libc/armv4t/lib cp cgic.h /opt/arm-2011.03/arm-none-linux-gnueabi/libc/usr/include7) 编译并优化#make,#arm-linux-strip capture配置web服务器修改boa.conf 主要修改内容: User root Group root ServerName Clover DocumentRoot /web Direc

28、toryIndex index.html ScriptAlias /cgi-bin/ /web/cgi-bin/8) 配置cgic库在root_web中新建目录:mkdir web;cd web;mkdir cgi-bin复制cgic库:cp /opt/cgic205/capture /opt/root_web/web/cgi-bin6嵌入式web服务器boa的移植6.1 Boa的编译1. 下载Boa源码下载地址: http:/www.boa.org/, 或者最新发行版本: 0.94.13下载 boa-0.94.13.tar.gz,注意:从boa上下载的是boa-0.94.13.tar.tar

29、,解压方式一样解压:# tar xzf boa-0.94.13.tar.gz2. 生成Makefile文件直接运行src/configure文件3. 修改Makefile文件a、 修改 CC = gcc为 CC = arm-linux-gccb. 修改 CPP = gcc E为 CPP = arm-linux-gcc E4. 编译#make出现一个错误:gcc -g -O2 -pipe -Wall -I. -c -o util.o util.c util.c:100:1: error: pasting t and - does not give a valid preprocessing to

30、ken make: * util.o Error 1 解决方法:修改src/compat.h 找到#define TIMEZONE_OFFSET(foo) foo#-tm_gmtoff修改成#define TIMEZONE_OFFSET(foo) (foo)-tm_gmtoff 重新执行make指令,得到名为boa的可执行文件。#arm-linux-strip boaarm-linux-strip处理过后,将去掉其中的调试信息,执行文 件大小也将小很多。6.2 Boa的配置Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。在Boa源码目录下已有一个示例

31、boa.conf,可以在其基础上进行修改。1. Group的修改修改Group nogroup为 Group 0由于在/etc/group文件中没有nogroup组,所以设成0。另外在/etc/passwd中有nobody用户,所以User nobody不用修改。2. ScriptAlias的修改修改 ScriptAlias/cgi-bin/ /usr/lib/cgi-bin/为 ScriptAlias/cgi-bin/ /var/www/cgi-bin/3. ServerName的设置修改 #ServerName www.your.org.here为ServerName www.your.o

32、rg.here注意:该项默认为未打开,执行Boa会异常退出,提示“gethostbyname:No such file or directory”,所以必须打开。其它默认设置即可。6.3 Boa的执行成功配置以后,还需要创建日志文件所在目录/var/log/boa,创建HTML文档的主目录/var/www,将静态网页存入该目录下(可以将主机 /usr/share/doc/HTML/目录下的index.html文件和img目录复制到/var/www目录下),创建CGI脚本所在录 /var/www/cgi-bin,将cgi的脚本存放在该目录下。另外还要将mime.types文件复制/etc目录下,

33、通常可以从linux主机的 /etc目录下直接复制即可。实际运行时,可以将index.html文件、img目录和mime.types文件放到CF卡目录下,建立目录后,拷贝至相应目录。制作run.shmkdir /etc/boacp /cf/boa/boa.conf /etc/boa/mkdir /var/logmkdir /var/log/boamkdir /var/wwwcp /cf/boa/index.html /var/www/cp -r /cf/boa/img /var/www/mkdir /var/www/cgi-bincp /cf/boa/mime.types /etc/cp /c

34、f/boa/boa /./boa &直接在浏览器中输入http:/192.168.1.107,出现Red Hat的欢迎网页。静态HTML调试成功。7 CGI脚本测试脚本测试这部分主要是我和杨瑞娜同学完成的。CGI运行在服务器上,提供同客户端HTML页面的接口。由于本次课程设计要求基于浏览器远程控制,因此CGI脚本测试是必要的。从网上也能搜到很多相关资料,主要是要针对本次课程设计要求编写。 1. 编写dcMotor.c程序#include int main(void)printf(Content-type: text/html );printf( );printf(CGI Output );pr

35、intf( ); printf();printf();printf();printf();printf( );printf( );exit(0);交叉编译生成dcMotor.cgi#arm-linux-gcc -o dcMotor.cgi dcMotor.c2. 浏览将dcMotor.cgi拷贝至/var/www/cgi-bin/下,浏览器输入 http:/192.168.1.107/cgi-bin/dcMotor.cgi启动的命令:./boa &8网页编写Dreamweaver是一个简单易学的网页制作平台,其具体开发环境见图8.1。本次课程设计就是在Dreamweaver上编写控制网页。在D

36、reamweaver中编写html网页,并命名为linux.html.。对于本次课程设计,重要的是需要添加表单,以便于和CGI相结合,来控制电机的运转。关键的表单代码如下:图8.1 Dreamweaver软件开发环境本次课程设计网页设计程序调试图见图8.2:图8.2 网页程序运行结果本次课程设计网页是在360安全浏览器上运行的,结果见图8.3:图8.3 网页运行界面9 实验测试本次实验测试步骤具体如下:(1) 将编译好的linux内核和yaffs2文件系统镜像烧写到开发板上。(2) 开发板的IP设置为192.168.1.6。(3) PC的IP设置为192.168.1.13(与开发板ip在同一网段)。(4) 将开发板和PC的以太网卡相接。(5) 在IE浏览器地址栏中输入192.168.1.6,此时可以看到之前编写的网页,选中电机启动,点击确定,电动开始运转。选中电机停止,点击确定,电机停止运转。17

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!