1.38k likes | 1.83k Views
嵌入式系统讲义 第 5 章 嵌入式系统软件开发环境与工具. 周国运 2007.9. 第 5 章主要内容. 1 、 Linux 与嵌入式 Linux 概述 2 、 Windows 下的 Linux 环境软件 ---cygwin 3 、 Linux 文件系统结构 4 、 Linux 常用命令 5 、 Linux 文本编辑器 vi 6 、 Linux 编译器 gcc 及编译工具 7 、交叉编译工具的创建. 5.1 Linux 与嵌入式 Linux. 主要内容 1 、 Linux 操作系统的产生 2 、 Linux 操作系统的特点
E N D
嵌入式系统讲义第5章 嵌入式系统软件开发环境与工具 周国运 2007.9
第5章主要内容 1、Linux与嵌入式Linux概述 2、Windows下的Linux环境软件---cygwin 3、Linux文件系统结构 4、Linux常用命令 5、Linux文本编辑器vi 6、Linux编译器gcc及编译工具 7、交叉编译工具的创建
5.1 Linux与嵌入式Linux 主要内容 1、Linux操作系统的产生 2、Linux操作系统的特点 3、Linux操作系统的组成 4、Linux操作系统的内核版本 5、嵌入式Linux
5.1.1 Linux的产生 • Linux诞生背景1984年起,在MIT(美国麻省理工学院)的支持下,Richard Stallman创建了自由软件基金会FSF(Free Software Foundation)。 FSF的主要项目是GNU(GNU’s Not Unix),它的目标是建立可自由发布和可移植的类Unix操作系统。同时Richard拟定了通用公共许可证GPL(General Public License)作为GNU的版权声明。
从1984年到1991年,GNU完成了与UNIX兼容的大部分外围工作,包括OS的shell、C和C++编译器gcc/gcc++等内容,就是没有自己的内核。从1984年到1991年,GNU完成了与UNIX兼容的大部分外围工作,包括OS的shell、C和C++编译器gcc/gcc++等内容,就是没有自己的内核。 • Linux内核的诞生1991年,芬兰赫尔辛基大学的学生Linus Torvald 为实习MINIX(教学用的微型 UNIX)编写了一个比MINIX功能更强、能够在低档微机上操作系统内核,将其命名为Linux。 • GNU项目的实现Linux内核的诞生,为GNU项目划上了一个圆满的句号,从此就诞生了GNU(类UNIX),名字就是Linux
Linux所包含的内容 目前大多数人用它来表示以Linux内核为基础的整个操作系统。从这种意义讲,Linux指的是源码开放,包含内核和系统工具、完整的开发环境和应用的类Unix操作系统。
5.1.2 Linux的主要特点 • 开放性:系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。 • 多用户:系统资源可以被不同用户使用,每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。 • 多任务:计算机同时执行多个程序,而且各个程序的运行互相独立。
5.1.2 Linux的主要特点(2) • 良好的用户界面 :两种界面:用户界面和系统调用。Linux还为用户提供了图形用户界面。与Windows类似。 • 设备独立性:Linux把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。 • 丰富的网络功能:完善的内置网络是Linux一大特点。
5.1.2 Linux的主要特点(3) • 可靠的安全系统:Linux采取了许多安全技术措施,包括对读、写控制、带保护的子系统、审计跟踪、核心授权等,为网络多用户环境中的用户提供了必要的安全保障。 • 良好的可移植性:将操作系统从一个平台(一种微处理器)转移到另一个平台,仍然能按其自身的方式运行的能力。能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。
5.1.3 Linux的组成 • LINUX的内核:含有设备驱动程序、系统服务等程序,具有中断处理、进程调度、原语管理等功能。 • LINUX SHELL:Shell是系统的用户界面,它是一个命令解释器,它解释用户输入的命令,并且把它们送到内核。提供了用户与内核进行交互操作的一种接口。
5.1.3 Linux的组成(2) • LINUX文件系统:是文件存放在磁盘等存储设备上的组织方法。Linux能支持多种目前许多的文件系统,如EXT2、EXT3、FAT、VFAT、ISO9660、NFS、SMB等。 • LINUX应用系统:标准的Linux系统都有一整套称为应用程序的程序集,包括文本编辑器、编程语言、X Window、办公套件、Internet工具、数据库等。
5.1.4 Linux的内核版本 • Linux内核采用双树结构:一棵树是稳定树,主要用于发行;另一棵树是非稳定树或开发树,用于产品开发、改进、测试。 • 源代码版本序号形式:为x.y.zz结构,其中x为主版本号,代表核心的改动升级;y为次版本号,表示功能性的改动;zz为末版本号,表示BUG的改动。其中x介于0到9之间,yy和zz则介于0到99之间。
5.1.4 Linux的内核版本(2) • 双树区分:对于稳定树来说,y是偶数;对于开发树来说,y是比相应稳定树大1的奇数。例2.4.18等为稳定内核版本。
5.1.5 嵌入式Linux操作系统概述 一、嵌入式Linux操作系统 利用Linux搭建嵌入式操作系统是近年来最令人振奋的方案之一,Linux将来可能会成为嵌入式系统主流操作系统。 • 嵌入式Linux是按照嵌入式操作系统的要求而设计的一种小型操作系统。由一个内核及一些根据需要进行定制的系统模块组成。其kernel很小,一般只有几百kB左右。即使加上其它必须的模块和应用程序,所需的存储空间也很小。它具有多任务、多进程的系统特征,有些还具有实时性 。
二、嵌入式Linux的移植 • 嵌入式Linux需要移植:对于嵌入式Linux,一般都不是原封不动地使用,而是要考虑各种具体系统的特点,有针对性地对Linux内核加以裁减、修改和补充。 • 小型嵌入式Linux系统:只需要引导程序、Linux微内核(由内存管理、进程管理和事务处理构成)、初始化进程3个基本元素。
嵌入式Linux系统可以扩展:可以加上文件系统(支持十多种文件系统类型,如ext2、ext3、NFS,cramfs等)、TCP/IP网络支持、存储更多数据用的磁盘功能、提供设计精简的应用程序。嵌入式Linux系统可以扩展:可以加上文件系统(支持十多种文件系统类型,如ext2、ext3、NFS,cramfs等)、TCP/IP网络支持、存储更多数据用的磁盘功能、提供设计精简的应用程序。
三、嵌入式Linux的主要特点 • 是精简标准Linux的内核 • 适应于多种CPU和多种硬件平台 • 性能稳定、裁剪性很好、开发和使用都很容易 • 可以使用Unix或Linux在PC上的应用程序。
四、嵌入式Linux操作系统的优势 (1)支持多种体系结构 支持x86, ARM, IPS,APARC等多种CPU,已被移植到数十种硬件平台上。 (2)多任务,内核稳定,可定制,源代码开放 (3)强大的网络支持功能 支持TCP/IP协议,及其上的高层协议,如ftp, Telnet, http等。支持Socket网络编程。
(4)支持多文件系统 linux支持FAT32, EXT2, EXT3等多种文件系统,支持虚拟文件系统,同时还可以连接其它的文件系统,如ROMFS,JFFS等文件系统。 (5)驱动丰富、支持大量外设 linux支持所有的PC外设,具有丰富的外设驱动程序。
(6)Linux具备一整套工具链 容易自行建立嵌入式系统的开发环境、交叉运行环境。 可以跨越嵌入式系统开发中,需要使用仿真工具的障碍。 对于Linux操作系统,可以直接使用内核调试器来做操作系统的内核调试和查错。
5.2 Windows下的Linux环境软件---Cygwin 主要内容 1、 Cygwin 软件功能 2、 Cygwin 软件下载 3、 Cygwin 软件安装
5.2.1 Cygwin软件功能 Cygwin是一个在Windows平台上运行的、模拟Linux环境的软件,并且该软件也将GNU工具移植到了Win32系统上。 安装了Cygwin后,启动Cygwin,Windows系统就模拟出一部Linux主机,用户便可像在纯Linux下一样使用Linux及其各种工具软件、应用软件等。
5.2.1 Cygwin软件功能(2) 该软件对于刚开始使用Linux的人来说,是极好的选择,用户可以方便地回到Windows下查看文件和目录结构,也可以在Windows下进行各种文件操作,如复制删除文件、移动文件、解压文件、查找文件等。
5.2.2 Cygwin软件下载 Cygwin是Cygwin solutions公司开发的自由软件,可以到公司网站上免费下载,包括Cygwin和各种开发工具的源代码程序 。 Cygwin solutions公司的网址是:http:// www.cygwin.com/。在网页上单击“Install Cygwin Now”,会先下载一个叫做setup.exe的安装程序,运行Cygwin目录下的“setup.exe”,会出现一个下载安装的界面,有三项:“Intall from Internet”、
有三项:“Intall from Internet”、“Download without Intalling”、“Intall from Local Directory”,一般应选择第二项,先下载,再安装,不进行直接安装。
5.2.3 Cygwin软件安装 1、启动安装 再次运行Cygwin目录下的“setup.exe”,选择第三项“Intall from Local Directory”,进行本地安装。 2、选择安装、使用范围 当出现如下界面时,(1)需要选择安装目录,一般不安装在C盘,注意磁盘空间应不少于2GB;(2)选择使用范围和文本文件类型,选择默认项:“All Users”、“Unix” 即可。
3、选择安装软件包 每种软件包有“Default”、“Install”、“Reinstall”、“Uninstall”4种安装选择,可以根据需要逐一选择。 一般可以做如下选择: (1)选择All 为“Default” (2)对如下软件包选择“Install”: Admin: 基本服务工具 Archive: 压缩、解压工具 Base: 基本的Linux工具 Libs: 系统库文件
Untils: 实用工具 Editor: 编辑器集 Net: 网络工具 Shall: 外壳工具集
5. 3 Linux文件系统 主要内容 1、Linux文件系统 2、Linux文件系统结构
5.3.1 Linux文件系统概述 • 文件结构是文件存放在磁盘等存贮设备上的组织方法。 文件结构主要体现在对文件和目录的组织上。目录提供了管理文件的一个方便而有效的途径。 • linux使用标准的目录结构,在安装的时候,安装程序就已经为用户创建了文件系统和完整而固定的目录组成形式,并指定了每个目录的作用和其中的文件类型
C D E 5.3.2 Linux与DOS文件系统区别 Linux文件系统是一个目录树结构,最上层是根目录,其他的所有目录都是从根目录出发而生成的。 / /sbin /usr /etc /root /lib /hom /mnt Dos文件系统也采用目录树的结构,但DOS以每个分区为树根,有几个分区就有几个树型结构。
Linux下,任何一个目录都可以是一个分区。因此,在分区时,必须将一个分区安装在树根下面。 Linux下,任何一个目录都可以是一个分区。因此,在分区时,必须将一个分区安装在树根下面。 Linux不仅将分区安装为一个目录,而且还将所有的硬件设备都安装成一个个设备文件。对设备的操作是通过文件的操作完成的。
5.3.3 Linux文件系统结构 • “/”根目录: 包含基本的操作系统和维护工具。这个目录的文件可以启动系统,并且需要的话,可以完成紧急维护和修复的功能。 • “/usr”目录: 包含所有的命令、程序库、文档和其它文件。这些文件在正常操作中不会被改变的。这个目录也包含你的Linux发行版本的主要的应用程序。 • “/var”目录: 存放在操作中被改变的文件:假脱机文件、记录文件、加锁文件、临时文件和页格式化文件等。正常
“/home”目录: 包含用户的文件:参数设置文件、个性化文件、文档、数据、EMAIL、缓存数据等。这个目录在系统省级时应该保留。 • “/mnt”目录: 一般用来临时挂载别的文件系统,如FAT32,NTFS等 • “/bin”目录: 系统启动时需要的执行文件(二进制),这些文件可以被普通用户使用。
“/sbin”目录: 系统执行文件(二进制),这些文件不打算被普通用户使用。(普通用户仍然可以使用它们,但要指定目录。) • “/etc”目录: 操作系统的配置文件目录。 • “/root”目录: 系统管理员(也叫超级用户或根用户)的Home目录。 • “/dev”目录: 设备文件目录。LINUX下设备被当成文件,正常情况下,设备会有一个独立的子目录。这些设备的内容会出现在独立的子目录下。
“/lib”目录: 根文件系统目录下程序和核心模块的共享库。“/lib”目录: 根文件系统目录下程序和核心模块的共享库。 • “/boot”目录: 用于启动加载程序的文件。当计算机启动时(如果有多个操作系统,有可能允许你选择启动哪一个操作系统),这些文件首先被装载。这个目录也会包含Linux核(压缩文件 vmlinuz)。但Linux核也可以存在别处,只要配置LILO并且LILO知道Linux核在哪儿。 用于启动加载程序(LILO或GRUB)
“/opt”目录: 可选的应用程序。譬如,REDHAT 5.2下的KDE (REDHAT 6.0下,KDE放在其它的X-WINDOWS应用程序中,主执行程序在/usr/bin目录下) • “/tmp”目录 : 临时文件。该目录会被自动清理干净。 • “/lost+found”目录:在文件系统修复时恢复的文件。
5.3.4 挂载文件系统 • 将一个文件系统的顶层目录挂到另一个文件系统的子目录上,使它们成为一个整体,称为挂载。把该子目录称为挂载点。 • 当一个机器上装了多个操作系统,比如在Linux工作时需访问Windows下的C盘,则需要在Linux上挂载 • 采用mount命令挂载,umount命令卸载。 • 为避免每次系统启动时都挂接,可写入相应命令到/etc/fstab。
加挂FAT32系统 首先进入/mnt目录,新建所挂接分区对应目录,例winD mount –t vfat –o iocharset=cp936 /dev/hda2 /mnt/winD 其中,hda2为D盘对应的设备文件,可通过“fdisk -l”命令或“系统工具/硬件浏览器”中查看各盘对应的设备文件。 • 加挂ntfs系统 -t ntfs • 加挂U盘上的文件系统 mount –t vfat –o iocharset=cp936 /dev/sda1 /mnt/udisk
5.3.5 常用的Linux文件系统 Linux系统核心支持十多种文件系统类型: ext、ext2、ext3、CRAMFS、msdos、umsdos、Vfat、NTFS等。 • minix linux:最早使用的文件系统 • ext2 linux和ext3 linux:目前常用的文件系统 • nfs: 网络文件系统 • cramfs: 只读文件系统
5.3.6 Linux的文件类型 文件名 • Linux文件的名字可以由字母字符、下划线和数字组成,也可以加上句号和逗号。 • 文件名的第一个字符不能是数字,短划线、句点和星号等被系统用作特殊符号的其他符号。 • 用“.”开始的文件为隐藏文件,称为“点文件”。 • 可用“file 文件名”来查看文件类型。
(1)、压缩的和归档的文件 • .bz2 — 使用 bzip2 压缩的文件 • . gz — 使用 gzip 压缩的文件 • .tar — 使用 tar(tape archive,磁带归档的简写)压缩的文件,又称 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 代表 Portable Document Format(可移植文档格式) • .png — PNG 图像文件(Portable Network Graphic 的简写,可移植网络图形) • .ps — PostScript 文件,为打印而格式化过的文件 • .txt — 纯 ASCII 文本文件 • .wav — 音频文件 • .xpm — 图像文件
(3)、系统文件 • . .conf — 一种配置文件。配置文件有时也使用 .cfg。 • .lock — 锁(lock) 文件;用来判定程序或设备是否正在被使用 • .rpm — Red Hat 用来安装软件的软件包管理器文件
(4)、编程和脚本文件 • .c — C 程序语言的源码文件 • .cpp — C++ 程序语言的源码文件 • .h — C 或 C++ 程序语言的头文件 • .o — 程序的对象文件 • .pl — Perl 脚本 • .py — Python 脚本 • .so — 库文件 • .sh — shell 脚本 • .tcl — TCL 脚本
5. 4 Linux常用命令 主要内容 1、Linux外壳shell 2、Linux常用命令
5.4.1 Linux外壳shell Linux外壳的功能: • shell是一种命令解释器,提供了用户和操作系统之间的交互接口。对用户输入的命令,由外壳进行解释,然后将解释的命令送到操作系统去执行。 • shell可以执行Linux的系统命令,也可以执行应用程序。用户还可以利用外壳编程,执行复杂的命令程序。 Linux有多种shell,为用户提供选择。
常用的shell: bash、ash、csh、ksh、tcsh等。 bash是Linux默认使用的shell,它由Brian Fox 和 Chet Ramey共同完成的。 bash是Bourne Again Shell的缩写,内部命令有40个。Bash有如下特点: 1)使用方向键查阅已使用过的命令行。 2)补全命令行,按Tab键。 3)可以使用通配符“?”、“*”。 4)有管道命令“|”,用“|”可将多个命令连接起来执行,前面命令的输出是后者的输入。
5.4.2 Linux常用命令 1、ls---文件及子目录名列表 语法格式:ls [option] [file] 如: ls 以默认方式显示当前目录下的子目录和文件。 ls –a 显示所有文件,包括隐藏文件。 ls –l 以默认方式显示文件属性,包括大小、日期、所有者、权限及名称。 ls –F 以默认方式显示文件及类型,以“/”结尾的为目录,以“*”结尾的为可执行文件,以“@”结尾的为符号链接。