当前位置:文档之家› 嵌入式Linux实验三

嵌入式Linux实验三

嵌入式Linux实验三
嵌入式Linux实验三

实验三:文件、目录及其操作命令

1实验目的

通过实验掌握如Linux操作系统的基本操作

2实验设备

硬件:PC机一台

软件:Windows98/XP/2000系统,VMware Workstation6.0,Red Hat Linux

3实验内容

(1)文件的复制、删除和移动命令:cp, rm, mv

(2)Linux文件与目录

(3)目录命令:mkdir, rmdir, cd, pwd, ls

(4)链接文件与ln

(5)文件与目录的权限

4实验预习要求

仔细阅读参考书:

【1】鸟哥的Linux私房菜基础学习篇第三版,人民邮电出版社,鸟哥

【2】嵌入式Linux系统开发标准教程,人民邮电出版社,华清远见嵌入式培训中心

【3】嵌入式Linux应用程序开发标准教程,人民邮电出版社,华清远见嵌入式培训中心关于Linux文件与目录的部分。

5实验步骤

(1)熟悉Red Hat Enterprise Linux系统。

(2)根据实验重点内容测试。

6实验重点:

(1)文件的复制、删除与移动:cp, rm, mv

要复制文件,请使用cp (copy) 这个命令即可。不过,cp 这个命令的用途不仅仅于此。除了单纯的复制之外,还可以建立连结文件(就是快捷方式),比对两文件的新旧而予以更新,以及复制整个目录等等的功能。至于移动目录与文件,则使用mv (move),这个命令也可以直接拿来作重命名(rename) 的操作!至于(移除)删除文件,使用rm (remove) 这个命令。

cp (复制文件或目录)

[root@localhost ~]# cp [-adfilprsu] 源文件(source) 目标文件(destination)

[root@localhost ~]# cp [options] source1 source2 source3 .... directory

选项与参数:

-a:相当于-pdr 的意思,至于pdr 请参考下列说明;(常用)

-d:若源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身;

-f :为强制(force)的意思,若目标文件已经存在则无法开启,则移除后再尝试一次;

-i :若目标文件(destination)已经存在时,在覆盖时会先询问操作的进行(常用)

-l :进行硬式连结(hard link)的连结文件建立,而非复制文件本身;

-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);

-r :递归持续复制,用于目录的复制行为;(常用)

-s :复制成为符号链接文件(symbolic link),亦即快捷方式文件;

-u :若destination 比source 旧,才更新destination !

最后需要注意的,如果源文件有两个以上,则最后一个目标文件一定要是目录才行!

范例一:用root身份,将主目录下的.bashrc 复制到/temp 下,并更名为bashrc (~代表目前用户身份所在的主文件夹)

[root@localhost ~]# cp ~/.bashrc /temp/bashrc

[root@localhost ~]# cp -i ~/.bashrc /temp/bashrc

cp: overwrite `/temp/bashrc'? n <==n不覆盖,y为覆盖

说明:重复作两次操作,由于/temp 下已经存在bashrc 了,加上-i 选项后,则在覆盖前会询问使用者是否确定!可以按下n 或者y 来二次确认。

范例二:将主目录下的.bashrc和.bash_history 复制到/temp下。

[root@localhost ~]cp ~/.bashrc ~/.bash_history /temp

可以将多个数据一次复制到同一目录中去,最后面一定是目录。

范例三:复制/etc/ 这个目录下的所有内容到/tmp 下

[root@www tmp]# cp /etc/ /tmp

cp: omitting directory `/etc' <== 如果是目录则不能直接复制,要加上-r 的选项

[root@www tmp]# cp -r /etc/ /tmp

-r 是可以复制目录,但是,文件与目录的权限可能会被改变。所以,也可以利用cp –a /etc /tmp 来下执行!尤其是在备份的情况下!

rm (移除文件或目录)

[root@localhost ~]# rm [-fir] 文件或目录

选项与参数:

-f :就是force 的意思,忽略不存在的文件,不会出现警告信息;

-i :互动模式,在删除前会询问使用者是否操作

-r :递归删除!最常用在目录的删除了!这是非常危险的选项!!!

范例一:将刚刚在cp 的范例中建立的bashrc 删除掉!

[root@localhost ~]# cd /temp

[root@localhost tmp]# rm -i bashrc

rm: remove regular file `bashrc'? y

如果加上-i 的选项就会主动询问,避免删除到错误的文件!

范例二:通过通配符*的帮助,将/temp下开头为bashrc的文件名通通删除:

[root@localhost tmp]# rm -i bashrc*

注意星号,代表的是0 到无穷多个任意字符!

范例三:将cp 范例中所建立的/temp/etc/ 这个目录删除掉!

[root@localhost tmp]# rmdir /temp/etc

rmdir: etc: Directory not empty <== 删不掉!因为这不是空的目录!

[root@localhost tmp]# rm -r /temp/etc

rm: descend into directory `/temp/etc'? y ....(中间省略)....

因为身份是root ,预先已经加入了-i 的选项,所以要一直按y 才会删除!

如果不想要继续按y ,可以按下[ctrl]-c 来结束rm 的工作。这是一种保护的操作,如果确定要删除掉此目录而不要询问,可以这样做:

[root@localhost tmp]# \rm -r /temp/etc

在命令前加上反斜杠,可以忽略掉alias 的指定的参数!

对于删除命令(remove),要注意的是,通常在Linux系统下,为了怕文件被误删除,所以很多distributions 都已经默认加入-i 这个选项!而如果要连目录下的东西都一起删掉的话,例如子目录里面还有子目录时,那就要使用-r 这个选项了!不过,使用rm -r 这个命令之前,请千万注意,因为该目录或文件肯定会被root 删掉!因为系统不会再次询问你是否要删掉!所以那是个超级严重的命令!

mv (移动文件与目录,或更名)

[root@localhost ~]# mv [-fiu] source destination

[root@localhost ~]# mv [options] source1 source2 source3 .... directory

选项与参数:

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i :若目标文件(destination) 已经存在时,就会询问是否覆盖!

-u :若目标文件已经存在,且source 比较新,才会更新(update)

范例一:复制一文件,建立一目录,将文件移动到目录中

[root@localhost ~]# cd /temp

[root@localhost tmp]# cp ~/.bashrc bashrc

[root@localhost tmp]# mkdir mvtest

[root@localhost tmp]# mv bashrc mvtest

将某个文件移动到某个目录去,就是这样做!

范例二:将刚刚的目录名称更名为mvtest2

[root@localhost tmp]# mv mvtest mvtest2 <== 这样就更名了!

范例三:再建立两个文件,再全部移动到/temp/mvtest2 当中

[root@localhost tmp]# cp ~/.bashrc bashrc1

[root@localhost tmp]# cp ~/.bashrc bashrc2

[root@localhost tmp]# mv bashrc1 bashrc2 mvtest2

注意,如果有多个来源文件或目录,则最后一个目标文件一定是目录!这里将所有的数据移动到该目录!

(2)Linux文件与目录

在Linux系统中,所有的系统账号的相关信息,都是记录在/etc/passwd这个文件内。个人的密码则是记录在/etc/shadow这个文件下。此外,Linux所有的群组名称都纪录在/etc/group 内!这三个文件是Linux系统里面账号、密码、群组信息的集中地不能随便删除这三个文件。

Linux 文件权限概念

文件的权限针对“使用者”与“群组”来设定。尤其是当屏幕前面出现了“Permission deny”的时候,肯定是权限设定错误。

Linux文件的属性

在以root的身份登入Linux之后,执行ls -al

第一栏代表这个文件的类型与权限(permission):这一栏其实共有十个字符:

第一个字符代表这个文件是“目录、文件或连结文件”:

当为[ d ]则是目录,例如上表文件名为”.gconf”的那一行;

当为[ - ]则是普通文件,例如上表文件名为”install.log”那一行;

若是[ l ]则表示为连结文件(link file);

若是[ b ]则表示为设备文件里面的可供储存的接口设备(可随机存取装置);

若是[ c ]则表示为设备文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为“rwx”的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]。

第一组为“文件拥有者的权限”,

第二组为“同群组的权限”;

第三组为“其它非本群组的权限”。

例题:

若有一个文件的类型与权限数据为”-rwxr-xr--”,请说明其意义为何?

答:

先将整个类型与权限数据分开查阅,并将十个字符整理成为如下所示:

[-] [rwx] [r-x] [r--]

1 234 567 890

1 为:代表这个文件名为目录或文件,本例中为文件(-);

234为:拥有者的权限,本例中为可读、可写、可执行(rwx);

567为:同群组使用者权限,本例中为可读可执行(rx);

890为:其它使用者权限,本例中为可读(r)

第二栏表示有多少文件名连结到此节点(i-node):

