刘彦文-OMAP35XX嵌入式系统实践教程第1章Linux及嵌入式.ppt_第1页
刘彦文-OMAP35XX嵌入式系统实践教程第1章Linux及嵌入式.ppt_第2页
刘彦文-OMAP35XX嵌入式系统实践教程第1章Linux及嵌入式.ppt_第3页
刘彦文-OMAP35XX嵌入式系统实践教程第1章Linux及嵌入式.ppt_第4页
刘彦文-OMAP35XX嵌入式系统实践教程第1章Linux及嵌入式.ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2013/01,OMAP35xx(EL-ARM860) 嵌入式系统实践教程 刘彦文(),说明:本教程可作为EL-ARM860实验平台实验内容讲授使用。 授课可使用刘彦文编著,清华大学出版社出版的嵌入式系统原理及接口技术教材。,第章 Linux及嵌入式 开发系统组成简介,1.1 Linux起源及发展,1.1.1 UNIX和GNU软件 UNIX最初是由美国电报电话(AT&T)公司下属的贝尔实验室开发的。1969年,贝尔实验室的研究人员创建了UNIX的第一个版本,当时称为UNICS(Uniplexed Operating and Computing System,单操作和计算机系统),由这个系统演化为之后通用的UNIX操作系统。 早期的UNIX版本都是具有商业性质的,如IBM的AIX、HP的HP-UX和SUN的Solaris,通常都要支付一定的费用才能获得运行该操作系统的许可。,1984年,工程师Richard Stallman开始着手GNU计划,该计划致力于创建一个类UNIX(UNIX-like)的、任何人都可以免费发布和使用的、不受UNIX名字和源代码私有权限制的操作系统和开发环境,开发环境主要包括:高质量的编译器、命令行make环境、实用程序等。 Richard Stallman现在管理着一个免费的软件基金会(Free Software Foundation,FSF),他和他的支持者们创建的许多程序,广泛地应用于商业的和开放源码的UNIX版本中。,GNU代表GNUs Not Unix,是一个首字母递归的缩略词。GNU项目已经提供了许多UNIX系统上应用程序的仿制品,所有这些程序,统称为GNU软件。,1.1.2 Linux的发展 Linux是一个可以自由使用、学习、修改、发布的,开源(open source)的,类UNIX内核的一种操作系统的内核。 Linux是由芬兰赫尔辛基大学的研究生Linus Torvalds在1991年开发的。其开发的目的是,保证Linux除了包含可以自由发布的代码外,不会集成任何专有代码,也就是我们通常说的源码全部公开,并可以免费使用。Linux内核遵循GNU GPL条款。,Linux只是一个操作系统的内核,而操作系统的shell、文件系统和工具软件等等程序的编写,主要由因特网上GNU支持者、UNIX程序员完成,并使其逐渐发展成为一个完整的、强大的系统。 Linux的出现,使台式机具备了以前需要花费数千美元购买UNIX才能获得的功能。 几乎所有为UNIX编写的程序,都可以在Linux上编译运行;一些专用于UNIX商业版本的应用软件,可以不加改变地以二进制可执行文件形式在Linux上运行。,Linux的发展是许多人共同努力的结果。操作系统内核本身仅仅是一个可用的操作系统的一小部分。Linux内核以外的大量程序,是由许许多多的编程人员,特别是以前为UNIX编程的、GNU项目的程序员编写,并免费、自由地以源代码形式发布的。,GNU项目为Linux提供了许多UNIX系统上应用程序的仿制品,所有这些GNU软件,都是在遵守GPL条款下发布的,常用的软件有: GCC:GNU编译器集,包含GNU C编译器。 G+:C+编译器,是GCC的一部分。 GDB:源代码级调试器。 GNU make:UNIX make免费版。 bash:命令行解释器,或称外壳,shell的一种。 GNU Emacs:文本编译器及环境。,1.2 内核、shell、文件系统 及实用程序,1.2.1 Linux内核 Linux内核版本可以分为两大类:一类是专门用于开发的试验版本,另一类是稳定的产品版本。Linux内核版本号由主版本号、次版本号及序列号组成。次版本号是奇数的为试验版,偶数的为产品版。 例如,Linux 2.5.x,次版本号是奇数,是试验版内核;而Linux 2.6.x,次版本号是偶数,是产品版。,内核是Linux系统的最底层,内核提供了系统的核心功能,并允许进程以一种有序的、高效的方式访问硬件。内核控制进程、I/O设备、文件系统的操作,内核还管理着内存。内核支持系统以多用户、多任务模式运行,并支持这些运行模式对资源的有序访问。,能够在一种体系结构处理器(如Intel x86)上运行的内核,不能在另一种体系结构处理器(如ARM)上直接运行,必须经过移植,才能在另一种体系结构处理器上运行。内核代码的绝大部分是用标准的C语言编写的,仅有很少一部分与处理器相关的代码,是用汇编语言编写的,这给代码移植带来了很大的方便。,在Linux操作系统命令提示符下,使用cat命令能够查看并显示当前系统的内核版本信息: rootvm-dev # cat /proc/version Linux version 2.6.18-8.el5 () (gcc version 4.1.1 20070105 (Red Hat 4.1.1-52) #1 SMP Fri Jan 26 14:15:21 EST 2007,1.2.2 shell简介 shell是什么 shell作为用户与Linux内核的接口程序,称为外壳。根(root)用户使用的shell在内核 启动后启动,普通用户使用的shell,在用户登录进入系统时启动。内核能够接收用户在命令行提示符后输入的命令和参数。shell在Linux系统中的位置如图1.1所示。,图1.1 shell在Linux中的位置,shell是一个命令行解释器,也称为命令语言解释器(command-language interpreter),它拥有自己内建的shell命令集。 使用shell能够让用户与操作系统交互,当执行用户命令或者在提示符后进行输入时,就会与shell进行交互。shell将用户的命令和键盘输入的参数转化成内核能够理解的内容,内核响应并处理,处理结果送shell,再输出给用户。,shell为系统提供了内核之上的一层功能,可以直接用它来管理和运行系统,shell也能被系统中其他实用程序(utilities)和应用程序(application programs)所调用。,shell等待并接收提示符后用户输入的命令和参数,然后解释并传送给内核。 有些常用命令,比如打印当前工作目录命令pwd,shell内部包含这些命令对应的程序,就像MS-DOS的内部命令那样,shell将直接转去执行对应的程序; 另外更多的命令,比如拷贝cp和移动rm命令,类似于MS-DOS的外部命令,命令对应的程序不在shell内部,而是文件系统中某个目录下的单独的可执行文件。,当用户在命令行提示符后输入命令和参数,按下回车键以后,shell将寻找命令对应的可执行文件,然后装入内存并执行;对于用户编写的应用程序,以及用shell语言编写的脚本程序,同样可以通过指定文件名,由shell读入并执行。,Linux根目录下的bin子目录,通常存放着许多系统自带的、用户命令对应的二进制可执行文件。 例如cp和rm命令对应的文件是: rootlocalhost bin# ls /bin/cp -l -rwxr-xr-x 1 root root 68136 2006-11-28 /bin/cp rootlocalhost bin# ls /bin/rm -l -rwxr-xr-x 1 root root 43740 2006-11-28 /bin/rm,在/bin目录下,还可以看到系统自带的各种版本的shell程序文件、用于编辑文件的vi程序文件,以及许多用户命令对应的可执行文件。 Linux根目录下的sbin子目录,通常存放着许多系统自带的、系统管理员命令对应的二进制可执行文件,例如用于划分物理磁盘的fdisk和用于配置网络接口的ifconfig命令对应的文件:,rootlocalhost bin# ls /sbin/fdisk -l -rwxr-xr-x 1 root root 95572 2007-01-12 /sbin/fdisk rootlocalhost bin# ls /sbin/ifconfig -l -rwxr-xr-x 1 root root 71528 2006-08-07 /sbin/ifconfig,在shell内部,有shell自带的命令所对应的程序,可以通过输入help命令,查看用户使用的shell种类及该shell内部自带的命令有哪些。, shell启动 根用户使用的shell,在系统启动时,使用系统指定的shell,自动启动。 普通用户在登录进入系统时,系统会启动指定种类的shell。 所有用户在系统运行过程中,可以改变当前使用的shell,成为另一种shell,例如登录时使用的shell种类为bash,用户可以改为tcsh。 Linux是一个多用户系统,系统中每个用户可以使用一个与其他用户不同的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系统上。,rootlocalhost bin# ls *sh bash csh ksh sh tcsh zsh rootlocalhost bin# ls -l *sh -rwxr-xr-x 1 root root 722684 2006-07-12 bash lrwxrwxrwx 1 root root 4 2010-02-25 csh - tcsh -rwxr-xr-x 1 root root 1171404 2007-01-16 ksh lrwxrwxrwx 1 root root 4 2010-02-25 sh - bash -rwxr-xr-x 1 root root 345348 2006-10-31 tcsh -rwxr-xr-x 1 root root 514672 2006-09-12 zsh rootlocalhost bin# /bin/bash -version GNU bash, version 3.1.17(1)-release (i686-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc.,rootlocalhost bin# /bin/bash -version GNU bash, version 3.1.17(1)-release (i686-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc.,1.2.3 文件系统 文件系统是Linux系统的一个组件,它能够让用户以统一的方式查看、组织以及保护存储设备上的文件和目录,并与其进行交互。 Linux环境中的文件,具有特别重要的意义,因为它们为操作系统服务并为设备操作提供了一个简单而一致的接口。在Linux中,一切都可以看作文件,包括硬件设备在内。,1.2.4 实用程序 实用程序(utilities)也是Linux系统的一个组件。实用程序是一些可执行的程序,用来帮助用户在系统上进行工作。例如,用于Internet定位的Web浏览器、文字处理程序、编辑程序、e-mail程序,以及除了shell内部命令外,其他Linux命令对应的程序,都可以称为实用程序。,1.3 选择Linux的理由,1.3.1 Linux是成熟的、广泛使用的操作系统 1.3.2 开源软件带来的优点 一些对安全敏感的产品,比如用于航天、军事、银行等方面的产品,产品开发者更希望使用操作系统本身的源代码是可见的,而不希望使用由二进制可执行文件组成的操作系统。 使用开源的操作系统,如果需要,开发者可以查阅操作系统的某一段代码,理解它的含义及产生的行为。这样做的好处是,对于开发过程中产生的错误,容易区分是系统软件引起的,还是应用软件引起的。 使用开源软件,便于将Linux操作系统从一种处理器体系结构,移植到另一种处理器体系结构。,1.3.3 免费软件带来的优点 1.3.4 Linux得到了众多硬、软件厂商的支持 目前常见的32位以上、带MMU的嵌入式微处理器,几乎都得到Linux的支持。 目前Linux已经移植到几十种不同体系结构的处理器上;支持200多种不同的评估板;支持200多种网络适配器;支持5家厂商的闪存和10种以上的USB存储设备及各种各样的众多外设。 1.3.5 使用Linux的不足之处,1.4 Linux环境嵌入式开发系统 组成简介,1.4.1 Linux环境嵌入式开发系统组成 图1.2 Linux环境嵌入式开发系统组成,1.4.2 主机(Host) 图1.2中主机在不同的资料中也称为宿主机、Linux宿主机、Linux工作站、桌面机,本书统一称为主机。 主机可以是基于80x86的普通台式PC机或笔记本电脑,但是普通笔记本电脑通常不带串口,可以选用与串口电缆连接在一起的USB口转串口的部件。,1.4.3 目标板(Target) 目标板也称为开发板、评估板、开发平台实验板、目标平台、目标机等,本书通常称为目标板。在学习或开发阶段,目标板指的是购买来的用于做实验,或为了开发最终产品而运行、调试程序的板、卡或实验箱。例如基于ARM920T内核的S3C2410开发平台。 对于从事某项产品研发、最终要设计出硬件产品的项目,最终设计出的硬件产品也称为目标板。,1.4.4 主机与目标板的连接 通常主机与目标板连接的端口有串行口和以太网端口;有时主机并行端口,也就是连接打印机的端口,通过JTAG电缆连接到目标板的JTAG端口。 串行口也称为串行端口、RS-232C、COM口、串口;以太网端口也称为网口、网络端口;并行端口也称为并口。,1.4.5 主机中运行的程序 软件开发过程中,主机运行的程序主要是Linux操作系统,另外还有交叉编译器等工具软件。主机中运行的Linux操作系统,就是通常说的Linux操作系统,也称为Linux发行版(flavor)或发行套件,也称为发布版。,主机中的交叉编译器等工具软件,通常不包含在Linux操作系统内部,可以从网上下载,或者使用购买目标板时厂商附带的软件。,在Linux支持下,主机中运行的交叉编译器,会把用户编写的源程序,经过编译、连接等步骤,产生出目标板上可执行的二进制代码文件。如果目标板是基于ARM内核的微处理器,那么可执行文件的代码是ARM机器指令代码。,minicom程序是能够在主机Linux环境下运行的一个仿真终端程序,这个程序把主机Linux下的一个窗口和主机的键盘,作为目标板终端,这个终端由主机通过串口连接到目标板串口。目标板运行装载引导程序或者Linux时,默认的终端就是这个终端。,主机在某些时候,不运行Linux,而是运行Windows,比如从主机传送一些文件(装载引导程序、内核、根文件系统、应用程序等)到目标板,并且要把这些文件烧写到目标板的闪存(Flash)。这时通常主机工作在Windows环境,运行的仿真终端程序是“超级终端”,目标板通过串口连接,把主机超级终端窗口和主机键盘,作为它的终端。,1.4.6 目标板中运行的程序 购买回来的目标板,厂商通常在目标板的闪存中预装了以下程序或文件: 装载引导程序 Linux内核,通常包含一种默认的shell,如bash或其他种类的shell Linux根文件系统 应用程序,装载引导程序通常是目标板加电或RESET以后,第一个从闪存装入内存并运行的程序,这个程序为随后装入的Linux内核作了相应的初始化工作。然后装载引导程序从闪存装入Linux内核到内存,并把运行权交给Linux内核。,Linux内核从闪存装入根文件系统到内存,完成了目标板Linux启动运行的过程。之后目标板可能装入并启动某个指定的应用程序,也可能在目标板Linux内核和shell支持下,等待用户从终端输入的命令和参数。,比较常用的术语,如嵌入式Linux,通常指的是目标板上的Linux内核、Linux根文件系统和应用程序这三部分的总体。它们也被称为嵌入式Linux发行版或发行套件。,运行在基于ARM体系结构处理器目标板的嵌入式Linux,组成Linux的可执行文件代码是ARM机器指令代码;运行在PowerPC体系结构处理器目标板的嵌入式Linux,是PowerPC机器指令代码。,同样是ARM体系结构的嵌入式Linux,不同的目标板如果外设种类不同,嵌入式Linux内核中的驱动程序也不同。 同样是ARM体系结构,微处理器系列号不同,例如S3C2410和S3C6410,嵌入式Linux内核中与处理器相关的代码,也不完全相同。,1.4.7 开发系统附带的光盘文档 用户购买开发系统所附带的光盘中,通常会有支持目标板运行Windows CE、C/OS或Linux操作系统的对应文档。 同一台目标板,购买时如果预装了嵌入式Linux,那么买回来默认的开发环境就是Linux;如果预装的是Windows CE,那么默认的开发环境就是Windows CE。,当然用户可以将光盘中的文件,通过主机传送到目标板并烧写到闪存,也就是说用户可以通过改变目标板闪存已烧写

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论