1TMTHEARCHITECTUREFORTHEDIGITALWORLD创建嵌入式系统开发环境2TM2ARM及Thumb指令集第3章主要内容1、Linux与嵌入式Linux概述2、Windows下的Linux环境软件---cygwin3、Linux文件系统结构4、Linux常用命令5、Linux文本编辑器vi6、Linux编译器gcc及编译工具7、交叉编译工具的创建3TM3ARM及Thumb指令集1、Linux操作系统的组成2、Linux操作系统的内核版本3、嵌入式LinuxLinux与嵌入式Linux概述4TM4ARM及Thumb指令集Linux操作系统的组成LINUX的内核:含有设备驱动程序、系统服务等程序,具有中断处理、进程调度、原语管理等功能。LINUXSHELL:Shell是系统的用户界面,它是一个命令解释器,它解释用户输入的命令,并且把它们送到内核。提供了用户与内核进行交互操作的一种接口。LINUX文件系统:是文件存放在磁盘等存储设备上的组织方法。Linux能支持多种目前许多的文件系统,如EXT2、EXT3、FAT、VFAT、ISO9660、NFS、SMB等。LINUX应用系统:标准的Linux系统都有一整套称为应用程序的程序集,包括文本编辑器、编程语言、XWindow、办公套件、Internet工具、数据库等。5TM5ARM及Thumb指令集Linux内核采用双树结构:一棵树是稳定树,主要用于发行;另一棵树是非稳定树或开发树,用于产品开发、改进、测试。源代码版本序号形式:为x.y.zz结构,其中x为主版本号,代表核心的改动升级;y为次版本号,表示功能性的改动;zz为末版本号,表示BUG的改动。其中x介于0到9之间,yy和zz则介于0到99之间。双树区分:对于稳定树来说,y是偶数;对于开发树来说,y是比相应稳定树大1的奇数。例2.4.18等为稳定内核版本。Linux的内核版本6TM6ARM及Thumb指令集嵌入式Linux操作系统概述一、嵌入式Linux操作系统嵌入式Linux是按照嵌入式操作系统的要求而设计的一种小型操作系统。由一个内核及一些根据需要进行定制的系统模块组成。其kernel很小,一般只有几百kB左右。即使加上其它必须的模块和应用程序,所需的存储空间也很小。它具有多任务、多进程的系统特征,有些还具有实时性。嵌入式Linux需要移植:对于嵌入式Linux,一般都不是原封不动地使用,而是要考虑各种具体系统的特点,有针对性地对Linux内核加以裁减、修改和补充。7TM7ARM及Thumb指令集下面是嵌入式Linux的基本示意图:BootLoader内核初始化设备驱动程序文件系统网络模块8TM8ARM及Thumb指令集BootLoaderBootLoader:负责Linux内核的启动,它用于初始化系统资源,包括SDRAM。这部分代码用于建立Linux内核运行环境和从Flash中装载初始化ramdisk(steppingstone)。9TM9ARM及Thumb指令集内核初始化内核初始化:Linux内核的入口点是start_kernel()函数。它初始化内核的其它部分,包括捕获异常,IRQ通道,调度,设备驱动,标定延迟循环,最重要的是能够fork(创建)“init”进程,以启动整个多任务环境。系统调用函数/捕获函数:在执行完“init”程序后,内核对程序流不再有直接的控制权,此后,它的作用仅仅是处理异步事件(例如硬件中断)和为系统调用提供进程。10TM10ARM及Thumb指令集设备驱动设备驱动:设备驱动占据了Linux内核很大部分。同其它操作系统一样,设备驱动为它们所控制的硬件设备和操作系统提供接口。设备驱动包括:字符型设备驱动,块设备驱动,网络设备驱动11TM11ARM及Thumb指令集文件系统:Linux最重要的特性之一就是对多种文件系统的支持。如EXT2、EXT3、FAT、VFAT、ISO9660、NFS、SMB.这种特性使得Linux很容易地同其它操作系统共存。文件系统的概念使得用户能够查看存储设备上的文件和路径而无须考虑实际物理设备的文件系统类型。Linux透明的支持许多不同的文件系统,将各种安装的文件和文件系统以一个完整的虚拟文件系统的形式呈现给用户。5.3.1Linux文件系统概述文件结构是文件存放在磁盘等存贮设备上的组织方法。文件结构主要体现在对文件和目录的组织上。目录提供了管理文件的一个方便而有效的途径。linux使用标准的目录结构,在安装的时候,安装程序就已经为用户创建了文件系统和完整而固定的目录组成形式,并指定了每个目录的作用和其中的文件类型13TM13ARM及Thumb指令集Linux目录结构Linux与DOS文件系统区别Linux文件系统是一个目录树结构,最上层是根目录,其他的所有目录都是从根目录出发而生成的。Dos文件系统也采用目录树的结构,但DOS以每个分区为树根,有几个分区就有几个树型结构。/sbin/usr/etc/root/lib/hom/mnt/CDELinux下,任何一个目录都可以是一个分区。因此,在分区时,必须将一个分区安装在树根下面。Linux不仅将分区安装为一个目录,而且还将所有的硬件设备都安装成一个个设备文件。对设备的操作是通过文件的操作完成的。Linux文件系统结构“/”根目录:包含基本的操作系统和维护工具。这个目录的文件可以启动系统,并且需要的话,可以完成紧急维护和修复的功能。“/root”目录:系统管理员(也叫超级用户或根用户)的Home目录。“/usr”目录:包含所有的命令、程序库、文档和其它文件。这些文件在正常操作中不会被改变的。这个目录也包含你的Linux发行版本的主要的应用程序。/usr/bin,/bin:一般性执行程序放置的地方/usr/sbin,/sbin:系统管理员常用的指令集“/home”目录:包含用户的文件:参数设置文件、个性化文件、文档、数据、EMAIL、缓存数据等。这个目录在系统升级时应该保留。“/mnt”目录:一般用来临时挂载别的文件系统,如FAT32,NTFS等“/bin”目录:系统启动时需要的执行文件(二进制),这些文件可以被普通用户使用。“/sbin”目录:系统执行文件(二进制),这些文件不打算被普通用户使用。(普通用户仍然可以使用它们,但要指定目录。)“/etc”目录:操作系统的配置文件目录。/etc/rc.d/init.d:系统开机的时候载入的服务程序的scripts的放置点“/dev”目录:设备文件目录。LINUX下设备被当成文件,正常情况下,设备会有一个独立的子目录。这些设备的内容会出现在独立的子目录下。“/lib”目录:根文件系统目录下程序和核心模块的共享库。“/var”目录:存放在操作中被改变的文件:假脱机文件、记录文件、加锁文件、临时文件和页格式化文件等。“/boot”目录:用于启动加载程序的文件。当计算机启动时(如果有多个操作系统,有可能允许你选择启动哪一个操作系统),这些文件首先被装载。这个目录也会包含Linux核(压缩文件vmlinuz)。但Linux核也可以存在别处,只要配置LILO并且LILO知道Linux核在哪儿。用于启动加载程序(LILO或GRUB)“/opt”目录:可选的应用程序。譬如,REDHAT5.2下的KDE(REDHAT6.0下,KDE放在其它的X-WINDOWS应用程序中,主执行程序在/usr/bin目录下)“/tmp”目录:临时文件。该目录会被自动清理干净。“/lost+found”目录:在文件系统修复时恢复的文件。Linux的文件类型文件名Linux文件的名字可以由字母字符、下划线和数字组成,也可以加上句号和逗号。文件名的第一个字符不能是数字,短划线、句点和星号等被系统用作特殊符号的其他符号。用“.”开始的文件为隐藏文件,称为“点文件”。可用“file文件名”来查看文件类型。(1)、压缩的和归档的文件.bz2—使用bzip2压缩的文件.gz—使用gzip压缩的文件.tar—使用tar(tapearchive,磁带归档的简写)压缩的文件,又称tar文件.tbz—用tar和bzip压缩的文件.tgz—用tar和gzip压缩的文件.zip—使用ZIP压缩的文件,在MS-DOS应用程序中常见。多数为Linux压缩的文件使用gzip压缩,因此Linux文件中的.zip归档较少见。(2)、文件格式.au—音频文件.gif—GIF图像文件.html/.htm—HTML文件.jpg—JPEG图像文件.pdf—文档的电子映像;PDF代表PortableDocumentFormat(可移植文档格式).png—PNG图像文件(PortableNetworkGraphic的简写,可移植网络图形).ps—PostScript文件,为打印而格式化过的文件.txt—纯ASCII文本文件.wav—音频文件.xpm—图像文件(3)、系统文件..conf—一种配置文件。配置文件有时也使用.cfg。.lock—锁(lock)文件;用来判定程序或设备是否正在被使用.rpm—RedHat用来安装软件的软件包管理器文件(4)、编程和脚本文件.c—C程序语言的源码文件.cpp—C++程序语言的源码文件.h—C或C++程序语言的头文件.o—程序的对象文件.pl—Perl脚本.py—Python脚本.so—库文件.sh—shell脚本.tcl—TCL脚本常用的Linux文件系统Linux系统核心支持十多种文件系统类型:ext、ext2、ext3、CRAMFS、msdos、umsdos、Vfat、NTFS等。minixlinux:最早使用的文件系统ext2linux和ext3linux:目前常用的文件系统nfs:网络文件系统cramfs:只读文件系统主要内容1、Linux外壳shell2、Linux常用命令Linux常用命令Linux外壳的功能:shell是一种命令解释器,提供了用户和操作系统之间的交互接口。对用户输入的命令,由外壳进行解释,然后将解释的命令送到操作系统去执行。shell可以执行Linux的系统命令,也可以执行应用程序。用户还可以利用外壳编程,执行复杂的命令程序。Linux有多种shell,为用户提供选择。Linux外壳shell常用的shell:bash、ash、csh、ksh、tcsh等。bash是Linux默认使用的shell,它由BrianFox和ChetRamey共同完成的。bash是BourneAgainShell的缩写,内部命令有40个。Bash有如下特点:1)使用方向键查阅已使用过的命令行。2)补全命令行,按Tab键。3)可以使用通配符“?”、“*”。4)有管道命令“|”,用“|”可将多个命令连接起来执行,前面命令的输出是后者的输入。1、ls---文件及子目录名列表语法格式:ls[option][file]如:ls以默认方式显示当前目录下的子目录和文件。ls–a显示所有文件,包括隐藏文件。ls–l以默认方式显示文件属性,包括大小、日期、所有者、权限及名称。ls–F以默认方式显示文件及类型,以“/”结尾的为目录,以“*”结尾的为可执行文件,以“@”结尾的为符号链接。Linux常用命令属性文件数量所有者文件属性符号格式:arwxrwxrwxnownergroupsizedatename例如:drwxr-xr-x2rootroot40962008-3-3bina:文件性质,可以是:d:目录文件;n:l:符号链接文件;(1)对文件指硬连接数b:块类型设备文件;(2)对目录指含的子目录数c:字符型设备文件。r:read,读w:write,写x:execute,执行红色:文件拥有者权限黑色:文件组拥有者权限蓝色:其他用户的权限13)chmod更改访问权限chmod用于改变文件或目录的访问权限。用户用它控制文