每个文件都会将他的权限与属性记录到文件系统的i-node中,目录树是使用文件名来记录,因此每个文件名就会连结到一个i-node。这个属性记录的,就是有多少不同的文件名连结到相同的一个i-node号码。

第三栏表示这个文件(或目录)的“拥有者账号”

第四栏表示这个文件的所属群组。

在Linux系统下,账号可能会附属于一个或多个的群组中。

第五栏为这个文件的容量大小,单位为bytes;

第六栏为这个文件的建文件日期或者是最近的修改日期:

这一栏的内容分别为日期(月/日)及时间。如果这个文件被修改的时间距离现在太久了,那么时间部分会仅显示年份而已。如果想要显示完整的时间格式,可以利用ls的选项,亦即:”ls -l --full-time”就能够显示出完整的时间格式了!包括年、月、日、时间。

第七栏为这个文件的文件名

这个字段就是文件名了。比较特殊的是:如果文件名之前多一个“. ”,则代表这个文件为“隐藏文件”,例如上表中的.gconf那一行,该文件就是隐藏文件。可以使用”ls”及”ls -a”这两个命令来体会什么是隐藏文件!

例题:

假设test1, test2, test3同属于testgroup这个群组,如果有下面的两个文件,请说明两个文件的拥有者与其相关的权限为何?

-rw-r--r-- 1 root root 238 Jun 18 17:22 test.txt

-rwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 hbue

答:

文件test.txt的拥有者为root,所属群组为root。至于权限方面则只有root这个账号可以存取此文件,其它人则仅能读此文件;

另一个文件hbue的拥有者为test1,而所属群组为testgroup。其中:

test1 可以针对此文件具有可读可写可执行的权力;而同群组的test2, test3两个人与test1同样是testgroup的群组账号,则仅可读可执行但不能写(亦即不能修改);至于非testgoup这一个群组的人则仅可以读,不能写也不能执行!

例题:

如果我的目录为如下的属性,请问testgroup这个群组的成员与其它人(others)是否可以进入本目录?

drwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 groups

答:文件拥有者test1[rwx]可以在本目录中进行任何工作;

而testgroup这个群组[r-x]的账号,例如test2, test3亦可以进入本目录进行工作,但是不能在本目录下进行写入的动作;

至于other的权限中[r--]虽然有r ,但是由于没有x的权限,因此others的使用者,并不能进入此目录!

(3)如何改变文件属性与权限

常用于群组、拥有者、各种身份的权限之修改的命令,如下所示:

chgrp :改变文件所属群组

chown :改变文件拥有者

chmod :改变文件的权限, SUID, SGID, SBIT等等的特性

改变所属群组:chgrp

改变一个文件的群组的命令是chgrp (change group)的缩写!要被改变的群组名称必须要在

假设你是以root的身份登入Linux系统的,那么在你的家目录内有一个install.log的文件,如何将该文件的群组改变一下呢?假设你已经知道在/etc/group里面已经存在一个名为users 的群组,但是testing这个群组名字就不存在/etc/group当中了,此时改变群组成为users与testing分别会有什么现象发生呢?

[root@www ~]# chgrp [-R] dirname /filename ...

选项与参数:

-R : 进行递归(recursive)的持续变更,亦即连同子目录下的所有文件、目录都更新成为这个群组。常常用在变更某一目录内所有的文件之情况。

范例:

[root@www ~]# chgrp users install.log

[root@www ~]# chgrp testing install.log

