第6章基于ARM9和Linux嵌入式系统设计第6章基于ARM9和Linux嵌入式系统设计6.1嵌入式Linux的开发环境6.2嵌入式Linux操作系统常用命令6.3Linux开发工具GUNgcc的使用6.4GNUmake命令和makefile文件6.5GDB调试器简介6.6嵌入式Linux下C语言编程——文件的操作6.7嵌入式Linux引导程序6.8Linux系统在ARM平台上的移植6.9综合训练——Linux系统及应用程序的烧第6章基于ARM9和Linux嵌入式系统设计6.1嵌入式Linux的开发环境6.1.1嵌入式Linux开发环境建立嵌入式LINUX开发环境有几个方案:1、基于PC机WINDOWS操作系统下的CYGWIN;2、在WINDOWS下安装虚拟机后,再在虚拟机中安装LINXUX操作系统;3、直接安装LINUX操作系统。第6章基于ARM9和Linux嵌入式系统设计6.1.2嵌入式Linux开发的一般过程1.了解硬件;2.准备需要使用的Linux工具以及其他工具;3.安排内存地址;4.编写启动代码和机器相关代码;5.编写驱动程序;6.C库、GUI和系统程序的移植;7.调试.第6章基于ARM9和Linux嵌入式系统设计6.2嵌入式Linux操作系统常用命令命令形式如下:command[option][sourcefile(s)][targetfile]1.登录和退出Linux启动后,给出login命令,等待用户登录。Login:输入用户名Password:输入密码使用logout命令退出外壳。2.关机或重新启动的shutdown命令$shutdown–hnow←要求系统立即关机$shutdownnow←要求系统立即关机$shutdown+5←要求5分钟后关机$shutdown–rnow←要求立即关机系统并重新启动第6章基于ARM9和Linux嵌入式系统设计3.联机帮助(1)显示帮助手册man[选项]命令名称常用选项说明-S根据章节显示,由于一个命令名称可能会有很多类别;-f只显示出命令的功能而不显示其中详细的说明文件;-w不显示手册页,只显示将被格式化和显示的文件所在位置;-a显示所有的手册页,而不是只显示第一个;-E在每行的末尾显示$符号。例如:要了解关于这个命令的更多信息,可以使用:$manecho第6章基于ARM9和Linux嵌入式系统设计(2)系统帮助文档help命令用于查看所有Shell命令。用户可以通过该命令寻求Shell命令的用法,只需在所查找的命令后输入help命令,就可以看到所查命令的内容了。例如:查看cd命令的使用方法。$cd--help第6章基于ARM9和Linux嵌入式系统设计(3)whereis命令whereis命令来查询某个命令存在哪一个目录下。命令格式:whereis[选项]命令名。说明:不加选项可直接使用whereis命令。whereis命令的常用选项如下:章节说明-b只查找二进制文件-m查找主要文件-s查找来源-u查找不常用的记录文件例如:查找cd命令二进制文件在什么目录下。命令:$whereis-bcd第6章基于ARM9和Linux嵌入式系统设计4.更改账号密码使用passwd命令来设置新用户的口令。在设置口令之后,账号即能正常工作。语法:passwdOldpassword:输入旧密码Newpassword:输入新密码(最好为6~8字,英文字母与数字混合)Retypenewpassword:再输入一次密码第6章基于ARM9和Linux嵌入式系统设计5.列出文件或目录ls[选项][文件目录列表]ls命令中的常用选项如下:-a:显示所有文件及目录,包括以“.”开始的隐藏文件在内的所有文件名;-c:按列输出,纵向排序;-x:按列输出,横向排序;-l:列出目录下文件权限、所有者、文件大小、修改时间及名称;–lg同上,并显示出文件的所有者工作组名;-t:根据文件建立时间的先后次序列出;-A:同-a,但不列出.(目前目录)及..(父目录);-R:递归显示下层子目录即显示出目录下以及所有子目录文件名;--help:显示帮助信息;--version:显示版本信息。第6章基于ARM9和Linux嵌入式系统设计6.改变工作目录语法:cd[name]其中name是目录名、路径或目录缩写。cd除了有切换目录的功能外,还有一个功能就是,不管在哪个目录内,只要输入cd命令,不加任何参数,即可回到用户目录内。$cdtony←切换到当前目录下的tony子目录$cd..←切换到上一层目录$cd/←切换到系统根目录$cd←切换到用户主目录(或运行cd~命令也可以)$cd/usr/bin←切换到/usr/bin目录第6章基于ARM9和Linux嵌入式系统设计7.建立新目录mkdir的命令格式如下:mkdir[-m模式][-p目录名]目录命令中的参数说明如下:m模式:在建立目录时把按模式指定设置目录权限。该目录的权限分为:目录所有者的权限、组中其他人对目录的权限和系统中其他人对目录的权限。这三个权限分别用三个数字之和来表示:对目录的读权限是4、写权限是2、执行权限是1。-p目录名:建立所有不存在父目录的目录。目录:要建立的目录。第6章基于ARM9和Linux嵌入式系统设计8.删除文件或目录rm[选项]文件列表常用选项说明-r删除文件列表中指定的目录,若不用此标志则不删除目录-I指定交互模式。在执行删除前提示确认。任何以Y开始的响应都表示肯定;其他则表示否定。-f指定强行删除模式。本标志强迫删除,不用提示。-V在删除前回显文件名。--指明所有选项结束。用于删除一个文件名与某一选项相同的文件。例如:假定偶然建立了名为-f的文件,又打算删除它,命令rm-f不起任何作用,因为-f被解释成标志而不是文件名;而命令rm---f能成功地删除文件。第6章基于ARM9和Linux嵌入式系统设计9.删除目录的rmdir命令rmdir命令是用来删除目录的,一般情况下要删除的目录必须为空目录,如果所给的目录不为空,系统会报告错误。。该命令的语法格式如下:rmdir-p目录列表命令中的参数说明如下:-p:在删除目录表指定的目录后,若父目录为空,则rmdir也删除父目录。状态信息显示什么被删除,什么没被删除。目录列表:空格分隔的目录名列表。要删除的目录必须为空。第6章基于ARM9和Linux嵌入式系统设计10.显示当前目录执行pwd命令形式如下:#pwd11.改变当前工作目录该命令使用的语法格式如下:Cd[目录名]命令中的参数说明如下:目录名:改变到所指定的目录名。若没有指定目录,就返回到用户主目录(在HOME环境变量中指定)。第6章基于ARM9和Linux嵌入式系统设计12.复制文件的cp命令Cp[选项]源文件目标文件Cp[选项]源文件组目标目录源文件:要拷贝的文件。目标文件:目标名。也可以是目录名,这种情况下,源文件名作为目标文件名,而文件放在该目录下。源文件组:要拷贝文件的由空格分隔的列表。目标目录:目标目录。常用命令的选项如下:常用选项说明-a在备份中保持尽可能多的源文件结构和属。-b将要覆盖或删除文件的备份。-f删除已存在的目标文件。-I提示是否覆盖已存在的目标文件。-p保持原先文件的所有者、组权限和时间标志-r递归拷贝目录,把所有非目录文件当普通文件拷贝。-R递归拷贝目录。第6章基于ARM9和Linux嵌入式系统设计13.移动或更改文件、目录名称mv[-f][-i]文件1文件2mv[-f][-i]目录1目录2mv[-f][-i]文件列表目录命令中的参数说明如下:-f:通常情况下,目标文件存在但用户没有写权限时,mv会给出提示。本选项会使mv命令执行移动而不给出提示。-i:交互模式,当移动的目录已存在同名的目标文件名时,用覆盖方式写文件,但在写入之前给出提示。文件1:源文件名。文件2:目标文件名(新文件名)。目录1:源目录名。目录2:目标目录名(新目录名)。文件列表:用空格分隔的文件名列表。把列表中的文件移动到一个新目录。目录:目标目录。第6章基于ARM9和Linux嵌入式系统设计14.分页查看文件内容用户可以使用more命令,让画面显示满一页时暂停,此时可按空格键继续显示下一个画面,或按Q键停止显示。其命令格式如下:more文件名←显示文字文件的内容;或cat文件名|more←逐页显示文字文件的内容;或ls–al|more←显示满一个画面便停止,按空格键继续显示下一画面,按Q键跳离。第6章基于ARM9和Linux嵌入式系统设计15.查看文件内容显示文本文件内容的命令是cat命令,用来将文件的内容显示到终端上,其命令语法如下:cat[选项]文件列表命令中的参数说明如下:-b计算所有非空输出行,开始为1。-e在每行末尾显示$符号。-n计算所有输出行,开始为1。-s将相连的多个空行用单一空行代替。第6章基于ARM9和Linux嵌入式系统设计16.查找文件内容grep[选项]匹配字符串文件列表文件列表:需查找的文件列表匹配字符串:希望在文件中查到的串。选项:说明-v列出不匹配串或正则表达式的行。-c对匹配的行计数。-l只显示包含匹配的文件的文件名。-h抑制包含匹配文件的文件名的显示。-n每个匹配行只按照相对的行号显示。-i产生不区分大小写的匹配,缺省状态是区分大小写。第6章基于ARM9和Linux嵌入式系统设计17.排序命令命令的语法格式如下:sort[选项]文件说明:sort命令对指定文件中所有的行进行排序,并将结果显示在标准输出上。如不指定输入文件或使用“-”,则表示排序内容来自标准输入。第6章基于ARM9和Linux嵌入式系统设计18.比较文件内容的命令(1)comm命令如果想对两个有序的文件进行比较,可以使用comm命令。该命令的使用语法如下:comm[-123]file1file2说明:该命令是对两个已经排好序的文件进行比较。其中file1和file2是已排序的文件。comm读取这两个文件,然后生成三列输出:仅在file1中出现的行;仅在file2中出现的行;在两个文件中都存在的行。如果文件名用“-”,则表示从标准输入读取。第6章基于ARM9和Linux嵌入式系统设计(2)diff命令diff命令用于比较两个文件内容的不同,其命令语法格式如下:diff[参数]原文件目标文件参数说明a将所有文件当做文本文件来处理b忽略空格造成的不同B忽略空行造成的不同q只报告什么地方不同,不报告具体的不同信息H利用试探法加速对大文件的搜索I忽略大小写的变化L用pr对输出进行分页R在比较目录时比较所有的子目录S两个文件相同时才报告v在标准输出上输出版本信息并退出第6章基于ARM9和Linux嵌入式系统设计19.命令的输入和输出(1)输入重定向输入重定向是指把命令(或可执行程序)的标准输入重定向到指定的文件中。重定向操作符使用“”。它将一对分隔符(!…!)之间的正文重定向输入给命令。(2)输出重定向输出重定向是指把命令(或可执行程序)的标准输出或标准错误输出重新定向到指定文件中。输出重定向的一般形式为:命令文件名可以使用追加重定向操作符“”,其使用语法形式为:命令文件名第6章基于ARM9和Linux嵌入式系统设计(3)管道管道是把一系列命令连接起来,即第一个命令的输出会作为第二个命令的输入通过管道传给第二个命令,第二个命令的输出又会作为第三个命令的输入,以此类推。显示在屏幕上的是管道行中最后一个命令的输出(如果命令行中未使用输出重定向)。(4)命令替换命令替换和重定向有些相似,但区别在于命令替换是将一个命令的输出作为另外一个命令的参数。常用命令格式为:command1`command2`其中,command2的输出将作为command1的参数。需要注意的是这里的`符号,被它括起来的内容将作为命令执行,执行后的结果作为command1的参数。第6章基于ARM9和Linux嵌入式系统设计例如:$cd`pwd`该命令将pwd命令列出的目录作为cd命令的参数,结果仍然是停留在当前目录下。重导与管道举例:$ls–al