刘彦文嵌入式系统实践教程CH1清华大学出版社

上传人:大米 文档编号:568274776 上传时间:2024-07-23 格式:PPT 页数:59 大小:993KB
返回 下载 相关 举报
刘彦文嵌入式系统实践教程CH1清华大学出版社_第1页
第1页 / 共59页
刘彦文嵌入式系统实践教程CH1清华大学出版社_第2页
第2页 / 共59页
刘彦文嵌入式系统实践教程CH1清华大学出版社_第3页
第3页 / 共59页
刘彦文嵌入式系统实践教程CH1清华大学出版社_第4页
第4页 / 共59页
刘彦文嵌入式系统实践教程CH1清华大学出版社_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《刘彦文嵌入式系统实践教程CH1清华大学出版社》由会员分享,可在线阅读,更多相关《刘彦文嵌入式系统实践教程CH1清华大学出版社(59页珍藏版)》请在金锄头文库上搜索。

1、 嵌入式系统实践教程 (S3C2410+LINUX版) 刘彦文 2013-6-21 嵌入式系统实践教程 刘彦文 编著 清华大学出版社 2013年3月第1章 Linux及嵌入式开发系统组成简介 1.1 Linux起源及发展1.1.1UNIX和GNU软件UNIX最初是由美国电报电话(AT&T)公司下属的贝尔实验室开发的。1969年,贝尔实验室的研究人员创建了UNIX的第一个版本,当时称为UNICS(Uniplexed Operating and Computing System,单操作和计算机系统),由这个系统演化为之后通用的UNIX操作系统。 1984年,工程师Richard Stallman开

2、始着手GNU计划,该计划致力于创建一个类UNIX(UNIX-like)的、任何人都可以免费发布和使用的、不受UNIX名字和源代码私有权限制的操作系统和开发环境,开发环境主要包括:高质量的编译器、命令行make环境、实用程序等。 Richard Stallman现在管理着一个免费的软件基金会(Free Software Foundation,FSF),他和他的支持者们创建的许多程序,广泛地应用于商业的和开放源码的UNIX版本中。 GNU代表GNUs Not Unix,是一个首字母递归的缩略词。GNU项目已经提供了许多UNIX系统上应用程序的仿制品,所有这些程序,统称为GNU软件。1.1.2Lin

3、ux的发展 Linux是一个可以自由使用、学习、修改、发布的,开源(open source)的,类UNIX内核的一种操作系统的内核。 Linux是由芬兰赫尔辛基大学的研究生Linus Torvalds在1991年开发的。其开发的目的是,保证Linux除了包含可以自由发布的代码外,不会集成任何专有代码,也就是我们通常说的源码全部公开,并可以免费使用。Linux内核遵循GNU GPL条款。 Linux只是一个操作系统的内核,而操作系统的shell、文件系统和工具软件等等程序的编写,主要由因特网上GNU支持者、UNIX程序员完成,并使其逐渐发展成为一个完整的、强大的系统。 Linux的出现,使台式机

4、具备了以前需要花费数千美元购买UNIX才能获得的功能。 几乎所有为UNIX编写的程序,都可以在Linux上编译运行;一些专用于UNIX商业版本的应用软件,可以不加改变地以二进制可执行文件形式在Linux上运行。 Linux的发展是许多人共同努力的结果。操作系统内核本身仅仅是一个可用的操作系统的一小部分。Linux内核以外的大量程序,是由许许多多的编程人员,特别是以前为UNIX编程的、GNU项目的程序员编写,并免费、自由地以源代码形式发布的。 GNU项目为Linux提供了许多UNIX系统上应用程序的仿制品,所有这些GNU软件,都是在遵守GPL条款下发布的,常用的软件有:n GCC:GNU编译器集

5、,包含GNU C编译器。n G+:C+编译器,是GCC的一部分。n GDB:源代码级调试器。n GNU make:UNIX make免费版。n bash:命令行解释器,或称外壳,shell的一种。n GNU Emacs:文本编译器及环境。1.2 内核、shell、文件系统及实用程序1.2.1Linux内核 Linux内核版本可以分为两大类:一类是专门用于开发的试验版本,另一类是稳定的产品版本。Linux内核版本号由主版本号、次版本号及序列号组成。次版本号是奇数的为试验版,偶数的为产品版。 例如,Linux 2.5.x,次版本号是奇数,是试验版内核;而Linux 2.6.x,次版本号是偶数,是产