chgrp: invalid group name `testing' <== 发生错误找不到这个群组名

文件的群组被改成users了,但是要改成testing的时候,就会发生错误!

改变文件拥有者 chown

改变拥有者就是chown (change owner)!要注意的是,拥有者必须是已经存在系统中的账号,也就是在/etc/passwd 这个文件中有纪录的使用者名称才能改变。

chown还可以顺便直接修改群组的名称!此外,如果要连目录下的所有子目录或文件同时更改文件拥有者的话,直接加上-R 的选项即可!范例:

[root@www ~]# chown [-R] 账号名称文件或目录

[root@www ~]# chown [-R] 账号名称:群组名称文件或目录

选项与参数:

-R : 进行递归(recursive)的持续变更,亦即连同子目录下的所有文件都变更

范例:将install.log的拥有者改为bin这个账号:

[root@www ~]# chown bin install.log

[root@www ~]# ls -l

范例:将install.log的拥有者与群组改回为root:

[root@www ~]# chown root:root install.log

注意:

事实上,chown也可以使用”chown user.group file”,亦即在拥有者与群组间加上小数点“.”也行!不过很多用户设定账号时,喜欢在账号当中加入小数点(例如zhangshan.hbue这样的账号格式),这就会造成系统的误判了!所以我们比较建议使用冒号“:”来隔开拥有者与群组!此外,chown也能单纯的修改所属群组!例如“chown .sshd install.log”就是修改群组。

何时用chown和chgrp这两个命令:确实有时候需要变更文件的拥有者的,最常见的例子就是在复制文件给你之外的其它人时,我们使用最简单的cp命令来复制文件:[root@www ~]# cp 来源文件目的文件

假设要将.bashrc这个文件拷贝成为.bashrc_test文件名,且是要给bin这个人,可以这样做:

[root@www ~]# cp .bashrc .bashrc_test

[root@www ~]# ls -al .bashrc*

-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc

-rw-r--r-- 1 root root 395 Jul 13 11:31 .bashrc_test <==新文件的属性没变

由于复制行为(cp)会复制执行者的属性与权限,所以.bashrc_test还是属于root所拥有,如此一来,即使你将文件拿给bin这个使用者了,那他仍然无法修改的(看属性/权限就知道了吧),所以就必须要将这个文件的拥有者与群组修改一下!

改变权限 chmod

文件权限的改变使用的是chmod这个命令,但是,权限的设定方法有两种,分别可以使用数字或者是符号来进行权限的变更。

数字类型改变文件权限

Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限,文件的权限字符为:”-rwxrwxrwx”,这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

r:4

w:2

x:1

则:

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx---] 分数则是:

owner = rwx = 4+2+1 = 7

group = rwx = 4+2+1 = 7

others= --- = 0+0+0 = 0

所以设定权限的变更时,该文件的权限数字就是770!变更权限的命令chmod的语法是这样的:

[root@www ~]# chmod [-R] xyz 文件或目录

选项与参数:

xyz : 就是刚刚提到的数字类型的权限属性,为rwx 属性数值的相加。

-R : 进行递归(recursive)的持续变更,亦即连同子目录下的所有文件都会变更。

举例来说,如果要将.bashrc这个文件所有的权限都设定启用,那么就:

[root@www ~]# ls -al .bashrc

-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc

[root@www ~]# chmod 777 .bashrc

[root@www ~]# ls -al .bashrc

-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc

那如果要将权限变成“-rwxr-xr--”?那么权限的分数就成为

[4+2+1][4+0+1][4+0+0]=754 !所以需要执行“chmod 754 filename”。

例题:

将.bashrc这个文件的权限修改回-rw-r--r--的情况吧!

答:-rw-r--r--的分数是644,所以命令为:

chmod 644 .bashrc

符号类型改变文件权限

还有一个改变权限的方法!从之前的介绍中可以发现,基本上就九个权限分别是(1)user (2)group (3)others三种身份啦!那么我们就可以由u, g, o来代表三种身份的权限!此外,a 则

假如我们要设定一个文件的权限成为“-rwxr-xr-x”时,基本上就是:

user (u):具有可读、可写、可执行的权限;

group 与others (g/o):具有可读与执行的权限。

所以就是:

[root@www ~]# chmod u=rwx,go=rx .bashrc

# 注意:u=rwx,go=rx 是连在一起的,中间并没有任何空格符!

那么假如是“-rwxr-xr--”这样的权限呢?可以使用“chmod u=rwx,g=rx,o=r filename ”来设定。此外,如果不知道原先的文件属性,而只想要增加.bashrc这个文件的每个人均可写入的权限,可以使用:

[root@www ~]# chmod a+w .bashrc

而如果是要将权限去掉而不更动其它已存在的权限呢?例如要拿掉全部人的可执行权限,则:

[root@www ~]# chmod a-x .bashrc

+ 与–的状态下,只要是没有指定到的项目,则该权限“不会被变动”,例如上面的例子中,由于仅以–拿掉x 则其它两个保持当时的值不变!

权限对文件的重要性

在Windows下一个文件是否具有执行的能力是由“扩展名”来判断的,例

如:.exe, .bat, .com 等等,但是在Linux下,文件是否能被执行,则是由是否具有“x”这个权限来决定的!跟文件名是没有绝对的关系的!

至于w这个权限呢?对一个文件具有w权限时,可以具有写入/编辑/新增/修改文件的内容的权限,但并不具备有删除该文件本身的权限!

权限对目录的重要性

目录主要的内容在记录文件名清单,文件名与目录有强烈的关连!所以如果是针对目录时,那个r, w, x 对目录是什么意义呢?

r (read contents in directory):

表示具有读取目录结构清单的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。所以就可以利用ls 这个命令将该目录的内容列表显示出来!

w (modify contents of directory):

表示具有变得该目录结构清单的权限,也就是下这些权限:

●建立新的文件与目录;

●删除已经存在的文件与目录(不论该文件的权限为何!)

●将已存在的文件或目录进行更名;

●搬移该目录内的文件、目录位置。

总之,目录的w权限就与该目录下的文件名变动有关了!

x (access directory):

目录不可以被执行,目录的x代表的是使用者能否进入该目录成为工作目录的用途!所谓的工作目录(work directory)就是你目前所在的目录!举例来说,当登录Linux时,所在的家目录就是当下的工作目录。而变换目录的命令是”cd”(change directory)!

例题:

有个目录的权限如下所示:

drwxr--r-- 3 root root 4096 Jun 25 08:35 ssh

系统有个账号名称为hbue,这个账号并没有支持root群组,请问hbue对这个目录有何权限?是否可切换到此目录中?

答:hbue对此目录仅具有r的权限,因此hbue可以查询此目录下的文件名列表。因为hbue不具有x的权限,因此hbue并不能切换到此目录内!(相当重要的概念!) 上面这个例题中因为hbue具有r的权限,因为是r乍看之下好像就具有可以进入此目录的权限,其实那是错的。能不能进入某一个目录,只与该目录的x权限有关!此外,工作目录对于命令的执行是非常重要的,如果你在某目录下不具有x的权限,那么你就无法切换到该目录下,也就无法执行该目录下的任何命令,即使你具有该目录的r的权限。

(4)Linux文件种类与扩展名

任何装置在Linux下都是文件,除了前面提到的一般文件(-)与目录文件(d)之外,还有哪些种类的文件呢?

正规文件(regular file ):

就是一般我们在进行存取的类型的文件,在由ls -al 所显示出来的属性方面,第一个字符为[ - ],例如[-rwxrwxrwx ]。另外,依照文件的内容,又大略可以分为:纯文本文件(ASCII):这是Linux系统中最多的一种文件类型,称为纯文本文件是因为内容为我们人类可以直接读到的数据,例如数字、字母等等。几乎只要我们可以用来做为设定的文件都属于这一种文件类型。执行“cat ~/.bashrc ”就可以看到该文件的内容。

二进制文件(binary):系统其实仅认识且可以执行二进制文件(binary file)。的命令cat就是一个binary file。

数据格式文件(data):有些程序在运作的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件(data file)。举例来说,我们的Linux在使用者登入时,都会将登录的数据记录在/var/log/wtmp那个文件内,该文件是一个data file,其能够通过last 这个命令读出来!但是使用cat时,会读出乱码!因为他是属于一种特殊格式的文件。

目录(directory):第一个属性为[ d ],例如[drwxrwxrwx]。

连结文件(link):就是类似Windows系统下的快捷方式!第一个属性为[ l ](英文L的小写),例如[lrwxrwxrwx] ;

设备与设备文件(device):与系统周边及储存等相关的一些文件,通常都集中在/dev这个目录之下!通常又分为两种:

块(block)设备文件:就是一些储存数据,以提供系统随机存取的接口设备,如硬盘与软盘等!查一下/dev/sda看看,会发现第一个属性为[ b ]!

字符(character)设备文件:亦即是一些串行端口的接口设备,例如键盘、鼠标等等!这些设备的特色就是“一次性读取”的,不能够截断输出。

Linux文件扩展名:

基本上,Linux的文件是没有所谓的“扩展名”的,一个Linux文件能不能被执行,与其第一栏的十个属性有关,与文件名根本一点关系也没有。这个观念跟Windows的情况不相同!在Windows下,能被执行的文件扩展名通常是.com .exe .bat等等,而在Linux下,只要文件权限当中具有x的话,例如[ -rwx-r-xr-x ] 即代表这个文件可以被执行!

不过,可以被执行跟可以执行成功是不一样的。举例来说,在root家目录下的install.log 是一个纯文本文件,如果经由修改权限成为-rwxrwxrwx 后,这个文件能够真的执行成功吗?当然不行!因为其内容根本就没有可以执行的数据。所以说,这个x代表这个文件具有可执行的能力,但是能不能执行成功,当然就得要看该文件的内容了。

虽然如此,不过我们仍然希望可以由扩展名来了解该文件是什么东西,所以,通常我们还是会以适当的扩展名来表示该文件是什么种类的。下有数种常用的扩展名:*.sh :脚本或批处理文件(scripts),因为批处理文件为使用shell写成的,所以扩展名就为.sh;

*Z, *.tar, *.tar.gz, *.zip, *.tgz:经过打包的压缩文件。这是因为压缩软件分别为gunzip, tar 等等的,根据不同的压缩软件,而取其相关的扩展名!

*.html, *.php:网页相关文件,分别代表HTML 语法与PHP 语法的网页文件!

基本上,Linux系统上的文件名真的只是让你了解该文件可能的用途而已,真正的执行与否仍然需要权限的规范!

Linux文件长度限制:在Linux下,使用预设的Ext2/Ext3文件系统时,针对文件的文件名长度限制为:

单一文件或目录的最大容许文件名为255 个字符;

包含完整路径名称及目录(/) 之完整文件名为4096 个字符。

Linux文件名称的限制:

由于Linux在文本界面下的一些命令操作关系,一般来说,在设定Linux下的文件名称时,最好可以避免一些特殊字符比较好!例如下这些:

* ? > < ; & ! [ ] | \ ' " ` ( ) { }

因为这些符号在文本界面下,是有特殊意义的!另外,文件名称的开头为小数点”.”时,代表这个文件为”隐藏文件”!同时,由于执行命令时,常常会使用到-option 之类的选项,所以最好也避免将文件名的开头以- 或+ 来命名!

注意:

root 在Linux 里面的意义随着环境的变化而变化。如果以“账号”的角度来看,root 指的是“系统管理员!”的身份,如果以“目录”的角度来看,root 意即指的是根目录,就是/ ;同时还有/root目录。

(5)绝对路径与相对路径

绝对路径:由根目录(/)开始写起的文件名或目录名称,例如/usr/src;

相对路径:相对于目前路径的文件名写法。例如./src 或../../kernels 等等。总之开头不是/ 就属于相对路径的写法。

相对路径是以“当前所在路径的相对位置”来表示的。举例来说,目前在/home 这个目录下,如果想要进入/var/log 这个目录时,可以怎么写呢?

cd /var/log (绝对路径)

cd ../var/log (相对路径)

特别注意这两个特殊的目录:

●. 代表当前的目录,也可以使用./ 来表示;

●.. 代表上一层目录,也可以../ 来代表。

这个. 与.. 目录概念是很重要的,常常会看到cd .. 或./command 之类的命令执行方式,就是代表上一层与目前所在目录的工作状态。

例题:

网络文件常常提到类似./run.sh 之类的数据,这个命令有何意义。

答:由于命令的执行需要变量(bash章节才会提到)的支持,若你的执行文件放置在本目录,并且本目录并非正规的执行文件目录(/bin, /usr/bin等为正规),此时要执行命令就得要严格指定该命令文件。“./”代表“本目录”的意思,所以“./run.sh”代表“执行本目录下,名为run.sh的文件!

嵌入式linux基本操作实验一的实验报告

实验一linux基本操作实验的实验报告 一实验目的 1、熟悉嵌入式开发平台部件,了解宿主机/目标机开发模式; 2、熟悉和掌握常用Linux的命令和工具。 二实验步骤 1、连接主机和目标板;(三根线,网线直接连接实验箱和PC机,实验箱UART2连接主机的UART口)。 2、Linux命令的熟悉与操作 PC端:在PC机的桌面上打开虚拟机,并启动Linux系统,打开命令终端,操作Linux基本命令,如:查看:ls,进入目录:cd,创建文件:mkdir,删除文件:rmdir,配置网络:ifconfig,挂载:mount,设置权限:chmod,编辑器:vi,拷贝:cp等命令,要求能熟练操作。 使用方法: 1.查看:ls Ls列出文件和目录 Ls–a 显示隐藏文件 Ls–l 显示长列格式ls–al 其中:蓝:目录;绿:可执行文件;红:压缩文件;浅蓝:链接文件;灰:其他文件;红底白字:错误的链接文件 2.进入目录:cd 改变当前目录:cd 目录名(进入用户home目录:cd ~;进入上一级目录:cd -) 3.创建文件:mkdir 建立文件/目录:touch 文件名/mkdir目录名 4.删除文件:rmdir 删除空目录:rmdir目录名 5.配置网络:ifconfig 网络- (以太网和WIFI无线) ifconfig eth0 显示一个以太网卡的配置 6.挂载:mount mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘- 确定目录'/ mnt/hda2' 已经存在 umount /dev/hda2 卸载一个叫做hda2的盘- 先从挂载点'/ mnt/hda2' 退出fuser -km /mnt/hda2 当设备繁忙时强制卸载 umount -n /mnt/hda2 运行卸载操作而不写入/etc/mtab文件- 当文件为只读或当磁盘写满时非常有用 mount /dev/fd0 /mnt/floppy 挂载一个软盘 mount /dev/cdrom /mnt/cdrom挂载一个cdrom或dvdrom mount /dev/hdc /mnt/cdrecorder挂载一个cdrw或dvdrom mount /dev/hdb /mnt/cdrecorder挂载一个cdrw或dvdrom mount -o loop file.iso /mnt/cdrom挂载一个文件或ISO镜像文件

