嵌入式系统实验指导书n_第1页
嵌入式系统实验指导书n_第2页
嵌入式系统实验指导书n_第3页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、专业:计算机班级:12 级(1,2)、11 ( 3)指导教师:张文哲实验一 linux常用命令及vi的使用实验目的:掌握常用Linux命令的使用,掌握vi的使用。实验原理:Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、 文件存取、目录操作、进程管理、文件权限设定等。所以,在 Linux系统上工 作离不开使用系统提供的命令。要想真正理解 Linux系统,就必须从Linux命 令学起,通过基础的命令学习可以进一步理解 Linux系统。不同Linux发行版的命令数量不一样,但 Linux发行版本最少的命令也有 200多个。这里把比较重要和使用频率最多的命令,按照它们在系统中

2、的作用 分成下面六个部分一一介绍。安装和登录命令:log in、shutdow n 、halt、reboot、in stall、mount、 umount、chsh、exit、last ;文件处理命令:file、mkdir、grep、dd、find、mv、Is、diff、cat、In ; 系统管理相关命令:df、top、free、quota、at、Ip、adduser、groupadd、 kill、cron tab ; 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、 rcp、fin ger、mail、 n slookup ; 系

3、统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、 sudo ps、who ;其它命令: tar、un zip、gun zip、unarj、mtools、man、unen dcode 、 uudecode 。Vi是linux下最常用的文本编辑工具,经常用于源代码的编写。 实验内容一:练习常用命令的使用首先新建一个终端然后练习电子文档中红色命令。(一)logi n1作用login的作用是登录系统,它的使用权限是所有用户。2格式log in n ame p h 主机名称3. 主要参数p:通知login保持现在的环境参数。h:用来向远程登录的之间传输用

4、户名。J/如果选择用命令行模式登录Lin ux的话,那么看到的第一个Linux命令就是login :。一般界面是这样的:Man ddrake Li nux release 9.1(Bamboo) for i586 0.13mdk on i686 / tty1'/localhost logi n:rootpassword:上面代码中,第一行是 Linux发行版本号,第二行是内核版本号和登录的虚拟 控制台,我们在第三行输入登录名,按“ Enter键在Password后输入账户密码, 即可登录系统。出于安全考虑,输入账户密码时字符不会在屏幕上回显,光标也 不移动。登录后会看到下面这个界面(以

5、超级用户为例):rootlocalhost root#last login:Tue ,Nov 18 10:00:55 on vc/1| 上面显示的是登录星期、月、日、时间和使用的虚拟控制台。4. 应用技巧Linux是一个真正的多用户操作系统,可以同时接受多个用户登录,还允许一个 用户进行多次登录。这是因为 Linux和许多版本的Unix 样,提 供了虚拟控 制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相 连的监视器和键盘)进行多次登录。每个虚拟控制台可以看作是一个独立的工作站,工作台之间可以切换。虚拟控制台的切换可以通过按下Alt键和一个功能键来实现,通常使用F1-F6

6、 。例如,用户登录后,按一下 “Alt+F2 ”键,用户就可以看到上面出现的 “login: 提示符,说明用户看到了第二个虚拟控制台。 然后只需按 “Alt+ F1键,就可以 回到第一个虚拟控制台。一个新安装的 Linux系统允许用户使用 “ Alt+F1 '到“ Alt+F6键来访问前六个虚拟控制台。虚拟控制台最有用的是,当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作,关闭这个程序。(二) mount1作用mount命令的作用是加载文件系统,其使用权限是超级用户或/etc/fstab 中允许的使用者。2格式mount a fv t vfstype n rw F devic

7、e dir3. 主要参数h :显示辅助信息。v :显示信息,通常和f用来除错。a:将/etc/fstab中定义的所有文件系统挂上。F:这个命令通常和a 一起使用,它会为每一个 mount的动作产生一个行 程负责执行。在系统需要挂上大量 NFS文件系统时可以加快加载的速度。f:通常用于除错。它会使mount不执行实际挂上的动作,而是模拟整个挂上 的过程,通常会和v起使用。t vfstype :显示被加载文件系统的类型。n: 般而言,mount挂上后会在/etc/mtab中写入一笔资料,在系统中没有可写入文件系统的情况下,可以用这个选项取消这个动作。4. 应用技巧在Linux和Unix系统上,所有