6、品版。 内核是Linux系统的最底层,内核提供了系统的核心功能,并允许进程以一种有序的、高效的方式访问硬件。内核控制进程、I/O设备、文件系统的操作,内核还管理着内存。内核支持系统以多用户、多任务模式运行,并支持这些运行模式对资源的有序访问。 能够在一种体系结构处理器(如Intel x86)上运行的内核,不能在另一种体系结构处理器(如ARM)上直接运行,必须经过移植,才能在另一种体系结构处理器上运行。内核代码的绝大部分是用标准的C语言编写的,仅有很少一部分与处理器相关的代码,是用汇编语言编写的,这给代码移植带来了很大的方便。 在Linux操作系统命令提示符下,使用cat命令能够查看并显示当前系

7、统的内核版本信息: rootvm-dev # cat /proc/version Linux version 2.6.9-42.ELsmp (bhcompilehs20-bc1-) (gcc version 3.4.6 20060404 (Red Hat 3.4.6-2) #1 SMP Wed Jul 12 23:27:17 EDT 20061.2.2shell简介 shell是什么 shell作为用户与Linux内核的接口程序,称为外壳。根(root)用户使用的shell在内核 启动后启动,普通用户使用的shell,在用户登录进入系统时启动。内核能够接收用户在命令行提示符后输入的命令和参数。

8、shell在Linux系统中的位置如图1.1所示。图1.1 shell在Linux中的位置 图1.1中,bash、csh是不同种类shell中较为常用的两种shell。 shell是一个命令行解释器,也称为命令语言解释器(command-language interpreter),它拥有自己内建的shell命令集。 使用shell能够让用户与操作系统交互,当执行用户命令或者在提示符后进行输入时,就会与shell进行交互。shell将用户的命令和键盘输入的参数转化成内核能够理解的内容,内核响应并处理,处理结果送shell,再输出给用户。 shell为系统提供了内核之上的一层功能,可以直接用它来管

9、理和运行系统,shell也能被系统中其他实用程序(utilities)和应用程序(application programs)所调用。 shell等待并接收提示符后用户输入的命令和参数,然后解释并传送给内核。 有些常用命令,比如打印当前工作目录命令pwd,shell内部包含这些命令对应的程序,就像MS-DOS的内部命令那样,shell将直接转去执行对应的程序; 另外更多的命令,比如拷贝cp和移动rm命令,类似于MS-DOS的外部命令,命令对应的程序不在shell内部,而是文件系统中某个目录下的单独的可执行文件。 当用户在命令行提示符后输入命令和参数,按下回车键以后,shell将寻找命令对应的可执

10、行文件,然后装入内存并执行;对于用户编写的应用程序,以及用shell语言编写的脚本程序,同样可以通过指定文件名,由shell读入并执行。 Linux根目录下的bin子目录,通常存放着许多系统自带的、用户命令对应的二进制可执行文件。 例如cp和rm命令对应的文件是: rootvm-dev bin# ls /bin/cp -l -rwxr-xr-x 1 root root 59100 2006-04-11 /bin/cp rootvm-dev bin# ls /bin/rm -l -rwxr-xr-x 1 root root 34952 2006-04-11 /bin/rm 在/bin目录下,还可

11、以看到系统自带的各种版本的shell程序文件、用于编辑文件的vi程序文件,以及许多用户命令对应的可执行文件。 Linux根目录下的sbin子目录,通常存放着许多系统自带的、系统管理员命令对应的二进制可执行文件,例如用于划分物理磁盘的fdisk和用于配置网络接口的ifconfig命令对应的文件: rootvm-dev sbin# ls /sbin/fdisk -l -rwxr-xr-x 1 root root 83024 2006-05-25 /sbin/fdisk rootvm-dev sbin# ls /sbin/ifconfig -l -rwxr-xr-x 1 root root 6602

12、4 2006-06-07 /sbin/ifconfig 在shell内部,有shell自带的命令所对应的程序,可以通过输入help命令,查看用户使用的shell种类及该shell内部自带的命令有哪些。 rootvm-dev sbin# help shell启动 根用户使用的shell,在系统启动时,使用系统指定的shell,自动启动。 普通用户在登录进入系统时,系统会启动指定种类的shell。 所有用户在系统运行过程中,可以改变当前使用的shell,成为另一种shell,例如登录时使用的shell种类为bash,用户可以改为tcsh。 Linux是一个多用户系统,系统中每个用户可以使用一个与其

13、他用户不同的shell。只有当用户退出Linux系统时,shell运行才结束。 常用的shell Linux和UNIX系统里有许多种类不同的shell可以使用,例如bash、sh、tcsh、csh、ash、bsh、ksh、zsh等等,它们中的大多数都是从sh shell演变而来的。最常用的三种shell是bash、csh和ksh。 Linux系统中,默认安装的总是GNU工具集中的bash(GNU Bourne Again shell),它是开源的并且可以被移植到几乎所有的类UNIX系统上。 可以使用如下命令来查看用户主机使用的Linux中有哪些shell,shell的链接及当前使用的shell