什么是嵌入式linux系统

什么是嵌入式linux系统? 一、什么是嵌入式linux? Linux从1991年问世到现在,短短的十几年时间已经发展成为功能强大、设计完善的操作系统之一,不仅可以与各种传统的商业操作系统分庭抗争,在新兴的嵌入式操作系统领域内也获得了飞速发展。嵌入式Linux(Embedded Linux)是指对标准Linux经过小型化裁剪处理之后,能够固化在容量只有几K或者几M字节的存储器芯片或者单片机中,适合于特定嵌入式应用场合的专用Linux操作系统。嵌入式Linux既继承了intelnet上无限的开放原代码资源,又具有嵌入式操作系统的特性。 二、嵌入式Linux的特点版权费:免费; 购买费用:媒介成本; 技术支持:全世界的自由软件开发者提供支持; 网络特性:免费而且性能优异; 软件移植:容易,代码开放,有许多应用软件支持; 应用产品开发周期:短,新产品上市迅速,因为有许多公开的代码可以参考和移植; 实时性能:RT_Linux,hardhat Linux 等嵌入式Linux支持实时性能; 稳定性:好; 安全性:好。 三、嵌入式Linux的市场前景和商业机会 嵌入式Linux有巨大的市场前景和商业机会,出现了大量的专业公司和产品,如Montavista、Lineo、Emi等。有行业协会,如Embedded Linux Consortum等。得到世界著名计算机公司和oem板级厂商的支持,例如IBM、Motorola、Intel等。传统的嵌入式系统厂商也采用了Linux策略如Lynxworks 、Windriver、QNX等。还有intelnet上的大量嵌入式Linux 爱好者的支持。嵌入式Linux支持几乎所有的嵌入式cpu和被移植到几乎所有的嵌入式oem板。 四、嵌入式Linux的应用领域嵌入式Linux的应用领域非常广泛,主要的应用领域有,信息家电:PDA,STB-Set-stopbox,Digital Telephone,Answering Machine,Screen Phone、数据网络:Ethernet switches,Router,Bridge,Hub,Remote access servers,ATM,Frame relay、远程通信、医疗电子、交通运输、计算机外设、工业控制、航空领域等。 五、嵌入式linux的优势嵌入式Linux的开发和研究是操作系统领域中的一个热点,目前已经开发成功的嵌入式系统中,大约有一半使用的是Linux。Linux之所以能在嵌入式系统市场上取得如此辉煌的成果,与其

《嵌入式系统与开发》构建嵌入式Linux系统-实验报告

《嵌入式数据库sqlite移植及使用》 实验报告 学生姓名:陈彤 学号:13004405 专业班级:130044 指导教师:孙国梓 完成时间:2016.5.31 实验3 嵌入式数据库sqlite移植及使用 一.实验目的 理解嵌入式软件移植的基本方法,掌握sqlite数据库软件移植的步骤,掌握sqlite开发的两种方式—命令模式和C代码开发模式的使用方法,并编程实现简单通讯录查询实验。 二.实验内容 实验3.1 移植嵌入式数据库sqlite 实验3.2 简单通讯录查询实例设计和测试 三.预备知识 Linux使用、数据库相关知识等 四.实验设备及工具(包括软件调试工具) 硬件:ARM 嵌入式开发平台、PC 机Pentium100 以上、串口线。 软件:WinXP或UBUNTU开发环境。 五.实验步骤 5.1 移植嵌入式数据库sqlite 步骤【参看教材103页】: 第一步,解压缩sqlite源码,命令tar zxvf sqlite-autoconf-3080900.tar.gz,在解压后的文件夹下,可以看到源码文件有shell.c 和sqlite3.c文件,生成Makefile的配置脚本文件configure.ac ,并检查当前文件夹下__A__(A.存在 B.不存在)Makefile文件。 第二步利用configure脚本文件生成基于ARM实验台的Makefile,具体命令为./configure CC=arm-linux-gcc –prefix=/opt/sqlite –host=arm-linux(假设安装目录为/opt/sqlite),并检查当前文件夹下___A__(A.存在 B.不存在)Makefile文件。 第三步,编译sqlite,命令为_make_,编译过程中使用的编译器为_ arm-linux-gcc _。 第四步,安装sqlit,命令为_make install_。安装完成后到_/opt/sqlite_文件夹下去查看相关文件,可以看到该文件夹下有_bin_、_include_、__lib__和share文件夹,其中可执行文件sqlite3位于_./bin_文件夹,库位于_./lib_文件夹。 第五步,将sqlite3拷贝到开发板bin目录下,将库下的文件拷贝到开发板的lib目录下【注意链接文件的创建】 第六步,数据库的使用 方式1:命令操纵数据库 在超级终端环境下创建数据库stucomm.db,命令为_sqlite3 stucomm.db_; 创建数据表stutable,字段包括id 整型,name 字符型,phoneNum 字符型,具体命令为_sqlite> create table stutable (id int(20),name char(20),phoneNum char(20));_; 插入2条记录,记录信息如下 001,zhangsan,10086 002,lisi,10000

嵌入式Linux实验三

实验三:文件、目录及其操作命令 1实验目的 通过实验掌握如Linux操作系统的基本操作 2实验设备 硬件:PC机一台 软件:Windows98/XP/2000系统,VMware Workstation6.0,Red Hat Linux 3实验内容 (1)文件的复制、删除和移动命令:cp, rm, mv (2)Linux文件与目录 (3)目录命令:mkdir, rmdir, cd, pwd, ls (4)链接文件与ln (5)文件与目录的权限 4实验预习要求 仔细阅读参考书: 【1】鸟哥的Linux私房菜基础学习篇第三版,人民邮电出版社,鸟哥 【2】嵌入式Linux系统开发标准教程,人民邮电出版社,华清远见嵌入式培训中心 【3】嵌入式Linux应用程序开发标准教程,人民邮电出版社,华清远见嵌入式培训中心关于Linux文件与目录的部分。 5实验步骤 (1)熟悉Red Hat Enterprise Linux系统。 (2)根据实验重点内容测试。 6实验重点: (1)文件的复制、删除与移动:cp, rm, mv 要复制文件,请使用cp (copy) 这个命令即可。不过,cp 这个命令的用途不仅仅于此。除了单纯的复制之外,还可以建立连结文件(就是快捷方式),比对两文件的新旧而予以更新,以及复制整个目录等等的功能。至于移动目录与文件,则使用mv (move),这个命令也可以直接拿来作重命名(rename) 的操作!至于(移除)删除文件,使用rm (remove) 这个命令。

cp (复制文件或目录) [root@localhost ~]# cp [-adfilprsu] 源文件(source) 目标文件(destination) [root@localhost ~]# cp [options] source1 source2 source3 .... directory 选项与参数: -a:相当于-pdr 的意思,至于pdr 请参考下列说明;(常用) -d:若源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身; -f :为强制(force)的意思,若目标文件已经存在则无法开启,则移除后再尝试一次; -i :若目标文件(destination)已经存在时,在覆盖时会先询问操作的进行(常用) -l :进行硬式连结(hard link)的连结文件建立,而非复制文件本身; -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用); -r :递归持续复制,用于目录的复制行为;(常用) -s :复制成为符号链接文件(symbolic link),亦即快捷方式文件; -u :若destination 比source 旧,才更新destination ! 最后需要注意的,如果源文件有两个以上,则最后一个目标文件一定要是目录才行! 范例一:用root身份,将主目录下的.bashrc 复制到/temp 下,并更名为bashrc (~代表目前用户身份所在的主文件夹) [root@localhost ~]# cp ~/.bashrc /temp/bashrc [root@localhost ~]# cp -i ~/.bashrc /temp/bashrc cp: overwrite `/temp/bashrc'? n <==n不覆盖,y为覆盖 说明:重复作两次操作,由于/temp 下已经存在bashrc 了,加上-i 选项后,则在覆盖前会询问使用者是否确定!可以按下n 或者y 来二次确认。 范例二:将主目录下的.bashrc和.bash_history 复制到/temp下。 [root@localhost ~]cp ~/.bashrc ~/.bash_history /temp 可以将多个数据一次复制到同一目录中去,最后面一定是目录。 范例三:复制/etc/ 这个目录下的所有内容到/tmp 下 [root@www tmp]# cp /etc/ /tmp cp: omitting directory `/etc' <== 如果是目录则不能直接复制,要加上-r 的选项 [root@www tmp]# cp -r /etc/ /tmp -r 是可以复制目录,但是,文件与目录的权限可能会被改变。所以,也可以利用cp –a /etc /tmp 来下执行!尤其是在备份的情况下! rm (移除文件或目录) [root@localhost ~]# rm [-fir] 文件或目录 选项与参数:

嵌入式Linux系统期末考试简答题、运用题

简答题与应用题 什么是嵌入式系统?主要有什么特点? 以应用为中心,以计算机技术为基础的, 并且软件硬件是可剪裁的, 能满足应用系统对功能、 可靠性、成本、 体积、功耗等指标的严格要求的专用计算机系统。他可以实现对其他设备的控制、监视或者管理等功能。 与通用的 计算机系统相比,特点为: (1) (2) (5) 嵌入式系统通常由嵌入式处理机、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件等几大部分组成。 4、什么是Linux ?什么是嵌入式 Linux ? 答:严格来讲,Linux 是指由Linux 本人维护并不断更新的内核 。 一个嵌入式Linux 系统指的是一个基于 Linux 内核的,但不包含有关这个内核的任何专业的库或是用户工具 的嵌入式系统。 Linux 内核构建嵌入式操作系统有什么优势(优良特性)? 程度代码是可以获取的,可靠度高; 有完整的源码,软件丰富并且免费; 得到众多硬件生产家的广泛支持;包括 cpu 、计算机外 围设备 完善的通信协议、软件标准和文件管理机制; 提供完全免费且优秀的开发工具; 广泛的社群支持 无需购买lice nee ,是免费的; 不依赖特定厂商、供应商; 成本相对低廉。 6、 RTOS (嵌入式操作系统)强调的实时是什么概念?与中断的关系? 答:实时指的是特定操作所消耗的时间(以及空间)的上限是可预知的。操作系统能够在规定响应时间内完成客 户服务程序。中断程序响应中断并完成 是在固定时间内。 7、什么是实时LinUX ?涉及到哪些软硬件内容? 答:实时LinUX ( RT-Linux )通过在Linux 内核与硬件中断之间增加一个精巧的可抢先的实时内核 ,把标准的Linux 内核作为实时内核的一个进程与用户进程一起调度 ,标准的Linux 内核的优先级最低,可以被实时进程抢断。 正 常的Linux 进程仍可以在Linux 内核上运行,这样既可以使用标准分时操作系统即 Linux 的各种服务,又能提 供低延时的实时环境。它在硬件上涉及到硬件中断,软件上涉及到对高优先级的实时硬件中断的快速响应。 能在规定的时间内完成对突发事件的处理的 Linux 系统; 软件:中断服务程序、进程调度程序,硬件:嵌入式系统所采用的中断管理硬件。 8、试简要说明Linux 内核构成,并简要说明各部分的功能? 答: MMU :内存管理单元,完成地址映射(应用虚拟地址方式) VFS :虚拟文件管理系统,提供了统一管理计算机资源的途径。使统一规范计算机资源的使用格式成为可能,方 1、 答: 面向特定应用,一般都有实时要求; 集先进性的计算机技术、半导体工艺、电子技术和通信网络技术于一体的并且在不断创新的知识集 成系统; 嵌入式系统是和具体应用对象有机结合在一起,因而其升级换代也是和具体的产品同步进行的。 嵌入式系统的软 硬件设计着重于高效率性。在最大限度满足应用需求的前提下,降低成本是必须要 考虑的主要问题。 嵌入式系统软件一般都固化在存储器芯片中。 (3) (4) 5、 用 答:( 1) (2) (3) (4) (5) (6) (7) (8) () 2、 答: 3、嵌入式操作系统的作用是什么?

南邮嵌入式系统B实验报告2016年度-2017年度-2

_* 南京邮电大学通信学院 实验报告 实验名称:基于ADS开发环境的程序设计 嵌入式Linux交叉开发环境的建立 嵌入式Linux环境下的程序设计 多线程程序设计 课程名称嵌入式系统B 班级学号 姓名 开课学期2016/2017学年第2学期

实验一基于ADS开发环境的程序设计 一、实验目的 1、学习ADS开发环境的使用; 2、学习和掌握ADS环境下的汇编语言及C语言程序设计; 3、学习和掌握汇编语言及C语言的混合编程方法。 二、实验内容 1、编写和调试汇编语言程序; 2、编写和调试C语言程序; 3、编写和调试汇编语言及C语言的混合程序; 三、实验过程与结果 1、寄存器R0和R1中有两个正整数,求这两个数的最大公约数,结果保存在R3中。 代码1:使用C内嵌汇编 #include int find_gcd(int x,int y) { int gcdnum; __asm { MOV r0, x MOV r1, y LOOP: CMP r0, r1 SUBLT r1, r1, r0 SUBGT r0, r0, r1 BNE LOOP MOV r3, r0 MOV gcdnum,r3 //stop // B stop // END } return gcdnum; } int main() { int a; a = find_gcd(18,9);

printf("gcdnum:%d\n",a); return 0; } 代码2:使用纯汇编语言 AREA example1,CODE,readonly ENTRY MOV r0, #4 MOV r1, #9 start CMP r0, r1 SUBLT r1, r1, r0 SUBGT r0, r0, r1 BNE start MOV r3, r0 stop B stop END 2、寄存器R0 、R1和R2中有三个正整数,求出其中最大的数,并将其保存在R3中。 代码1:使用纯汇编语言 AREA examp,CODE,READONL Y ENTRY MOV R0,#10 MOV R1,#30 MOV R2,#20 Start CMP R0,R1 BLE lbl_a CMP R0,R2 MOVGT R3,R0 MOVLE R3,R2 B lbl_b lbl_a CMP R1,R2 MOVGT R3,R1 MOVLE R3,R2 lbl_b B . END 代码2:使用C内嵌汇编语言 #include int find_maxnum(int a,int b,int c)

建立嵌入式linux开发环境实验

嵌入式linux开发环境的建立 一、创建文件:vi hello.c如下: 二、安装交叉编译器: arm-linux-gcc-3.4.6-glibc-2.3.6.tar 步骤1、把交叉编译链考贝到任意目录下,并解压:tar zxvf arm-linux-gcc-3.4.6-glibc-2.3.6.tar –C / 2、把以上路径添加到/etc/profile文件的最后:export PATH=$PATH:/gcc-3.4.6-glibc-2.3.6/arm-linux/bin 3、输入命令使环境变量立即生效:source /tec/profile 4、测试是否安装成功:arm-linux-gcc–v 如果显示版本号,则安装成功。 5、编译C文件:arm-linux-gcc hello.c–o hello 三、配置tftp服务步骤

1、检查系统有无安装包:用命令:rpm –aq | grep tftp,如有安装包的版本号,说明系统已有相应的安装包; 2、配置服务器,打开文件:vi /etc/xinetd.d/tftp,显示如下桌面service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = yes } 然后编辑将disable改为no,其他不变 3、重启xinetd服务:service xinetd restart, 停止 xinetd: [ 确定 ] 启动 xinetd: [ 确定 ] 4、输入如下命令:netstat –a | grep tftp,如果出现如下画面

嵌入式程序设计实验报告

实验一开发环境的搭建与配置 【实验目的】 1)熟悉嵌入式Linux开发平台。 2)掌握嵌入式Linux开发平台的开发环境搭建与配置。 3)了解minicom配置串口通信参数的过程。 4)了解嵌入式Linux的启动过程。 5)掌握程序交叉编译运行及调试的一般方法。 【实验内容】 1)连接实验开发板与宿主机。 2)在虚拟机中的CentOS(宿主机)搭建开发环境。 3)在宿主机中配置minicom。 4)分析嵌入式Linux的启动过程。 5)在宿主机上编写简单的C语言程序并用交叉编译工具进行编译,然后传输到目标机上运行。 6)在宿主机上编写简单的C语言程序并用交叉编译工具进行编译,用gdbserver进行远程调试。 【实验步骤】 连接实验开发板,对虚拟机进行设置 1)首先把实验开发板打开,用网线和串口线连接宿主机,并连接电源(注意这时不要拨动实验 开发板的开关按钮)。 2)在桌面上点击打开vmware 软件,选择“编辑虚拟机设置”,如下图所示:

图1 3)进入虚拟机配置界面后把网络连接方式设置为“桥接方式”,如图2所示: 图2

4)添加串口,如下图所示: 图3 5)完成串口的添加后,选择“OK”,完成对虚拟机的设置。如下图所示:

图4 6)选择虚拟机的“Edit”、“Virtual Network Editor...”,如下图所示:

图5 7)进入虚拟机网络参数设置界面后对VMnet0进行设置(注意这里桥接的网卡应选择与实验开 发板相连接的那块儿网卡),然后点击“Apply”、“OK”如下图所示:

图6 8)上述设置完成后启动CentOS(CentOS的用户名为“root”,密码为“xidianembed”)。 工具链的配置 1)在CentOS的根目录下创建一个名为“EELiod”的目录,把实验中要用到的文件(主要是一 些rpm包)拷贝到该目录下。(可以用U盘、WinSCP等工具进行,此处不再做详细说明)。 2)交叉编译工具链位于/opt/buildroot-2011.02/output/host/usr目录下,进入工具链的bin目录下, 可以看到一些编译工具,这些工具将会在之后的交叉编译过程中使用到。

嵌入式Linux系统

10-1 嵌入式Linux系统概述 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统。 Linux在所有的操作系统中,Linux 是一个发展最快、应用最为广泛的操作系统。 所谓嵌入式Linux,是指Linux 在嵌入式系统中应用,而不是什么嵌入式功能。实际上,嵌入式Linux 和Linux 是同一件事。 10-2 Linux启动过程综述 一. Bootloader 二.Kernel引导入口 三.核心数据结构初始化--内核引导第一部分 四.外设初始化--内核引导第二部分 五.init进程和inittab引导指令 六.rc启动脚本 七.getty和login 八.bash 附:XDM方式登录 Bootloader 简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。 在Alpha/AXP平台上引导Linux通常有两种方法,一种是由MILO及其他类似的引导程序引导,另一种是由Firmware直接引导。MILO功能与i386平台的LILO相近,但内置有基本的磁盘驱动程序(如IDE、SCSI等),以及常见的文件系统驱动程序(如ext2,iso9660等),firmware有ARC、SRM两种形式,ARC具有类BIOS界面,甚至还有多重引导的设置;而SRM

嵌入式linux实验指导书

嵌入式linux实验指导书 实验一:arm裸机实验 实验条件: pc ADS开发环境FL2440开发套件SecureCRT串口超级终端 实验目的: 熟悉arm裸机开发基本步骤,掌握ADS集成开发环境的使用,能够编写简单的裸机程序并下载到开发板运行测试。 实验原理: ADS 全称为ARM Developer Suite ,是ARM 公司推出的新一代ARM 集成开发工具。ADS 由命令行开发工具、ARM 实时库、GUI 开发环境(Code Warrior 和AXD) 、实用程序和支持软件组成。有了这些部件,用户就可以为ARM 系列的RISC 处理器编写和调试自己开发的应用程序了。本次实验利用ADS集成开发环境建立基于arm9 S3C2440的实验工程,完成工程搭建、代码编写和编译,生成可执行文件并下载到开发板进行运行测试。 实验步骤: 1、首先打开ADS软件CodeWarrior,点击File 菜单下的New 来创建新工程。Project 对话框中选择ARM Executable Image 。在Project name 中输入工程名,例:2440_led,点击“Location:”文本框的“Set...”按钮,选择要将工程保存的路径,然后点击确定即可建立一个新的工程。工程建立之后会出现一个24 40_led.mcp 窗口。 2、创建源文件,点击File 菜单下的New,选择标签页File,在File name 中输入要建立的文件名,如:Init.s (.s 文件为arm 中的汇编文件),若此时选上了Add to Project,创建的文件会自动添加到工程中,选择target方式为DebugRel,点击确定关闭窗口,文件创建完成后编写代码。(可将arm_linux文件夹下的裸机例程代码复制到工程中进行修改,如:复制裸机程序中的led程序init.s led.c 到建立的工程文件目录中,点击Project 菜单下的Add Fils 将源文件添加到工程中)

嵌入式系统实验报告

郑州航空工业管理学院 嵌入式系统实验报告 (修订版) 20 – 20第学期 赵成,张克新 院系: 姓名: 专业: 学号: 电子通信工程系 2014年3月制

实验一ARM体系结构与编程方法 一、实验目的 了解ARM9 S3C2410A嵌入式微处理器芯片的体系结构,熟悉ARM微处理器的工作模式、指令状态、寄存器组及异常中断的概念,掌握ARM指令系统,能在ADS1.2 IDE中进行ARM汇编语言程序设计。 二、实验内容 1.ADS1.2 IDE的安装、环境配置及工程项目的建立; 2.ARM汇编语言程序设计(参考附录A): (1)两个寄存器值相加; (2)LDR、STR指令操作; (3)使用多寄存器传送指令进行数据复制; (4)使用查表法实现程序跳转; (5)使用BX指令切换处理器状态; (6)微处理器工作模式切换; 三、预备知识 了解ARM嵌入式微处理器芯片的体系结构及指令体系;熟悉汇编语言及可编程微处理器的程序设计方法。 四、实验设备 1. 硬件环境配置 计算机:Intel(R) Pentium(R) 及以上; 内存:1GB及以上; 实验设备:UP-NETARM2410-S嵌入式开发平台,J-Link V8仿真器; 2. 软件环境配置 操作系统:Microsoft Windows XP Professional Service Pack 2; 集成开发环境:ARM Developer Suite (ADS) 1.2。 五、实验分析 1.安装的ADS1.2 IDE中包括和两个软件组件。在ADS1.2中建立类型的工程,工程目标配置为;接着,还需要对工程进行、及链接器设置;最后,配置仿真环境为仿真方式。 2.写出ARM汇编语言的最简程序结构,然后在代码段中实现两个寄存器值的加法运算,给出运算部分相应指令的注释。 ; 文件名:

嵌入式LINUX系统的实现

嵌入式LI N UX系统的实现 检修厂 王小康 摘 要 嵌入式系统正变得越来越流行。被广泛地应用在各种网络设备、控制设备以及个人的数字工具如PDA中。文章论述了作者在嵌入式操作系统领域里所做的研究和实践工作,主要的工作围绕着将L i nux改造成嵌入式操作系统所进行的具体工作展开,包括单板配置代码,系统的引导与修改,核心映象定制与修改和调试工作。 1 引言 在当今数字信息技术、网络技术高速发展与发达的后PC时代,嵌入式系统无处不在,并将不断涌现出新的嵌入式应用系统。传统的操作系统软件[1][2]很难有效地支持嵌入式应用系统的快速开发,因而研究与开发嵌入式操作系统,对有效的支持广大的嵌入式应用系统开发具有重大意义,是十分必要的。L i n ux正在向嵌入式领域的各个方面进军,在不久的将来,我们可以发现嵌入式L i n ux的广泛的应用:各种车载嵌入式设备(GPS,电子地图)、消费电子设备、手持电脑(H PC,PDA)、蜂窝电话、Internet接入设备、工控设备以及各种网络的基础设施(网管设备,路由,网关,交换器,HUB等)[3]。 本文是围绕着嵌入式L i n ux系统的实现展开的。首先介绍嵌入式L i n ux系统的硬件结构和软件结构;然后对基于L i n ux的嵌入式实时操作系统的实现过程进行详细的阐述;最后是简短的总结。 2 嵌入式L inux系统的硬件结构 嵌入式L i n ux系统硬件系统是个微形化的专用PC,它包括系统主机扳、通讯接口板、图象处理和显示板、输入控制板以及存储板等。主机板可采用嵌入式X86CPU系列,图象处理和显示板能支持MPEG数字解压缩和电视终端显示,输入控制包括遥控键盘、遥控器和其他一些输入设备接口,存储板主要 要求。 7 设计报警和连锁保护系统 报警系统的作用在于及时提醒操作人员密切注意监视生产状况,以便采取措施减少事故的发生,连锁保护系统是指当生产出现严重事故时,为保证设备和人身的安全,使各个设备按一定次序紧急停下来。在焙烧炉的炉顶温度控制中,根据工艺要求,一个高限报警温度为480度;三个连锁保护温度设定,一个超高限报警温度自动连锁烧嘴,引起烧嘴自动熄火,从而立即引起调节阀的自动关闭,防止煤气流入焙烧炉,一个低限位报警温度用来连锁模式的切换,使模式从酸模式自动切换到水模式,另一个超低限位报警温度用来连锁三个喷枪,使得三个喷枪自动从焙烧炉提升出来,从而保护喷枪。 8 控制系统的调试和运行状况 控制系统安装完成后,应随生产过程进行试运行,按控制要求检查和调整各控制仪表和设备的工作状况,包括调节器的P、I等参数整定,依次将全部控制系统投入运行,在从投入运行到现在有半年多的时间了,发现焙烧炉的炉顶温度控制效果好,系统运行比较稳定。 20

