嵌入式作业.docx
- 文档编号:9741008
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:26
- 大小:1.69MB
嵌入式作业.docx
《嵌入式作业.docx》由会员分享,可在线阅读,更多相关《嵌入式作业.docx(26页珍藏版)》请在冰豆网上搜索。
嵌入式作业
嵌入式系统
基于浏览器的远程电机运转控制设计
指导教师:
倪晓
学生姓名:
2013.3
基于浏览器的远程电机运转控制设计
项目目的:
通过互联网,远端计算机通过浏览器浏览试验箱网页,试验箱网页上的控制按钮能够控制试验箱电机的运转和停止。
项目要求:
画出项目硬件开发环境;cygwin的安装;软件交叉工具链的安装步骤;内核和文件系统制作步骤;busybox和boa的移植步骤等。
总之,在目的的实现过程中的所有步骤都应清楚记录。
所需技术:
1.开发环境准备,包括试验箱和计算机之间的连线,开发软件环境等。
可以用Linux虚拟机开发,也可以用cygwin(推荐使用这个)。
安装交叉编译工具等
2.移植并集成操作系统启动的三大软件模块(内核,文件系统,bootloader),busybox的移植和集成。
3.在试验箱中实现boa网页服务器。
(以下步骤仅供参考,可以结合给出的步骤和boa文档,或在互联网上的一些移植资料,如
a.解包boa-0.94.13.tar.gz
tarxvfzboa-0.94.13.tar.gz
b.在boa目录中。
进入src目录,执行./configure
c.将Makefile中的行CC=gcc改为CC=arm-linux-gcc
CPP=gcc–E改为CPP=arm-linux-gcc–E
以上修改是为了编译出的目标代码能在arm试验箱上执行,如果编译出的目标代码在标准计算机上执行,就不要修改。
执行make
如果没有问题,可以看见boa被编译出来。
然后将该文件传输到试验箱执行,如果不幸出现“ickylinuxkernelbug!
的错误,请将src下的boa.c相应的行注释掉,再重新编译下载。
c.修改boa.conf文件(注意#表示所在行为注释)
#ServerNamewww.your.org.here
去掉#符号
Groupnogroup修改为GroupPPP
Usernouser修改为usernobody(这句和上句的修改是为了为用户通过网页登陆试验箱的Linux系统提供允许。
)
ScriptAlias/cgi-bin/user/lib/cgi-bin/修改为ScriptAlias/cgi-bin/var/www/cgi-bin/
d.拷贝boa.conf到试验箱的/etc目录下。
(注意拷贝是用超级终端把文件传到试验箱中,然后用mv命令把文件移到适当的地方,如果传到试验箱中又没看见文件可在根目录中用命令find–name文件名查找该文件。
)
e.在试验箱中,建立两个空目录,mkdir/var/log/boa和mkdir/var/www
f.在计算机中,找一个网页文件,例如/usr/share/doc/HTML/index.html,把它拷贝到试验箱的/var/www目录下。
g.在计算机中找一个文件mime.types,把它拷贝到试验箱/etc目录下。
h.把刚才编译好的boa文件拷贝到试验箱中执行。
i.配置好试验箱的IP地址,用ifconfig命令。
如ifconfigeth0192.168.0.2up
启动试验箱以太网口eth0。
查看试验箱以太网口状态命令为ifconfig。
j.把计算机的ip地址设置成和实验箱同一网域,用浏览器查看能否看见试验箱网页(访问目标系统网页http:
//192.168.0.x),如果看见,说明boa移植成功。
4.网页编写
随便找一个网页编写工具,如office的Word,写一个网页,作为实验箱的网页。
网页至少包含两个按键,一个是电机运转,一个是电机停止运转。
网页美工自己去设计。
5.CGI技术实施
CGI技术是解决用网页的按键执行网页服务器端的命令,在这个项目中一个是电机运行的命令,命令是demo\dcMotor,(参考实验箱文档直流电机实验部分)一个是电机停止运行的命令,一般来说是杀掉电机运转进程(命令kill-9dcMotor,查看进程的命令ps)。
同学们自己在图书馆或网上找资料解决CGI的实施。
1硬件开发环境
开发主机:
它是标准计算机,其上可运行交叉工具链来开发用户代码。
用户代码可以从开发主机通过JTAG口或串口下载到目标板,然后再对代码进行调试。
目标机:
具有特定处理器的开发板。
目标重定向机:
因为通常目标机没有键盘和显示器,目标机的输入和输出通过串口被重定向到另外一台计算机,开发人员通过运行特定的软件(如windows的超级终端或Linux的minicom)在重定向机上操作目标板上的软件运行。
2虚拟机中安装红帽企业版
2.1安装Vmware8.0虚拟机
其安装方法和其他软件类似,运行其安装程序,按照提示一步一步进行下去就是了,其中需要的序列号在网上随意收一个就能用了。
安装好后运行此程序,如下:
2.2安装RedHatEnterpriseLinux5(RHEL5)
起动Vmare后,点击“CreateaNewVirtualMachine”,选择用户自定义安装:
按照提示,一直到加载镜像这一步,
将linux5加载到这里,并且选中“Iwillinstalltheoperatingsystemlater.”
在网络类型处,选择Usebridgednetworking。
如下图所示:
最后,完成NewVirtualMachineWizard。
点击finish后,将安装刚才的RedHatLinux5。
以下便进入了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.完毕。
2.3安装vmware-tools
其步骤如下:
1.启动并进入Linux系统。
2.然后选择虚拟机菜单中的“虚拟机/安装VMware-Tools”,此时就会有把VMware-tools文件映像到CD-ROM中(就是将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.gzVMtool。
4.解压#tar-zxvfVMwareTools-6.0.3-80004.tar.gz。
5.进入cdVMtool/vmware-tools-distrib目录中。
6.输入./vmware-install.pl进行安装,在安装过程中根据提示进行选择,在此我一路选择回车即可。
3交叉工具链的安装
以ARMLinux站点提供的cross-3.3.2.tar.bz2包为例说明。
解压cross-3.3.2.tar.bz2后,查看GCC版本号,可以得到一些信息。
$tar–jxvfcross-3.3.2.tar.bz2
$./3.3.2/bin/arm-linux-gcc–v
Readingspecsfrom./3.3.2/bin/../lib/gcc-lib/arm-linux/3.3.2/specs
Configuredwith:
../gcc-3.3.2/configure--target=arm-linux
--with-cpu=strongarm1100--prefix=/usr/local/arm/3.3.2i686-pc-linux-gnu
--with-headers=/work/kernel.h3900/include--enable-threads=pthreads
--enable-shared--enable-static--enable-languages=c,c++
Threadmodel:
posix
gccversion3.3.2
从上面打印的版本信息中可以看到“--prefix=/usr/local/arm/3.3.2”,这就是GCC安装的路径。
它是在GCC编译前通过prefix选项配置的。
所以,这个工具链应该安装的路径是:
/usr/local/arm/3.3.2。
$mkdir–p/usr/local/arm
$mv./2.95.3/usr/loca/arm/
然后,在环境变量PATH中添加路径,就可以直接使用arm-linux-gcc命令了。
$exportPATH=$PATH:
/usr/local/arm/3.3.2/bin
4内核的编译
1.首先从http:
//www.kernel.org/pub/linux/kernel/v2.6/获得内核响应的版本。
tarzxvflinux-2.6.20.18.tar.gz
ln-slinux-2.6.20.18linux
cdlinux
makeclean
清除之前的内核编译残留的源代码树上的所有文件
makemrproper
在源代码目录树的顶层擦除所有的.config文件
2.配置内核
一般开发板都给了默认的配置文件,使用默认的即可。
将其命名为“.config”。
执行makemenuconfig出现配置内核界面:
这时不用做任何更改,在主菜单里选择
3.编译内核
修改Makefile中的CPU体系结构和交叉编译工具。
ARCH?
=arm
CROSS_COMPILE?
=arm-linux-
然后执行makezImage编译内核。
编译结束后,会在arch/arm/boot目录下生成linux内核映象文件:
zImage
5busybox的移植
Busybox是一个轻型的linux命令工具集,在此使用的是busybox-1.13.3版本。
用户可以从其官方网站下载最新版本()。
在工作目录/opt/FriendlyARM/mini2440中执行:
#cd/opt/FriendlyARM/mini2440
#tarxvzf/tmp/linux/busybox-1.13.3-mini2440.tgz
将创建busybox-1.13.3目录,内含相应版本的全部源代码。
下载并编译busybox生成文件系统所需要的应用程序,最新的busybox是busybox-1.18.5.tar.bz2。
1)解压busybox源码,修改Makefile使之编译成ARM平台:
#tar-jxvfbusybox-1.18.5.tar.bz2
#cdbusybox-1.18.5
#viMakefile
大概164行改成CROSS_COMPILE=arm-linux-,190行改成ARCH=arm
2)配置busybox选项,下面只列出了要注意的地方,没有列出的默认即可
#makemenuconfig
BusyboxSettings--->
GeneralConfiguration--->
Bufferallocationpolicy(AllocatewithMalloc)--->
[*]Showverboseappletusagemessages
[*]Storeappletusagemessagesincompressedform
[*]Support--install[-s]toinstallappletlinksatruntime
[*]Enablelocalesupport(systemneedslocaleforthistowork)
[*]Supportfor--long-options
[*]UsethedevptsfilesystemforUnix98PTYs
[*]Supportwritingpidfiles
[*]RuntimeSUID/SGIDconfigurationvia/etc/busybox.conf
[*]Suppresswarningmessageif/etc/busybox.confisnotreadable
(/proc/self/exe)PathtoBusyBoxexecutable
BuildOptions--->
[*]BuildBusyBoxasastaticbinary(nosharedlibs)
[*]BuildwithLargeFileSupport(foraccessingfiles>2GB)
InstallationOptions--->
[]Don'tuse/usr
Appletslinks(assoft-links)--->
(./_install)BusyBoxinstallationprefix
BusyboxLibraryTuning--->
(6)Minimumpasswordlength
(2)MD5:
TradeBytesforSpeed
[*]Faster/procscanningcode(100bytes)
[*]Commandlineediting
(1024)Maximumlengthofinput
[*]vi-stylelineeditingcommands
(15)Historysize
[*]Historysaving
[*]Tabcompletion
[*]Fancyshellprompts
(4)Copybuffersize,inkilobytes
[*]Useioctlnamesratherthanhexvaluesinerrormessages
[*]SupportinfinibandHW
LinuxModuleUtilities--->
(/lib/modules)Defaultdirectorycontainingmodules
(modules.dep)Defaultnameofmodules.dep
[*]insmod
[*]rmmod
[*]lsmod
[*]modprobe
---Optionscommontomultiplemodutils
3)编译和安装busybox,安装完后会在busybox-1.18.5/_install/目录下生成:
bin、linuxrc、sbin、usr
#make
#makeinstall
6制作yaffs2文件系统
其步骤如下:
1.新建一个目录root-mini2440,并且在该目录下创建文件系统所需要的其他目录。
把busybox-1.18.5/_install/目录下生成:
bin、linuxrc、sbin、usr复制到root-mini2440目录。
#mkdirroot-mini2440
#cdroot-mini2440/
#mkdirdevetchomelibmntoptproctmpvarwww
#cp-rfbusybox-1.18.5/_install/*root-mini2440/
2.向各目录中添加文件系统所需要的目录或文件,没有提到的就不用添加。
"dev"目录,创建两个设备文件:
#mknodconsolec51
#mknodnullc13
"etc"目录,创建各种配置文件并向里面添加内容,没有列出的就不用添加:
boa/boa.conf:
boaWEB服务器配置文件,暂时为空。
可以不加。
group:
系统用户组配置文件,内容如下:
root:
*:
0:
daemon:
*:
1:
bin:
*:
2:
sys:
*:
3:
adm:
*:
4:
tty:
*:
5:
disk:
*:
6:
lp:
*:
7:
lp
mail:
*:
8:
news:
*:
9:
uucp:
*:
10:
proxy:
*:
13:
kmem:
*:
15:
dialout:
*:
20:
fax:
*:
21:
voice:
*:
22:
cdrom:
*:
24:
floppy:
*:
25:
tape:
*:
26:
sudo:
*:
27:
audio:
*:
29:
ppp:
x:
99:
500:
x:
500:
plg
501:
x:
501:
fa
inittab:
系统init进程配置文件,内容如下:
#/etc/inittab
:
:
sysinit:
/etc/init.d/rcS
console:
:
askfirst:
-/bin/sh
:
:
ctrlaltdel:
/sbin/reboot
:
:
shutdown:
/bin/umount-a–r
mime.types:
暂时为空。
可以不加。
passwd:
系统密码文件,内容如下:
root:
:
0:
0:
root:
/:
/bin/sh
ftp:
:
14:
50:
FTPUser:
/var/ftp:
bin:
*:
1:
1:
bin:
/bin:
daemon:
*:
2:
2:
daemon:
/sbin:
nobody:
*:
99:
99:
Nobody:
/:
sky:
:
502:
502:
LinuxUser,,,:
/home/mxh2440:
/bin/sh
rc.d/init.d/httpd:
可以不加。
内容如下:
#!
/bin/sh
base=boa
#Seehowwewerecalled.
case"$1"in
start)
/usr/sbin/$base
;;
stop)
pid=`/bin/pidof$base`
if[-n"$pid"];then
kill-9$pid
fi
;;
esac
exit0
sysconfig/HOSTNAME:
主机名称文件,内容如下:
MXH2440
fstab:
系统挂载文件系统列表,内容如下:
#devicemount-pointtypeoptionsdumpfsckorder
none/procprocdefaults00
none/dev/ptsdevptsmode=062200
tmpfs/dev/shmtmpfsdefaults00
init.d/rcS:
系统启动加载项,内容如下:
#!
/bin/sh
PATH=/sbin:
/bin:
/usr/sbin:
/usr/bin
r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 作业