14、的版本号。 rootvm-dev bin# ls *sh ash bash bsh csh ksh sh tcsh zshrootvm-dev bin# ls -l *sh-rwxr-xr-x1 root root 98356 2004-06-16 ash-rwxr-xr-x1 root root 616248 2006-04-13 bashlrwxrwxrwx 1 root root 3 2008-03-30 bsh - ashlrwxrwxrwx 1 root root 4 2008-03-30 csh - tcsh-rwxr-xr-x1 root root 183492 2005-08-

15、08 kshlrwxrwxrwx 1 root root 4 2008-03-30 sh - bash-rwxr-xr-x 1 root root 307488 2004-09-22 tcsh-rwxr-xr-x 1 root root 453836 2005-06-28 zsh rootvm-dev bin# /bin/bash -version GNU bash, version 3.00.15(1)-release (i386-redhat-linux-gnu) Copyright (C) 2004 Free Software Foundation, Inc. 1.2.3 文件系统 文件

16、系统是Linux系统的一个组件,它能够让用户以统一的方式查看、组织以及保护存储设备上的文件和目录,并与其进行交互。 Linux环境中的文件,具有特别重要的意义,因为它们为操作系统服务并为设备操作提供了一个简单而一致的接口。在Linux中,一切都可以看作文件,包括硬件设备在内。 1.2.4 实用程序 实用程序(utilities)也是Linux系统的一个组件。实用程序是一些可执行的程序,用来帮助用户在系统上进行工作。例如,用于Internet定位的Web浏览器、文字处理程序、编辑程序、e-mail程序,以及除了shell内部命令外,其他Linux命令对应的程序,都可以称为实用程序。1.3 选择L

17、inux的理由 1.3.1Linux是成熟的、广泛使用的操作系统 1.3.2 开源软件带来的优点 一些对安全敏感的产品,比如用于航天、军事、银行等方面的产品,产品开发者更希望使用操作系统本身的源代码是可见的,而不希望使用由二进制可执行文件组成的操作系统。 使用开源的操作系统,如果需要,开发者可以查阅操作系统的某一段代码,理解它的含义及产生的行为。这样做的好处是,对于开发过程中产生的错误,容易区分是系统软件引起的,还是应用软件引起的。 使用开源软件,便于将Linux操作系统从一种处理器体系结构,移植到另一种处理器体系结构。 1.3.3 免费软件带来的优点 1.3.4Linux得到了众多硬、软件厂

18、商的支持 目前常见的32位以上、带MMU的嵌入式微处理器,几乎都得到Linux的支持。 目前Linux已经移植到几十种不同体系结构的处理器上;支持200多种不同的评估板;支持200多种网络适配器;支持5家厂商的闪存和10种以上的USB存储设备及各种各样的众多外设。 1.3.5 使用Linux的不足之处1.4 Linux环境嵌入式开发系统组成简介1.4.1Linux环境嵌入式开发系统组成 图1.2 Linux环境嵌入式开发系统组成 1.4.2 主机(Host) 图1.2中主机在不同的资料中也称为宿主机、Linux宿主机、Linux工作站、桌面机,本书统一称为主机。 主机可以是基于80x86的普通

19、台式PC机或笔记本电脑,但是普通笔记本电脑通常不带串口,可以选用与串口电缆连接在一起的USB口转串口的部件。 1.4.3 目标板(Target) 目标板也称为开发板、评估板、开发平台实验板、目标平台、目标机等,本书通常称为目标板。在学习或开发阶段,目标板指的是购买来的用于做实验,或为了开发最终产品而运行、调试程序的板、卡或实验箱。例如基于ARM920T内核的S3C2410开发平台。对于从事某项产品研发、最终要设计出硬件产品的项目,最终设计出的硬件产品也称为目标板。 1.4.4 主机与目标板的连接 通常主机与目标板连接的端口有串行口和以太网端口;有时主机并行端口,也就是连接打印机的端口,通过JT

20、AG电缆连接到目标板的JTAG端口。 串行口也称为串行端口、RS-232C、COM口、串口; 以太网端口也称为网口、网络端口; 并行端口也称为并口。 1.4.5 主机中运行的程序 软件开发过程中,主机运行的程序主要是Linux操作系统,另外还有交叉编译器等工具软件。主机中运行的Linux操作系统,就是通常说的Linux操作系统,也称为Linux发行版(flavor)或发行套件,也称为发布版。 主机中的交叉编译器等工具软件,通常不包含在Linux操作系统内部,可以从网上下载,或者使用购买目标板时厂商附带的软件。 在Linux支持下,主机中运行的交叉编译器,会把用户编写的源程序,经过编译、连接等步