淮阴工学院嵌入式系统开发与应用实验报告实验四嵌入式Linux开发环境的搭建

实验四嵌入式Linux开发环境的搭建 一、实验目的 1、了解嵌入式Linux开发环境的作用 2、掌握相关服务器的安装 二、实验准备 硬件:JXARM9-2410教学实验箱,PC机 软件:Windows XP操作系统,ADS集成开发工具 三、实验过程 1、tftp网络配置 (1) 虚拟机网络配置 a. 点击虚拟机-设置,将网络适配器设置为自定义,并 指定虚拟网络为VMnet0。 b. 点击编辑-虚拟机网络参数-主机虚拟网络映射,并 且指定其桥接的网卡

c. Red Hat IP配置 ●点击系统设置-网络,双击eth0配置IP信息如下: 地址:172.20.11.243 子网掩码:255.255.255.0 默认网关地址:172.20.11.254 DNS: 210.29.152.4 ●点击激活,在弹出的对话框点击是按钮 ●

测试网络连接是否正常 方法一:在linux下,点击系统工具-终端,输入命令ping 172.20.11.243 方法二:在主系统中打开命令提示符,输入ping 172.20.11.243 (2)修改tftp的配置文件 a.在终端下输入gedit /etc/xinetd.d/tftp b.修改”disable=yes”为”=no”,点击保存,关闭gedit

c.重启xinetd服务,使刚才的更改生效,在终端里输入, /etc/init.d/xinetd restart d.进入tftpboot文件夹创建一个测试文件testfile e.取得tftpboot文件夹的所有权限,命令chmod 777 /tftpboot f.启动tftp测试上传和下载 2配置NFS服务器 a.设置:开始->系统设置->服务器设置->NFS服务器打开配置对话 框 第一步:点击添加nfs共享 第二步:输入目录/tftpboot 第三步:输入主机172.20.11.243 第四步:基本权限为读/写

嵌入式Linux系统开发教程很完整的习题答案

嵌入式Linux系统开发教程很完整的习题答案

参考答案 第一章 一、填空题。 1、嵌入式系统主要融合了计算机软硬件技术、通信技术和微电子技术,它是将计算机直接嵌入到应用系统中,利用计算机的高速处理能力以实现某些特定的功能。 2、目前国内对嵌入式系统普遍认同的定义是:以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 3、嵌入式系统一般由嵌入式计算机和执行部件组成,其中嵌入式计算机主要由四个部分组成,它们分别是:硬件层、中间层、系统软件层以及应用软件层。 4、嵌入式处理器目前主要有ARM、MIPS、Power PC、68K等,其中arm处理器有三大特点:体积小、低功耗、的成本和高性能,16/32位双指令集,全球合作伙伴众多。 5、常见的嵌入式操作系统有:Linux、Vxworks、WinCE、Palm、uc/OS-II和eCOS。 6、嵌入式系统开发的一般流程主要包括系统需求分析、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最后得到最终产品。 二、选择题 1、嵌入式系统中硬件层主要包含了嵌入式系统重要的硬件设备:、存储器(SDRAM、ROM等)、设备I/O接口等。(A) A、嵌入式处理器 B、嵌入式控制器 C、单片机 D、集成芯片 2、20世纪90年代以后,随着系统应用对实时性要求的提高,系统软件规模不断上升,实时核逐渐发展为,并作为一种软件平台逐步成为目前国际嵌入式系统的主流。(D) A、分时多任务操作系统 B、多任务操作系统 C、实时操作系统 D、实时多任务操作系统 3、由于其高可靠性,在美国的火星表面登陆的火星探测器上也使用的嵌入式操作系统是。(B) A、Palm B、VxWorks C、Linux D、WinCE [在此处键入]

嵌入式linux实验指导书

目录 实验一 linux常用指令练习 (3) 1、在线帮助指令 (3) 2、linux开关机及注销指令。 (3) 重启指令: (3) 1)、reboot命令 (3) 2)、init 6命令 (3) 关机指令: (3) 1)、halt命令 (3) 2)、poweroff命令 (4) 3)、init 0命令 (4) 4)、shutdown命令 (4) 注销指令: (4) 3、用户管理命令 (4) 1)、用户切换su命令 (4) 2)、添加用户命令adduser/useradd (5) 3)、删除用户及更改用户属性 (5) 4)、设置用户密码 (6) 5)、查看用户信息 (6) 4、文件目录操作指令 (7) 1)、改变当前工作目录命令(cd) (7) 2)、显示当前路径pwd (7) 3)、查看当前目录下的文件命令ls (7) 4)、新建目录指令mkdir (8) 5)、删除目录命令rmdir (8) 6)、新建文件命令touch (8) 7)、删除文件指令rm (8) 8)、文件和目录的复制命令cp (8) 9)、文件和目录的移动命令mv (9) 10)、更改文件或目录的使用权限chmod (9) 11)、查看文件的命令cat (9) 12)、文件链接命令ln (9) 13)、文件压缩解压命令 (10) 5、网络相关命令 (11) 6、磁盘管理命令 (11) 7、挂载文件命令mount (12) 8、其他系统命令 (12) 练习1: (13) 练习2: (15) 练习3: (16) 练习4: (21) 实验二 VI文本编辑器的使用 (24) 1、练习使用VI指令 (24) 2、利用VI编写一个hello.c文件 (24)

嵌入式基础实验报告

嵌入式基础实验报告 ——Linux下编译环境的设置 姓名:张耀丹 学号:131012692 班级:13级网络工程二班

一、实验目的 1、熟悉嵌入式Linux 开发环境,学会基于UP-CUP IOT-4412-II 型网关部分平台的Linux 开 发环境的配置和使用 2、利用arm-none-linux-gnueabi-gcc 交叉编译器编译程序,使用基于NFS 的挂载方式进行 实验,了解嵌入式开发的基本过程 二、实验环境 1、硬件:UP-CUP IOT-4412-II 型网关部分嵌入式实验平台,PC 机Pentium 500 以上, 硬盘 40G 以上,内存大于256M 2、软件:Vmware Workstation + Fedora Core 14 + 超级终端/Xshell + ARM-LINUX 交叉编译开 发环境 三、实验内容 1、本次实验使用Fedora14 操作系统环境,安装ARM-Linux 的开发库及编译器。创建一个新 目录,并在其中编写hello.c 和Makefile 文件。 2、学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。将已 经编译好的文件通过NFS 方式挂载到目标开发板上运行 四、实验步骤 实验目录:/UP-CUP4412/SRC/exp/basic/Cortex/ 1、编译源程序 (1)在宿主机端任意目录下建立工作目录CortexA9,实际光盘目录中已经给出本次实验所需全面文件及代码,存放在Cortex目录下。 [root@localhost ~]# mkdir CortexA9 [root@localhost ~]# cd CortexA9 (2)编写程序源代码 在Linux 下的文本编辑器有许多,常用的是vim 和Xwindow 界面下的gedit 等,我们在开发过程中推荐使用vim,用户需要学习vim 的操作方法,请参考相关书籍中的关于vim 的操作指南。Kdevelope、anjuta 软件的界面与vc6.0 类似,使用它们对于熟悉windows 环境下开发的用户更容易上手。 实际的CortexA9.c 源代码较简单,如下: #include main() { printf(“**********\n” ); printf(“CortexA9 \n”); printf(“**********\n” ); return 0; }

嵌入式Linux系统开发教程答案