8、文件都是作为一个大型树(以/为根)的一部分 访问的。要访问CD-ROM上的文件,需要将CD-ROM设备挂装在文件树中的 某个挂装点。如果发行版安装了自动挂装包,那么这个步骤可自动进行。在Linux 中,如果要使用硬盘、光驱等储存设备,就得先将它加载,当储存设备挂上了之 后,就可以把它当成一个目录来访问。挂上一个设备使用mount命令。在使用mount这个指令时,至少要先知道下列三种信息:要加载对象 的文件系统类型、 要加载对象的设备名称及要将设备加载到哪个目录下。(1)Linux可以识别的文件系统Windows 95/98常用的 FAT 32 文件系统:vfat ;ntfs ;Win NT/2

9、000的文件系统:ext3 ; iso9660OS/2用的文件系统:hpfs ;Linux用的文件系统:ext2、CD-ROM光盘用的文件系统:虽然vfat是指FAT 32系统,但事实上它也兼容FAT 16的文件系统类型。(2 )确定设备的名称在Linux中,设备名称通常都存在/dev里。这些设备名称的命名都是有规则的, 可以用推理”的方式把设备名称找出来。例如,/dev /hda1这个IDE设备, hd 是 Hard Disk( 硬盘)的,sd 是 SCSI Device ,fd 是 Floppy Device( 或是 Floppy Disk?) 。a代表第一个设备,通常IDE接口可以接上4

10、个IDE设备(比 如4块硬盘)。所以要识别IDE硬盘的方法分别就是hda、hdb、hdc、hdd。 hda1中的“ 1代表hda的第一个硬盘分区 (partition),hda2代表hda的第二主分区,第一个逻辑分区从hda5开始,依此类推。此外,可以直接检查/var/log /messages 文件,在该文件中可以找到计算机开机后系统已辨认出来 的设备代号。(3)查找挂接点在决定将设备挂接之前,先要查看一下计算机是不是有个 /mnt的空目录,该目 录就是专门用来当作挂载点 (Mount Point)的目录。建议在/mnt里建几个 /mnt/cdrom 、/mnt/floppy 、/mnt/m

11、o 等目录,当作目录的专用挂载点。举 例而言,如要挂载下列5个设备,其执行指令可能如下(假设都是Linux的ext2 系统,如果是 Windows XX 请将ext2改成vfat):=>mountcdrom =>mountSCSI cdrom =>mountSCSI cdr =>mount不过目前大多数较新的Man drake Linux 等)都可以自动挂装文件系统,但 Red Hat Linux 除外 其他命令参照电子文档练习。实验内容二:常用软件的安装尝试在Redhat中安装一些软件,例如linux版的QQ安装(deb或tar .gz )。 请至飞秋共享自行拷贝。实