21、骤,产生出目标板上可执行的二进制代码文件。如果目标板是基于ARM内核的微处理器,那么可执行文件的代码是ARM机器指令代码。 minicom程序是能够在主机Linux环境下运行的一个仿真终端程序,这个程序把主机Linux下的一个窗口和主机的键盘,作为目标板终端,这个终端由主机通过串口连接到目标板串口。目标板运行装载引导程序或者Linux时,默认的终端就是这个终端。 主机在某些时候,不运行Linux,而是运行Windows,比如从主机传送一些文件(装载引导程序、内核、根文件系统、应用程序等)到目标板,并且要把这些文件烧写到目标板的闪存(Flash)。这时通常主机工作在Windows环境,运行的仿真

22、终端程序是“超级终端”,目标板通过串口连接,把主机超级终端窗口和主机键盘,作为它的终端。 1.4.6 目标板中运行的程序 购买回来的目标板,厂商通常在目标板的闪存中预装了以下程序或文件:n装载引导程序nLinux内核,通常包含一种默认的shell,如bash或其他种类的shellnLinux根文件系统n应用程序 装载引导程序通常是目标板加电或RESET以后,第一个从闪存装入内存并运行的程序,这个程序为随后装入的Linux内核作了相应的初始化工作。然后装载引导程序从闪存装入Linux内核到内存,并把运行权交给Linux内核。 Linux内核从闪存装入根文件系统到内存,完成了目标板Linux启动运

23、行的过程。之后目标板可能装入并启动某个指定的应用程序,也可能在目标板Linux内核和shell支持下,等待用户从终端输入的命令和参数。 比较常用的术语,如嵌入式Linux,通常指的是目标板上的Linux内核、Linux根文件系统和应用程序这三部分的总体。它们也被称为嵌入式Linux发行版或发行套件。 运行在基于ARM体系结构处理器目标板的嵌入式Linux,组成Linux的可执行文件代码是ARM机器指令代码;运行在PowerPC体系结构处理器目标板的嵌入式Linux,是PowerPC机器指令代码。 同样是ARM体系结构的嵌入式Linux,不同的目标板如果外设种类不同,嵌入式Linux内核中的驱动

24、程序也不同。 同样是ARM体系结构,微处理器系列号不同,例如S3C2410和S3C6410,嵌入式Linux内核中与处理器相关的代码,也不完全相同。 1.4.7 开发系统附带的光盘文档 用户购买开发系统所附带的光盘中,通常会有支持目标板运行Windows CE、C/OS或Linux操作系统的对应文档。 同一台目标板,购买时如果预装了嵌入式Linux,那么买回来默认的开发环境就是Linux;如果预装的是Windows CE,那么默认的开发环境就是Windows CE。 当然用户可以将光盘中的文件,通过主机传送到目标板并烧写到闪存,也就是说用户可以通过改变目标板闪存已烧写的文件,来改变开发环境。

25、光盘中支持Linux操作系统的文档,通常包含的文件主要有:n用于改变目标板开发环境的文件,如装载引导程序、内核、根文件系统、应用程序等。另外还有将这些文件从主机传送到目标板的传送、烧写工具软件;n用于改变主机开发环境的支持文件,如交叉编译器、库文件、头文件、调试器等。不同体系结构处理器的目标板,主机使用的交叉编译器也不同。另外还有安装程序等;n已经通过调试的一些实验例程,目的在于通过这些例程,告诉用户如何针对目标平台中的设备,编写应用程序;n使用说明书,包括实验指导书、目标板硬件原理图、目标板使用的芯片的文档、目标板印刷电路板图等,也可能带有硬件说明书;n一些工具软件、图形用户接口,如Qt等。

26、1.5 主机安装的Linux发行版 主机安装的Linux发行版或发行套件,就是普通的可以在PC机或笔记本电脑上运行的Linux。用户可以选择使用不同公司提供的产品,如Red Hat Enterprise Linux(RHEL)、SuSE Linux Enterprise Server(SLES)、Ubuntu、Debian GNU/Linux等等。 1.5.1 常用的Linux发行版 Red Hat Enterprise Linux(RHEL) Fedora Linux Ubuntu Linux Debian GNU/Linux 1.5.2Linux发行版在主机的安装方式 主机单独安装Linux 主机同时安装Windows和Linux 在Windows下安装Linux虚拟机图1.3 Windows下VMWare运行Linux的窗口 在Windows下执行Linux命令 Cygwin软件是一个开源项目的产品,它的核心是一个DLL(Dynamic Link Library,动态链接库),其中包含了Windows缺少的POSIX函数的实现,它提供了完整的类Linux环境。 END

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号