已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2013 01 北方学院信息学院 嵌入式系统实践教程 第 章Linux及嵌入式开发系统组成简介 1 1Linux起源及发展 1 1 1UNIX和GNU软件UNIX最初是由美国电报电话 AT T 公司下属的贝尔实验室开发的 1969年 贝尔实验室的研究人员创建了UNIX的第一个版本 当时称为UNICS UniplexedOperatingandComputingSystem 单操作和计算机系统 由这个系统演化为之后通用的UNIX操作系统 早期的UNIX版本都是具有商业性质的 如IBM的AIX HP的HP UX和SUN的Solaris 通常都要支付一定的费用才能获得运行该操作系统的许可 1984年 工程师RichardStallman开始着手GNU计划 该计划致力于创建一个类UNIX UNIX like 的 任何人都可以免费发布和使用的 不受UNIX名字和源代码私有权限制的操作系统和开发环境 开发环境主要包括 高质量的编译器 命令行make环境 实用程序等 RichardStallman现在管理着一个免费的软件基金会 FreeSoftwareFoundation FSF 他和他的支持者们创建的许多程序 广泛地应用于商业的和开放源码的UNIX版本中 GNU代表GNU sNotUnix 是一个首字母递归的缩略词 GNU项目已经提供了许多UNIX系统上应用程序的仿制品 所有这些程序 统称为GNU软件 1 1 2Linux的发展Linux是一个可以自由使用 学习 修改 发布的 开源 opensource 的 类UNIX内核的一种操作系统的内核 Linux是由芬兰赫尔辛基大学的研究生LinusTorvalds在1991年开发的 其开发的目的是 保证Linux除了包含可以自由发布的代码外 不会集成任何专有代码 也就是我们通常说的源码全部公开 并可以免费使用 Linux内核遵循GNUGPL条款 Linux只是一个操作系统的内核 而操作系统的shell 文件系统和工具软件等等程序的编写 主要由因特网上GNU支持者 UNIX程序员完成 并使其逐渐发展成为一个完整的 强大的系统 Linux的出现 使台式机具备了以前需要花费数千美元购买UNIX才能获得的功能 几乎所有为UNIX编写的程序 都可以在Linux上编译运行 一些专用于UNIX商业版本的应用软件 可以不加改变地以二进制可执行文件形式在Linux上运行 Linux的发展是许多人共同努力的结果 操作系统内核本身仅仅是一个可用的操作系统的一小部分 Linux内核以外的大量程序 是由许许多多的编程人员 特别是以前为UNIX编程的 GNU项目的程序员编写 并免费 自由地以源代码形式发布的 GNU项目为Linux提供了许多UNIX系统上应用程序的仿制品 所有这些GNU软件 都是在遵守GPL条款下发布的 常用的软件有 GCC GNU编译器集 包含GNUC编译器 G C 编译器 是GCC的一部分 GDB 源代码级调试器 GNUmake UNIXmake免费版 bash 命令行解释器 或称外壳 shell的一种 GNUEmacs 文本编译器及环境 1 2内核 shell 文件系统及实用程序 1 2 1Linux内核Linux内核版本可以分为两大类 一类是专门用于开发的试验版本 另一类是稳定的产品版本 Linux内核版本号由主版本号 次版本号及序列号组成 次版本号是奇数的为试验版 偶数的为产品版 例如 Linux2 5 x 次版本号是奇数 是试验版内核 而Linux2 6 x 次版本号是偶数 是产品版 内核是Linux系统的最底层 内核提供了系统的核心功能 并允许进程以一种有序的 高效的方式访问硬件 内核控制进程 I O设备 文件系统的操作 内核还管理着内存 内核支持系统以多用户 多任务模式运行 并支持这些运行模式对资源的有序访问 能够在一种体系结构处理器 如Intelx86 上运行的内核 不能在另一种体系结构处理器 如ARM 上直接运行 必须经过移植 才能在另一种体系结构处理器上运行 内核代码的绝大部分是用标准的C语言编写的 仅有很少一部分与处理器相关的代码 是用汇编语言编写的 这给代码移植带来了很大的方便 在Linux操作系统命令提示符下 使用cat命令能够查看并显示当前系统的内核版本信息 root vm dev cat proc versionLinuxversion2 6 18 8 el5 brewbuilder ls20 bc2 gccversion4 1 120070105 RedHat4 1 1 52 1SMPFriJan2614 15 21EST2007 1 2 2shell简介 shell是什么shell作为用户与Linux内核的接口程序 称为外壳 根 root 用户使用的shell在内核启动后启动 普通用户使用的shell 在用户登录进入系统时启动 内核能够接收用户在命令行提示符后输入的命令和参数 shell在Linux系统中的位置如图1 1所示 图1 1shell在Linux中的位置 shell是一个命令行解释器 也称为命令语言解释器 command languageinterpreter 它拥有自己内建的shell命令集 使用shell能够让用户与操作系统交互 当执行用户命令或者在提示符后进行输入时 就会与shell进行交互 shell将用户的命令和键盘输入的参数转化成内核能够理解的内容 内核响应并处理 处理结果送shell 再输出给用户 shell为系统提供了内核之上的一层功能 可以直接用它来管理和运行系统 shell也能被系统中其他实用程序 utilities 和应用程序 applicationprograms 所调用 shell等待并接收提示符后用户输入的命令和参数 然后解释并传送给内核 有些常用命令 比如打印当前工作目录命令pwd shell内部包含这些命令对应的程序 就像MS DOS的内部命令那样 shell将直接转去执行对应的程序 另外更多的命令 比如拷贝cp和移动rm命令 类似于MS DOS的外部命令 命令对应的程序不在shell内部 而是文件系统中某个目录下的单独的可执行文件 当用户在命令行提示符后输入命令和参数 按下回车键以后 shell将寻找命令对应的可执行文件 然后装入内存并执行 对于用户编写的应用程序 以及用shell语言编写的脚本程序 同样可以通过指定文件名 由shell读入并执行 Linux根目录下的bin子目录 通常存放着许多系统自带的 用户命令对应的二进制可执行文件 例如cp和rm命令对应的文件是 root localhostbin ls bin cp l rwxr xr x1rootroot681362006 11 28 bin cp root localhostbin ls bin rm l rwxr xr x1rootroot437402006 11 28 bin rm 在 bin目录下 还可以看到系统自带的各种版本的shell程序文件 用于编辑文件的vi程序文件 以及许多用户命令对应的可执行文件 Linux根目录下的sbin子目录 通常存放着许多系统自带的 系统管理员命令对应的二进制可执行文件 例如用于划分物理磁盘的fdisk和用于配置网络接口的ifconfig命令对应的文件 root localhostbin ls sbin fdisk l rwxr xr x1rootroot955722007 01 12 sbin fdisk root localhostbin ls sbin ifconfig l rwxr xr x1rootroot715282006 08 07 sbin ifconfig 在shell内部 有shell自带的命令所对应的程序 可以通过输入help命令 查看用户使用的shell种类及该shell内部自带的命令有哪些 shell启动根用户使用的shell 在系统启动时 使用系统指定的shell 自动启动 普通用户在登录进入系统时 系统会启动指定种类的shell 所有用户在系统运行过程中 可以改变当前使用的shell 成为另一种shell 例如登录时使用的shell种类为bash 用户可以改为tcsh Linux是一个多用户系统 系统中每个用户可以使用一个与其他用户不同的shell 只有当用户退出Linux系统时 shell运行才结束 常用的shellLinux和UNIX系统里有许多种类不同的shell可以使用 例如bash sh tcsh csh ash bsh ksh zsh等等 它们中的大多数都是从shshell演变而来的 最常用的三种shell是bash csh和ksh Linux系统中 默认安装的总是GNU工具集中的bash GNUBourneAgainshell 它是开源的并且可以被移植到几乎所有的类UNIX系统上 root localhostbin ls shbashcshkshshtcshzsh root localhostbin ls l sh rwxr xr x1rootroot7226842006 07 12bashlrwxrwxrwx1rootroot42010 02 25csh tcsh rwxr xr x1rootroot11714042007 01 16kshlrwxrwxrwx1rootroot42010 02 25sh bash rwxr xr x1rootroot3453482006 10 31tcsh rwxr xr x1rootroot5146722006 09 12zsh root localhostbin bin bash versionGNUbash version3 1 17 1 release i686 redhat linux gnu Copyright C 2005FreeSoftwareFoundation Inc root localhostbin bin bash versionGNUbash version3 1 17 1 release i686 redhat linux gnu Copyright C 2005FreeSoftwareFoundation Inc 1 2 3文件系统文件系统是Linux系统的一个组件 它能够让用户以统一的方式查看 组织以及保护存储设备上的文件和目录 并与其进行交互 Linux环境中的文件 具有特别重要的意义 因为它们为操作系统服务并为设备操作提供了一个简单而一致的接口 在Linux中 一切都可以看作文件 包括硬件设备在内 1 2 4实用程序实用程序 utilities 也是Linux系统的一个组件 实用程序是一些可执行的程序 用来帮助用户在系统上进行工作 例如 用于Internet定位的Web浏览器 文字处理程序 编辑程序 e mail程序 以及除了shell内部命令外 其他Linux命令对应的程序 都可以称为实用程序 1 3选择Linux的理由 1 3 1Linux是成熟的 广泛使用的操作系统1 3 2开源软件带来的优点 一些对安全敏感的产品 比如用于航天 军事 银行等方面的产品 产品开发者更希望使用操作系统本身的源代码是可见的 而不希望使用由二进制可执行文件组成的操作系统 使用开源的操作系统 如果需要 开发者可以查阅操作系统的某一段代码 理解它的含义及产生的行为 这样做的好处是 对于开发过程中产生的错误 容易区分是系统软件引起的 还是应用软件引起的 使用开源软件 便于将Linux操作系统从一种处理器体系结构 移植到另一种处理器体系结构 1 3 3免费软件带来的优点1 3 4Linux得到了众多硬 软件厂商的支持目前常见的32位以上 带MMU的嵌入式微处理器 几乎都得到Linux的支持 目前Linux已经移植到几十种不同体系结构的处理器上 支持200多种不同的评估板 支持200多种网络适配器 支持5家厂商的闪存和10种以上的USB存储设备及各种各样的众多外设 1 3 5使用Linux的不足之处 1 4Linux环境嵌入式开发系统组成简介 1 4 1Linux环境嵌入式开发系统组成图1 2Linux环境嵌入式开发系统组成 1 4 2主机 Host 图1 2中主机在不同的资料中也称为宿主机 Linux宿主机 Linux工作站 桌面机 本书统一称为主机 主机可以是基于80 x86的普通台式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或其他种类的shellLinux根文件系统应用程序 装载引导程序通常是目标板加电或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开发系统附带的光盘文档用户购买开发系统所附带的光盘中 通常会有支持目标板运行WindowsCE C OS或Linux操作系统的对应文档 同一台目标板 购买时如果预装了嵌入式Linux 那么买回来默认的开发环境就是Linux 如果预装的是WindowsCE 那么默认的开发环境就是WindowsCE 当然用户可以将光盘中的文件 通过主机传送到目标板并烧写到闪存 也就是说用户可以通过改变目标板闪存已烧写的文件 来改变开发环境
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学语文升学模拟考试训练方案
- 汽车展会策划流程及合同范本应用指导
- 咨询策划服务合同范本及注意事项
- 2025年班组长安全培训试卷及答案-安全生产规章制度测试
- 工程机械设备租赁合同参考模板
- 教学督导评估体系建设方案
- 八年级数学竞赛辅导计划方案
- 建筑项目施工通讯稿标准模板
- 小学教学管理工作年度计划
- 唐诗用韵规律及赏析教程
- 煤矿综采工区管理制度汇编样本
- 九宫数独200题(附答案全)
- 2024版年度树立正确就业观课件
- 食材配送投标方案技术标
- 中医护理适宜技术工作计划
- 虚拟电厂负荷调控系统建设方案
- 临床医学导论期末测试习题与答案
- 商业伦理与企业责任课件
- 企业该如何正确如何选人
- 机器人输尿管重建手术治疗成人输尿管狭窄的现状
- 水景工程喷泉
评论
0/150
提交评论