12、验内容三:vi的使用软盘 =>mount t ext2 /dev/fd0 /mn t/floppyt iso9660 /dev/hdc /mn t/cdromt iso9660 /dev/sdb /mn t/scdromt iso9660 /dev/sdc /mn t/scdrLinux 发行版本(包括红旗 Linux、中软Linux、使用vi编辑器建立、编辑、显示以及加工处理文本文件a.进入和退出vi<1>进入vi在系统提示符($)下输入命令vi和想要编辑(建立)的文件名(如example), 便可进入vi。<2>退出vi在命令方式下可有几种方法退出vi编辑器:

13、:wq把编辑缓冲区的内容写到你编辑的文件中,退出编辑器,回到Linux shell下。:ZZ仅当作过修改时才将缓冲区内容写到文件上。:x与:ZZ相同。:q!强行退出vi。感叹号(!)告诉vi,无条件退出,丢弃缓冲区内容。这样, 先前对该文件所做的修改或输入都被抛弃。b.新建文件<1>在 Linux提示符$之后,输入命令:vi myfile ,然后按Enter键。<2>输入插入命令i (屏幕上看不到字符i )。<3>然后,输入以下文本行:To the only woman tht I,For mang year you have bee n my wife&l

14、t;4>发现这两行有错,进行改正:按Esc键,从插入方式回到命令方式。按光标上移键,使光标移到第一行。按光标左移键,使光标移到“ tht ”的第二个“ t ”处。输入i (这是插入命令),然后输入 a。该行变成如下形式:To the only woma n that I,按光标右移键,使光标移到“ I”上。我们想在“ I ”之后输入一个空格和单词“love ”。为此,输入附加命令“ a”。 结果屏幕显示为:To the only woma n that aI ,这是怎麽回事儿?原来是:我们先前使用了插入命令i,至今并未用Esc 键返回命令方式。所以,输入的所有字符都作为输入文本予以显示。

15、<5>按Esc键,返回命令方式。利用x命令删除错误字符。然后,进入插入方式,输入正确字符。<6>最后输入如下所示的文本:To the only woman that I love,For many year you have bee n mywwifeI live you wich my lifeand could not have picked much better.<7>将你编辑的文本文件存盘。(利用 :wq命令,或者:x命令)<8>重新进入vi编辑程序,编辑上面的文件。(如:$ vi myfile )<9>在屏幕上见到myfi

16、le文件的内容。在屏幕底边一行显示出该文件的名称、行数和字符个数:“ myfile ” 4 lines , 130 characters它仍然有错,需进一步修改。<10>将光标移到第二行的year的r处。输入a命令,添加字符s。<11>按Esc,回到命令方式。输入命令18 Space(键盘输入“ 18”,屏幕 上不会显示出来,接着再按一下空格,光标便移动了 ),光标移至何处?(提示: 光标右移18个字符位置。)<12>利用取代命令r将mywwife改为my wife。<13>将光标移至第三行。输入新行命令0(大写字母),屏幕上有什麽变化?(注 意

17、:输入命令时,vi应处于命令模式)(提示:光标移至上一行(新加空行) 的开头。)<14>俞入新行的内容:We've bee n through much together此时,vi处于哪种工作模式?(提示:插入模式)<15Esc,回到命令方式。将光标移到第四行的live的i字母处。利用替 换命令s将i改为o。<16>在第四行的you之后添加单词dearly。将wich改为with。<17>修改后的文本是以下内容:To the only woman that I love,For many years you have bee n my wife

18、We've bee n through much togetherI love you dearly with my lifeand could not have picked much better.将该文件存盘,退出vi。<18>重新编辑该文件。并将光标移到最后一行的have的v字母处,使用d$命令将v至行尾的字符都删除。<19>现在想恢复17步的原状,怎麽办?(提示:使用复原命令u)<20>使用dd命令删除第一行;将光标移至through的u字母处,使用C (大写 字母)命令进行修改,随便乱输一串字符。将光标移到下一行的开头,执行5x命令,结果

19、是什么?(提示:删掉从光标处开始的5个字符)然后执行重复命令(.),结果是什么?(提示:再删掉从光标处开始的5个字符)<21>屏幕内容乱了 !现在想恢复17步的原状,怎麽办?(提示:不写盘,强行退 出vi)能用u或U命令恢复屏幕原状吗?(提示:可以)实验结果及讨论:1、比较Linux和Windows的文件目录结构有哪些相同和异同。2、Linux的可执行文件通常放在哪个目录中?写出该目录的路径。3、谈谈你今天上实验课的收获,存在的问题或疑问。如果有实验内容以外的发现也可谈谈。(字数不限)注意:写实验报告时,实验步骤不一定要全抄,可选重要的。但实验目的、实 验内容以及实验步骤中提出的问

20、题及答案一定要写。实验二嵌入式开发环境及makefile实验目的:掌握嵌入式开发环境的搭建及 makefile文件的编写。实验原理:-Z"绝大多数的Linux软件开发都是本机(HOST )开发、调试, 本机运行的 方式。这种方式通常不适合于嵌入式系统的软件开发,因为对于嵌入式系统的开 发,没有足够的资源在本机(即板子上系统)运行开发工具和调试工具。通常的 嵌入式系统的软件开发采用一种交叉编译调试的方式。交叉编译调试环境建立在 宿主机(即一台PC机)上,对应的开发板叫做目标板。运行 Linux的PC (宿 主机)开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代 码(这种

21、可执行代码并不能在宿主机上执行,而只能在目标板上执行),然后把可执行文件下载到目标机上运行。makefile文件描述了整个工程的编译、连接等规则。它指引make命令按照对应的要求完成整个工程的编译、连接,生成可执行文件。实验内容一:交叉编译环境安装1、arm-l inu x-gcc的安装(1)解压(该步骤已完成,到对应位置查看该文件夹是否存在)复制9 至U home解压过程需要一段时间,解压后的文件形成home/opt/下的文件夹,进入home/opt/ 文件夹,将文件夹拷贝到/opt/下现在交叉编译程序集都在/opt/4.5.1/bin下面了(2)修改环境变量,把交叉编译器的路径加入到PAT

22、H。修改/etc/profile文件在最后加上:export PATH=$PATH:/opt/4.5.1/binexport PATH(如果不能编辑,先修改相关文件的权限使用chmod命令。)保存退出(以上操作用到了那些命令?)(3)立即使新的环境变量生效,不用重启电脑: 对应方法:# source /etc/profile(有何输出?)(4 )检查是否将路径加入到PATH :# echo $PATH/显示的内容中有/opt/4.5.1/bin,说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。 7(5)测试是否安装成功:首先查看 bin目录下可执行文件,某些版本中或许不是

