640 likes | 926 Views
嵌入式操作系统 Embedded Operating System. 第三课 嵌入式 Linux 操作系统. 课程大纲 . 嵌入式 Linux 简介 典型的嵌入式 Linux ARM-Linux 操作系统 ARM-Linux 操作系统的内存管理 ARM-Linux 操作系统的文件系统 嵌入式 Linux 的前景. 2. 开源开放的 Linux. Linux 的诞生 1991 年芬兰大学生 Linus Torvalds 写的类 minix 操作系统 第一个版本是 Linux 0.01 版本,代码量为一万行
E N D
嵌入式操作系统Embedded Operating System 第三课 嵌入式Linux操作系统
课程大纲 嵌入式Linux简介 典型的嵌入式Linux ARM-Linux操作系统 ARM-Linux操作系统的内存管理 ARM-Linux操作系统的文件系统 嵌入式Linux的前景 2
开源开放的Linux • Linux的诞生 • 1991年芬兰大学生Linus Torvalds写的类minix操作系统 • 第一个版本是Linux 0.01版本,代码量为一万行 • 1992年,用户为1000人 • 1994年3月,Linux1.0发布 • 代码量17万行 • 随后正式采用GPL协议 • 1996年6月,Linux 2.0内核发布 • 2.0版本内核约有40万行代码 • 可以支持多种处理器 • 全球大约有350万人使用 • 1998年,Redhat Linux出现 • 2000年及之后,Linux发展迅速 • 从桌面到服务器到嵌入式领域 • 市场占有率也有所提升 3
Linux的版本 • 内核 • 属于单内核 • 不属于微内核、混合内核、外内核、无核 • 内核版本 • 最新的版本2.6.39 • 发行版 • 基于Debian,如Ubuntu • 基于RPM,如Fedora,红旗 • Slackware • 其它打包方式的套件 • 专用包:Android/Maemo/Moblin/MeeGo • 2010年2月,谷歌Android被Linux内核除名 • 知识产权 • 任何版本的都需要遵守GPL • 没有独立的知识产权 4
嵌入式Linux的发展(1) • 嵌入式Linux • 以Linux为基础的,面向嵌入式系统定制的嵌入式操作系统 • 一般需2MB容量 • Linux的优点 • 不需要支付操作系统许可证的费用 • 体系结构是公开,源代码开放 • 系列的免费开发工具和开发环境,大量的免费文档,广泛的技术支持 • 内核小、效率高,内核的更新速度很快,可定制,其系统内核最小只有约134KB(夸克QUARK是最小的嵌入式Linux,内核13KB) • 用于嵌入式系统时,Linux的缺点 • 非微内核 • Linux是非实时的操作系统,而嵌入式系统一般都要求实时 • Linux本身需要的硬件资源较多,而嵌入式系统是资源有限的系统 5
嵌入式Linux的发展(2) • 早期的嵌入式Linux • 最早在1999年左右,开始出现面向嵌入式Linux的需求和相关的开发 • 2003年以后 • 嵌入式Linux的发展开始快速发展 • 出发点是基于Linux的优点 • 不同的应用行业和企业基于拥有自己平台的思想,对嵌入式Linux进行了大量的投入 • 图形能力较差 6
嵌入式Linux的改进(1) • 嵌入式Linux基于Linux,不完全相同 • 实时性 • 嵌入式系统有较高的实时性的要求 • Linux是通用操作系统,不是实时操作系统 • 内核不支持抢占实时特性 • 嵌入式Linux扩展了Linux的实时性能 • 实时调度算法 • 功能上扩充Linux的实时处理和控制系统 • 支持的范围更广,支持的设备更多 7
嵌入式Linux的改进(2) • 定制内核 • 嵌入式系统是软硬件可裁剪 • 适用于系统对功能、可靠性、成本、功耗严格要求的专用计算机系统有较高的实时性的要求 • Linux是Monolithic内核,不能应用于嵌入式系统 • 嵌入式Linux的定制内核 • 可以采用MicroKernel • 内核体积小,占用的资源少 • 面向应用的系统定制 • 根据行业的特性对Linux进行行业化系统定制 8
嵌入式Linux的特点 • 继承了Linux的优点 • 开源开放 • 有较为成熟的技术社区 • 体积小 • 无许可证费用 • 工具链越来越完整和丰富 • 可以进行定制化的改造 • 实时性得到了提高 • 对嵌入式的硬件有较好的支持 • 目前正在开发的嵌入式系统中,49%的项目选择Linux作为嵌入式操作系统。Linux现已成为嵌入式操作的理想选择。 9
软件版权和许可证 • 知识产权 • 软件版权与专利 • 软件版权与公共领域(public domain) • 版权保护周期 • 版权保护范围和形式 • 许可证 • 派生 • 净室技术Cleanroom • 常用开源软件许可证 • GPL、LGPL 10
GPL:GNU Public License • 权利:自由 • 义务:copyleft • 触发条件 • 派生 • 社区与法律可能有不同阐述 • 发行 • 要求:开源 • 有谁来开源? • 怎样开源? • 完整性要求? 11
LGPL:Lesser GPL • GNU 宽通用公共许可证,与GPL非常类似 • 区别 • 触发条件(派生) • 适用范围 • 运行库 12
课程大纲 嵌入式Linux简介 典型的嵌入式Linux ARM-Linux操作系统 ARM-Linux操作系统的内存管理 ARM-Linux操作系统的文件系统 嵌入式Linux的前景 14
嵌入式Linux的应用领域 • 嵌入式Linux的应用领域广泛 • 大部分用于移动电话、数字娱乐等非实时嵌入式系统 • 工业控制 • 军事领域 • …… • 需要嵌入式操作系统的地方,就可以应用嵌入式Linux 15
典型的嵌入式Linux • 嵌入式Linux有多个不同的版本 • 源于Linux • 应用于不同的领域 • 有各自的特点 • 典型的嵌入式Linux • 出现很多嵌入式Linux: Embedix,ETLinux,LEM,RTLinux, LinuxRouterProject,LOAF,uCLinux,muLinux,ThinLinux,FirePlug和PizzaBoxLinux • 平台化嵌入式Linux • Android • Moblin+Maemo→MeeGO 16
智能手机操作系统 • 类Unix • 基于Linux • Access Linux、Android、bada、LiMo、MeeGo (Moblin、Maemo、Qt Extended)、Openmoko Linux (Qt Extended Improved)、OPhone、SHR、webOS • 过去:DSLinux、Familiar、iPodLinux、MobiLinux、Ubuntu Mobile • 其他 • BlackBerry Tablet OS、iOS • 其他 • Windows CE (Windows Phone 7、Windows Mobile)、BlackBerry OS、GEOS、Nintendo DSi OS、Nokia OS (S30、S40)、PSP OS、Symbian (MOAP(S)、UIQ、S60、S80、S90) • 过去: Palm OS、SavaJe • 相关平台 • BREW、Java ME (FX Mobile)
嵌入式Linux-RTLinux • RTLinux的历史 • 来源于Linux • 美国新墨西哥州大学计算机科学系 • 设计原则 • 实时模块中的工作量尽量少 • 一般任务均在Linux中完成 • 包括部分实时任务,前提是在Linux中完成不影响实时性能 • RTLinux内核完成实时性要求高的任务 • 已在美国航天部门,印度军方得到了广泛应用 18
嵌入式Linux-RTLinux(2) • 技术特点 • 对Linux内核做了改造 • 增加了RTLinux内核的控制 • 采用动态加载实时进程的方式实现Linux硬实时 • 两个内核 • Linux内核(上层)和实时内核(底层) • Linux本身作为这个实时内核的优先级最低的任务 • 所有实时任务的优先级都高于Linux系统本身以及Linux系统下的一般任务 • 上下文切换的最坏情况只有大约10个微秒 19
嵌入式Linux-Montavista Linux • Montavista Linux的概述 • 由成立于1999年的Montavista公司开发 • MontaVista Linux的所有源代码对外开放 • Montavista公司主要提供服务 • Montavista Linux的版本 • 电信设备用的Carrier Grade Edition • 手机用的MobiLinux • 消费电子产品及其他设备用的Professional Edition 20
嵌入式Linux-Montavista Linux(2) • Montavista Linux技术特点 • 提供实时嵌入式Linux操作系统和嵌入式开发工具 • 提供了很好的实时支持 • 支持广泛的嵌入式处理器 • 提供嵌入式设计的开放源码方案包 • Montavista Linux最新版本 • Montavista Linux 6 • 被网络芯片厂商Cavium收购 21 注:图来自http://www.mvista.com/product_detail_mvl6.php
嵌入式Linux-uCLinux • uCLinux概述 • Lineo公司的产品 • 针对微控制领域而设计的Linux系统 • 该领域的嵌入式处理器往往没有MMU • uCLinux的技术特点 • 对Linux的重新配置和裁剪 • 重写了应用程序库,进行了精简工作 • 采用romfs文件系统 • 通过内存或者Flash启动 • 对用户程序采用静态连接的形式 22
嵌入式Linux-Qtopia • Trolltech 公司为采用嵌入式Linux操作系统的消费电子设备而开发的综合应用平台 • 三个版本 • Qtopia 手机版 • Qtopia PDA 版 • Qtopia 消费电子产品平台 • 被诺基亚收购 • 诺基亚出Symbian,一度市场份额超过60% • 收购Symbian所有股份,开源 • 与intel合作Meego
嵌入式Linux-Android • Android • Google+开放手机联盟 • 2007年11月5日发布 • “Android 是第一个完整、开放、免费的手机平台” • 2008年9月22日,第一款基于Android的手机发布 • T-Mobile G1 • 基于Android的手机GPhone • Android的特点 • 包括了操作系统、中间件、用户界面和应用软件 • 这是一个平台 • 面向智能手机 24
嵌入式Linux-Android(2) • Android的优势 • 开放开源 • 提供一整套的解决方案 • 免费!!! • Android的冲击 • Symbian • Windows Mobile • IPhone 25
嵌入式Linux-Moblin • Intel为MID设计 • 启动于2007年7月,作为Moblin项目组 • 目的是推动MID等类设备中Linux的应用和新技术的发展 • 建立了Moblin 社区 • 目前的版本是Moblin 2.0 • Moblin的特点 • 优化移动用户操作界面 • 高速的联网性能 • 占用资源小 26
嵌入式Linux-Moblin(2) • Moblin 2.0 • 针对电源管理部分做了优化 • 更多的是面向Intel自己的嵌入式处理器 • Atom • 可以通过软硬件结合来进行设计 • 比较完整的全套开发工具 • Moblin更多的是为带数据互联功能的移动设备设计 27
嵌入式Linux-Maemo • 基于 Linux Debian 的系统平台 • 诺基亚公司 • 诺基亚N770、N800、N810和N900 • 面对智能手机及Internet Tablet • Internet Tablet:介于 个人数位助理(PDA) 跟 UMPC 之间,略小于英特尔公司的移动互联网设备(MID)。 http://maemo.org
嵌入式Linux-OpenMoko • 提供开源Linux软件栈与硬件 • 硬件系统也是完全开放的 • 允许开发者对软件和硬件任意定制 • 三部分 • 基本的OpenMoko软件环境建立在GNOME移动和嵌入技术基础上,包括GTK+工具包 • FreeRunner部分,这是一个完全开放的部分,可以让开发者任意选择第三方平台,比如Linux桌面环境,或者支持Nokia互联网平板设备的图形Shell等。 • 包括FreeSmartphone.org的APIs,快速提供复杂应用。 • 产品 • 第一款OpenMoko硬件是Neo1973 • 第二款OpenMoko硬件是Neo FreeRunner http://wiki.openmoko.org/wiki/Main_Page
嵌入式Linux-WebOS • Palm公司 • 放弃了PalmOS,改推以Linux为基础的WebOS • 由于Palm被HP收购,webOS现收归HP旗下 • HP已发布多款手机及一款平板电脑 • webOS将在线社交网络和Web 2.0一体化作为重点 • 最新版本 • 2.0 Beta / 2010年8月31日 • 类似于chrome浏览器“沙盒”架构 • 卡片方式
iPodLinux • 内核为Modified µCLinux • 运行在iPod上 • 功能 • 文字编辑、视频播放(在iPod nano 2上)、模拟器游戏、编程等功能 • 与iPod原OS形成双系统
嵌入式Linux-LiMo • LiMo 基金会 • 2007 年 1 月创立 • 会员数超过 50 • Linux Phone Standards (LiPS) 论坛 • GPEPhone(GPE Palmtop Environment ) • http://gpe.Linuxtogo.org • 08年并入 LiMo • 组成 • 用Wind River提供的Linux版本、系统架构平台和集成工具集来开发各自的终端设备 • 支持LIMO系统手机 • 三星I8320 H1、三星I8330 H2、三星I6410 M1、三星I8350 http://www.limofoundation.org/
bada • 韩国三星 • 人人能用的低智能手机的时代(Smartphone for Everyone) • 特点 • 配置不灵活、用户交互性差、面向服务弱 • 非常不重视SNS集成和基于位置服务应用 • 版本 • 1.2.1 (SDK) / 2010年12月29日
课程大纲 嵌入式Linux简介 典型的嵌入式Linux ARM-Linux操作系统 ARM-Linux操作系统的内存管理 ARM-Linux操作系统的文件系统 嵌入式Linux的前景 34
与桌面Linux共享的知识点 • 主流嵌入式Linux与桌面Linux完全一样的内容 • Shell命令使用 • Makefile • 操作系统移植 • 设备驱动 • GDB • 内核调试 • 进程管理 • 系统调用 • 启动流程 • 具备以上技能,属于Linux开发人员 • 请自行学习操作系统课程,以及自学本课程实验课件 35
嵌入式Linux知识点 • 有别于桌面Linux,嵌入式Linux的特色 • Bootloader:参见本课程bootloader课件 • 编译调试:交叉编译,参见本课程开发环境课件 • 实时调度:一些嵌入式Linux未进行实时改造,参见本课程实时课件 • 内存管理:强实时要求,处理器有MMU硬件 • 中断响应和处理:强实时要求 • 文件系统:Flash作为存储介质,参见本课程嵌入式文件系统课件 • 快速启动:… • 具备以上能力,才是嵌入式Linux的开发人员 36
课程大纲 嵌入式Linux简介 典型的嵌入式Linux ARM-Linux操作系统 ARM-Linux操作系统的内存管理 ARM-Linux操作系统的文件系统 嵌入式Linux的前景 37
ARM-Linux内存管理 • 存储管理是一个很大的范畴 • 存储管理机制的实现和具体的CPU以及MMU的结构关系非常紧密 • 操作系统内核的复杂性相当程度上来自内存管理,对整个系统的结构有着根本性的深远影响 38
内存管理和MMU • MMU-“内存管理单元”,其主要作用是两个方面: • 地址映射 • 对地址访问的保护和限制 • MMU可以内置在芯片中,也可以作为协处理器 • ARM中的协处理器CP15(系统控制协处理器) 39
ARM存储管理机制 • ARM系统结构中,内存地址映射支持两种: • 单层的按“段(section)”映射,段大小为1M • 二层的按“页面(page)”映射 • Tiny pages:1K • Small pages:4K • Large pages:64K 40
ARM存储管理机制 • 按“段”进行地址映射方式 41
ARM存储管理机制 • 采用页面映射,“段映射表”就成了“首层页面映射表”,映射的过程如下(以页面大小=4KB为例) 42
ARM存储管理机制 • 凡是支持虚存的CPU必须为有关的映射表提供高速缓存,使地址映射的过程在不访问内存的前提下完成,用于这个目的高速缓存称为地址转换表(TLB) • 高速缓存 • ARM系统结构中配备了两个地址映射TLB和两个高速缓存 43
ARM存储管理机制 • ARM处理器中,MMU是作为协处理器CP15的一部分实现的 • MMU相关的最主要的寄存器有三个: • 控制寄存器,控制MMU的开关、高速缓存的开关、写缓冲区的开关等(CP15:C1) • 地址转换表基地址寄存器(CP15:C2) • 域访问控制寄存器(CP15:C3) 44
ARM-Linux存储机制的建立 • ARM-Linux内核将4GB虚拟地址空间分为两个部分 • 高端的1G为系统空间 • 低端的3G为用户空间 • ARM将I/O也放在内存地址空间中 • 系统空间的一部分虚拟地址不是映射到物理内存,而是映射到一些I/O设备地址 45
ARM-Linux进程的虚存空间 • Linux虚拟内存的实现需要6种机制的支持: • 地址映射机制 • 内存分配回收机制 • 缓存和刷新机制 • 请求页机制 • 交换机制 • 内存共享机制 46
ARM-Linux进程的虚存空间 • 系统中的每个进程都各有自己的首层映射表 • 这就是它的空间 • 没有独立的空间的就只是线程而不是进程 • Linux内核需要管理所有的虚拟内存地址 • 每个进程虚拟内存中的内容在其task_struct结构中指向的 vm_area_struct结构中描叙 47
ARM-Linux进程的虚存空间 • task_struct结构分析图 48
ARM-Linux进程的虚存空间 • 由于那些虚拟内存区域来源各不相同,Linux使用vm_area_struct中指向一组虚拟内存处理过程的指针来抽象此接口 • 为进程创建新的虚拟内存区域或处理页面不在物理内存中的情况下,Linux内核重复使用进程的vm_area_struct数据结构集合 • 当进程请求分配虚拟内存时,Linux并不直接分配物理内存 49
静态分配与动态分配 • 很多RTOS不支持动态分配内存 • 担心碎片 50