1、嵌入式系统主要融合了计算机软硬件技术、通信技术和微电子技术,它是将计算机直接嵌入到应用系统中,利用计算机的高速处理能力 、目前国内对嵌入式系统普遍认同的定义是:以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用 、嵌入式系统一般由嵌入式计算机和执行部件组成,其中嵌入式计算机主要由四个部分组成,它们分别是:硬件层、中间层、系统软件层以及应用软件层。4、嵌入式处理器目前主要有 PC、68K等,其中arm处理器有三大特点:体积小、低功耗、的成本和高性能,16/32 操作系统有:Linux、Vxworks、WinCE、Palm、uc/OS-II和eCOS。6、嵌入式系统开发的一般流程主要包括系统需求分析、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最后得到最终产品。1、嵌入式系统中硬件层主要包含了嵌入式系统重要的硬件设备:嵌入式处理器、存储器(SDRAM、ROM等)、设备I/O接口等。2、20世纪90年代以后,随着系统应用对实时性要求的提高,系统软件规模不断上升,实时核逐渐发展为实时多任务操作系统,并作为一种软件平台逐步成为目前国际嵌入式系统的主流。3、由于其高可靠性,在美国的火星表面登陆的火星探测器上也使用的嵌入式操作系统是VxWorks 。4、嵌入式系统设计过程中一般需要考虑的因素不包括:(大小)5、在嵌入式系统中比较流行的主流程序有:(Angel、Blob、Red Boot )1、Linux具有UNIX的所有特性并且具有自己独特的魅力,主要表现在:开放性、多用户、多任务、友好的用户界面、设备独立性、丰富的网络功能、文件传输、远程访问、可靠的安全性、良好的可移植性、X Window系统、内存保护模式。2、Linux 作环境)、文件结构(File Structure)和实用工具。3、目前几乎所有的Linux ;查看当前路径应使用命令:pwd;的作用是:使linux.tar.gz文件 Linux内核主要由:进程调度,内存管理,虚拟文件系统,网络接口,进程间 (Red Flag)2、启动shell环境时,屏幕上显示“[arm@www home]$”,其中的arm 命令时,如果想对文件名中的不可显示字符用八进制逃逸字符显示,则应该选用的参数是(-b)。4、解 Linux用的文件系统是(ntfs)。1、ARM9系列微处理器在高性能和 5级整数流水线,指令执行效率更高;提供1.1MIPS/MHz的哈佛总线结构;支持32位ARM指令集和16位Thumb指令集;支持32位的高速AMBA总线接口。2、ARM芯片的内核一般包括以下几个单元:ARM9TDMI32RISC处理器、数据 本质上是内存中一段连续的地址,对其最常见的操作为“压栈”( 出)。1、在arm/thumb汇编语言程序中,程序是以程序段的形式呈现的。程序段是具有特有名称的相对独立的指令或数据序号。程序段有两大类型代码段、数据段。2、基于linux下GCC汇编语言,代码表号必须在一行的顶端,后面要加上:,注视的内容可以在前面加上@。 3、符号定义伪指令()、数据定义伪指令(Data Definition 4、linux下的嵌入式程序开发,主要需要的代码编辑器,如vi和gedit,另外还需要编译器gcc、调试器Vi编辑器基本上有三种基本状态,分别是:命令模式(command mode)、插入模式(insert mode)和底行模式(gcc编译文件生成可执行文件要经历四个相互关联的步骤:预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。1.假如使用伪指令定义一个局部的数据量,变量名为temp,然后给其赋值为8,汇编代码为(GBLA temp;temp SET A 0x08;)2、在vi处于命令行模式时,如果需要对文本进行修改,欲在光标所在位置的下一个位置开始输入文字,则(按下字母“a”进入插入模式)3、当前vi 处于插入模式,先放弃对文本的修改,即不保存退出vi,则(先按下“ESC”后,再使用“:q!”命令)。4、经过汇编之后,生成的目标文件的后缀名为(.o)。 5、对代码文件code.c进行调试的命令为($gcc –g code.c –o code)。1、SMDK2440平台的开发板采用的处理器是S3C2440,其主频一般为400M。2、windows软件环境的设置一般包括以下几部分:超级终端的设置、DNW设置、GIVEIO驱动的设置和USB驱动3、在windows系统上建立基于linux嵌入式开发环境一般有三种方案可以选择分别是Windows系统下安装虚拟机Vmware、Windows+Linux双系统安装、基于Windows操作系统下的Cygwin4、UBUNTU的网络设置可以采用命令行方式、也可以采用图形界面操作方式来配置。5、开发板硬件平台是基于三星S3C2440的SMDK2440平台的目标板,使用的刻录软件为SJF2440。1、为了通过PC的串口和开发板进行交互,需要使用(超级终端)。2、在嵌入式linux的开发中,能实现上传下载文件、刻录文件、运行映像等功能工具是(DNW)。 3、由普通用户账户转为管理员账户登录,使用的命令为($su root)。 4、安装FTP服务器时,在终端输入的命令为($sudo apt-get install vsftpd)。 5、安装Telnet服务时,在终端输入的命令为($sudo apt-get install telnetd)1、交叉开发工具链就是为了编译、链接、处理和调试跨平台体系结构的程序代码执行工具链软件,通过带有不同的参数,可以实现编译、链接、处理、调试等不同的功能。2、linux经常使用的工具链软件有Binutils、Gcc、Glibc和Gdb。3、分布构建交叉编译工具链的制作过程需要以下几步编译binutils、编译辅助gcc编译器、编译glibc库、重新编译完整的gcc。4、使用crosstool构建交叉编译工具链的制作过程需要以下几步:准备工作、建立脚本文件、建立配置文件、执行脚本文件和编译gdb调试器。5、使用crosstool构建交叉编译工具链的制作过程中需要的配置文件,其主要作用是定义配置文件、定义生成编译工具链的名称、定义编译选项等。1.(binutils)十二进制程序处理工具,包括连接器,汇编器等目标程序处理的工具。2.构建交叉编译器的第一个步骤是(下载工具)。3、分析以下代码#export PRJROOT=/home/arm/armlinux #export TARGET=arm-linux #export PREFIX=$PRJROOT/$TARGET其中,变量PREFIX代表的路径为(/home/arm/armlinux)。4. Binutils是gnu工具之一,他包括连接器、汇编器和其他用于目标文件和档案的工具,特使二进制代码的处理维护工具。其中包括(ld)命令,他是把一些目标和归档文件结合在一起,重定位数据,并连接符号引用。5.分布构建交叉编译链的过程有两次变异gcc,其中第二次进行编译的作用是(获得glibc库的支持) 。1、Bootloader,亦称引导加载程序,是系统加电后运行的第一段软件代码。2、一般Bootloader包含两种不同的操作模式:启动加载模式 的主要功能是引导操作系统启动,它的启动方式有网络启动、磁盘启动和Flash 运行的第一阶段主要完成以下工作:屏蔽所有中断、设置CPU的速度和时钟频率、RAM初始化、初始化LED和关闭 cache。1、在Bootloader的启动方式中,Flash启动方式通常有两种,一种是可以直接从Flash启动,另一种时可以将压缩的内存映像文件从Flash中复制、解压到RAM ,再从中启动。2、在各种Bootloader中,U-boot 是以PPCBoot和ARMBoot为基础的通用加载程序,并且在ARM、PowerPC以及MIPS等多种平台上运行。3、在编译Vivi之前将Vivi里所有的“*.o”和“*.o.flag”文件删除,以确保文件编译时没有错误或者警告发生,使用的命令格式为(make distclean)。4、编译Vivi时,如果编译成功,在/vivi里面会生成三个vivi文件,其中不包括文件(vivi.exe)。5、把二进制文件载入Flash或RAM使用的命令是(load)。1、ARM-Linux内核的配置系统由三个部分组成,它们分别是Makefile、配置文件和配置工具。2、配置工具一般包括配置命令解释器和配置用户界面,前者主要作用是对配置脚本中使用的配置命令进行解释;而后者则是提供基于字符界面、基于Ncurses图形界面以及基于X Window图形界面的用户配置界面。3、Makefile文件主要包含注释、编译目标定义和适配段。4、Linux内核常用的配置命令有make oldconfig、make config、make menuconfig 和make xconfig。其中以字符界面配置的命令是make config。5、内核编译结束后,会在“/arch/arm/boot/”目录下面和根目录下面生成一个名为zImage的内核镜像文件。1.linux内核中的makefile以及与makefile直接相关的文件不包括(后缀名为.in)。2.用户通过make config 配置后,产生了后缀名为(in.config)。3.rules.make文件定义了许多变量,最重要的是那些编译、连接列表变量,但不包括(O-OBJS)。4.在内核配置过程中,如果需要设置networking support这个选项,进入的菜单项是(General setup)。5.在linux系统中,我们既需要标记变量的符号,有需要变量的物理地址,两者同时需要的时候可以采用符号表的方式,其对应的文件为(System.map)。1、Linux下的文件系统主要分为三个层次:上层用户的应用程序对文件系统的系统调用、虚拟文件系统和挂载到VFS中的各种实际文件系统。2、三种常用的块驱动程序分别是Blkmem驱动层、RAMdisk驱动层、MTD驱动层JFFS2、Yaffs、Romfs和Cramfs。 4、基于RAM的文件系统常见的有Ramdisk和Ramfs/Tmp fs。 5、System V init、Busybox init1、(MTD驱动层)也支持在一块Flash上建立多个Flash分区,没一个分区作为一个MTD block设备,可以把系统软件数据等分配到不同的

相关主题
文本预览
相关文档 最新文档