23、arm-linux-gcc运行 arm-linux-gcc(查看输出结果)实验内容二:MINICOM 的配置(如虚拟机无串口,添加一个新串口为物理串 口)输入 minicom -s进入 minicom 酉己置界面,选择Serial port setup,进入端口设置界面,修改以下几个值:ASerial DeviceEBPS/par/bits:/dev/ttySO(端口号使用串口 1):/115200 8N1(波特率)F,E硬件流软件流都改为NO,若要使用PC机的串口 2来连接板子,则将A 选项中的ttyS0 改为ttyS1。选好后按Esc键,并选择Save setup asdf1 保存配置。配

24、置完成后用连接PC机跟开发板的串口线,启动开发板,输入minicom 即 可出现启动信息。(我们用的机器已经配好,大家注意查看上面的配置),下面涉及到开发板的操作都是在 mi nicom 中进行的1、编vi的修改虚拟机、开发板ip地址使它们与主机在同一网段实验内容三:配置NFS服务器件 主 机:,开发板一般是etc 下 IP地址信息,其他部分辑 网 卡 配 置 文/etc/syscon fig/network-scripts/ifcfg-eth0 eth0-sett ings文件。注意:开发板只需要修改不要乱修改! !!应用程序ttB鋼文件 编辑© 查看祐 遞躺 标签 釉助®

25、;H Mvucod Micro Devices AND T9c970 PCnet32 LANIZ DEVLCE=ethOi cHWADDR=0a:0c:282:44:800M3OOT=yes;IherneLMEI虬H X2轩23亍芒0TFDDR-192 J . LOOLSLRCTLnoIFXr6IXJT=nn虚拟机ifcfg-eth0 文件示例/2、配置虚拟机网卡为主机物理网卡。编辑-> 虚拟网络编辑器,这个时候出现一个选择框,选中VMnet0,在下面的vmnet0的桥接模式中,桥接到下拉框中选择物理网卡名称就可以。 然后在虚拟机-设置-网络适配器中选桥接模式,复制物理网络连接状态。3、

26、 重启虚拟机网络服务service network restart、重启开发板。4、ping测试连通性。5、防火墙设置1)永久性关闭lokkit -disabled2)即时生效,重启后失效service 方式开启: service iptables start 关闭: service iptables stop iptables 方式查看防火墙状态:/etc/init.d/iptables status暂时关闭防火墙:/etc/i nit.d/iptables stop重启 iptables:/etc/init.d/iptables restart使用任意上面方法关闭防火墙6、确认并安装nfs

27、服务依赖软件包一般nfs服务器要提供服务,必须启动inet,nfs,mount ,portmap(RHEL5.5及以下版本)或rpcbind ( RHEL6以上版本)这些守护进程并 保持在后台运行。在使用nfs共享文件之前,我们应该首先确认有没有安装这些应用程序,如 果没有,则从安装盘中找到它们并安装。下面显示我们在安装系统时已经显 示了安装了 nfs服务相关软件。quowerpm -qa | | 以上程序注意前面的名称应一致,后面的版本号则可能不同。如没有对应文件可加载rhel光盘查找对应安装包,进行安装。rpm -vh *.rpm7、修改nfs的配置文件修改nfs的配置文件/etc/exp

28、orts,设置需要共享的文件夹访问路径地址根据自己主机及开发板情况设置)这里的访问IP设置的是。NFS服务的配置文件为/etc/exports ,这个文件是 NFS的主要配置文件,不过系统并没 有默认值,所以这个文件不一定会存在,可能要使用vim手动建立,然后在文件里面写入配置内容。/etc/exports文件内容格式:<输出目录 > 客户端1选项(访问权限,用户映射,其他)客户端2选项(访 问权限,用户映射,其他)a. 输出目录:输出目录是指NFS系统中需要共享给客户机使用的目录;b. 客户端:客户端是指网络中可以访问这个NFS输出目录的计算机客户端常用的指定方式? 指定ip地址

29、的主机:?指定子网中的所有主机:?指定域名的主机: ?指定域中的所有主机: ?所有主机:*c. 选项:选项用来设置输出目录的访问权限、用户映射等。NFS主要有3类选项:访问权限选项?设置输出目录只读:ro?设置输出目录读写:rw用户映射选项? all_squash :将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsn obody );?no_all_squash:与 all_squash 取反(默认设置);? root_squash :将root用户及所属组都映射为匿名用户或用户组(默认设置);?no_root_squash:与 rootsquash 取反;? anon uid

30、=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx );? anon gid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx );其它选项secure :限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);in secure :允许客户端从大于1024的tcp/ip 端口连接服务器;sync :将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;async :将数据先保存在内存缓冲区中,必要时才写入磁盘;9、测试nfs_ ii ji b j 丿Li ui j_

31、j v i j i i 7 i j :r-n r-nroot<&FriendlyARM /# mount -o nolock 192,10.1< lS8:/tftp /mnt/nfs/厂4PL 二"1厂工是服务器地址及目录,/mnt/nfs是开发板目录,以上参数根据自己主机地址及目录修改客户机:roorWr iendlyAFtM Is ; mnr/nfs/1i 50.1micro240fai11mi cro244Oroot&Fr i endlyARM 门#.服务器:rootlocalhost -# Is /tftp/roQtlocalhost实验内容四:m

32、akefile 的编写关于makefile的编写课堂上已进行了详细讲解,此处不在赘述。请编写以下源程序,并编 写makefile完成编译、连接及可执行文件和.0文件的删除工作。主程序:#in elude <stdio.h>int add(i nt a, int b);int main( void)/ int c;c = add(1,2);prin tf("c = %dn", c);return 0;cal.c文件#in clude <stdio.h>int add(i nt a, int b)return a + b;实验三进程相关应用程序设计实验目

33、的:掌握常用进程命令的使用并能够进行相关程序设计。实验原理:进程操作是linux下c编程的常用操作,也是一个难点,常用函数只 要有如下几个:execl (执行文件)相关函数 fork ,execle,execlp, execv,execve,execvp表头文件#i ncludevu nistd.h>定义函数int execl(c onst char * path,c onst char * arg,.);函数说明 execl()用来执行参数path字符串所代表的文件路径,接下来 的参数代表执行该文件时传递过去的 argv(O)、argv1 ,最后一个参数必 须用空指针(NULL)作结束

34、。返回值如果执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于errno中。范例#in clude< uni std.h>mai n()execl( “/bin/ls ” , ” ls ” , ” -al ” , ” /etc/passwd ” ,(char * )0);执行 /* 执行/bin/ls -al /etc/passwd */-rw-r-r- 1 root root 705 Sep 3 13 :52 /etc/passwdexeclp (从PATH环境变量中查找文件并执行)相关函数 fork ,execl, execle,execv, execve, exec

35、vp表头文件#i ncludevu nistd.h>定义函数int execlp(const char * file,const char * arg,);函数说明 execlp()会从PATH环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件,然后将第二个以后的参数当做该文件的 argv0、argv1,最后一个参数必须用空指针(NULL)作结束。返回值如果执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于errno 中。错误代码 参考execve()。范例 /* 执行 ls -al /etc/passwd execlp() 会依 PATH变量中的 /bin

36、找 到/bin/ls */#in cludev un istd.h>mai n()execlp( “ ls ” , ” ls ” , ” -al ” , ” /etc/passwd ” ,(char *)0);执行 -rw-r-r- 1 root root 705 Sep 3 13 :52 /etc/passwdexecvp (执行文件)相关函数 fork , execl , execle , execlp , execv, execve表头文件#i ncludevu nistd.h>定义函数 int execvp(c onst char *file ,char * const a

37、rgv );函数说明 execvp()会从PATH环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件,然后将第二个参数argv传给该欲执行的文件。返回值如果执行成功则函数不会返回,执行失败则直接返回 -1,失败原因存于errno中。错误代码 请参考execve ()。范例 /*请与execlp ()范例对照*/#in clude< un istd.h>mai n()char * argv =“ ls ” , ” -al ” , ” /etc/passwd ” ,0;execvp( “ls ” ,argv);执行 -rw-r-r- 1 root root 705 S

38、ep 3 13 :52 /etc/passwdexit (正常结束进程)相关函数 _exit , atexit ,on_exit表头文件#i nclude<stdlib.h>定义函数 void exit(i nt status);函数说明 exit()用来正常终结目前进程的执行,并把参数status返回给 父进程,而进程所有的缓冲区数据会自动写回并关闭未关闭的文件。返回值范例 参考wait ()vfork (建立一个新的进程)相关函数 wait ,execve表头文件#i ncludevu nistd.h>定义函数 pid_t vfork(void);函数说明 vfork()会产生一个新的子进程,其子进程会复制父进程的数据 与堆栈空间,并继承父进程的用户代码,组代码,环境变量、已打开的文件代码、 工作目录和 资源限制等。Linux使用copy-on-write(COW)技术,只有当其中一 进程试图修改欲复制的空间时才会做真正的复制动作,由于这些继承的信息是复制而来,并非指相 同的内存空间,因此子进程对这些变量的修改和父进程并不 会

温馨提示

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

评论

0/150

提交评论