(东南大学集成电路课程)嵌入式Linux体系结构_第1页
(东南大学集成电路课程)嵌入式Linux体系结构_第2页
(东南大学集成电路课程)嵌入式Linux体系结构_第3页
(东南大学集成电路课程)嵌入式Linux体系结构_第4页
(东南大学集成电路课程)嵌入式Linux体系结构_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

1、东南大学集成电路学院国家ASIC系统工程技术研究中心国家ASIC系统工程技术研究中心主要内容主要内容n什么是嵌入式什么是嵌入式Linuxn嵌入式嵌入式Linux的特点的特点n嵌入式嵌入式Linux系统结构系统结构国家ASIC系统工程技术研究中心什么是嵌入式Linuxn 嵌入式Linux一般是指对标准Linux进行裁剪、定制乃至改造处理之后,适合于特定嵌入式应用场合的专用Linux操作系统。 uCLinux RTLinux RTAI MontaVista Linux (Hard Hat Linux) MobiLinux Embedix Blue Cat Linux Android Linux国家

2、ASIC系统工程技术研究中心什么是嵌入式Linux:Linux简介nLinux 还是 GNU/Linux? Linux:开源的类UNIX操作系统内核 GNU/Linux:集成GNU (GNUs Not Unix) 软件(窗口系统、编译器、各种 shell、应用程序和开发工具等)和Linux内核的操作系统。 GPL( GNU General Public License )许可证协议下,GNU软件可以自由地“使用、复制、修改和发布”(CopyLeft) LGPL( GNU Lesser General Public License )国家ASIC系统工程技术研究中心什么是嵌入式Linux :Li

3、nux简介n1991年,Linux之父,芬兰赫尔辛基大学的学生:Linus Torvalds,发布第一个Linux版本国家ASIC系统工程技术研究中心什么是嵌入式Linux :Linux简介nLinux内核版本国家ASIC系统工程技术研究中心什么是嵌入式Linux :Linux简介n0.00(1991年24月):两个进程分别显示AAA BBB。n1.0(1993年3月):在一批高水平黑客的参与下,诞生第一个正式版本。n2.0(1996年6月):可支持多个处理器SMP 。n2.2(1999年1月):增加了对进程的POSIX能力的支持。n2.4(2001年1月):进一步提升SMP系统的扩展性,集成

4、了很多用于支持桌面系统的特性,如对USB、PCMCIA的支持,内置的即插即用等功能。n2.6(2003年12月):更好地支持大型多处理服务器;更好地支持嵌入式设备,如手机、网络路由器或者视频录像机等;对鼠标和键盘指令等用户行为反应更加迅速;块设备驱动程序做了彻底更新,如与硬盘和CD光驱通信的软件模块。n3.0(2011年5月):改变版本命令规则国家ASIC系统工程技术研究中心什么是嵌入式Linux :Linux简介nLinux 内核版本编号方式内核版本编号方式1.01.0版本前版本前0.XX非正式版本1.0 2.6.01.0 2.6.0版本版本A.B.CA:主版本号B:次版本号(偶数表示稳定版

5、本,奇数表示开发版本)C:修订版本号2.6.03.02.6.03.0版本版本A.B.C.DC:修订版本号(time-based)D:bug修复,安全更新,添加新特性和驱动的次数3.03.0版本以后版本以后A.B.CB:修订版本号(time-based)C:bug修复,安全更新,添加新特性和驱动的次数国家ASIC系统工程技术研究中心什么是嵌入式Linux :Linux简介nGNU/Linux发行套件国家ASIC系统工程技术研究中心什么是嵌入式Linux :嵌入式Linuxn内核的定制:嵌入式Linux 内核 为特殊的硬件配置、或为了支持特别的应用而经过特别的裁剪的修改过的Linux 内核n系统的

6、定制:嵌入式Linux 系统 为了在嵌入式系统中使用而剪裁过的Linux系统软件n发行套件的定制:嵌入式Linux 发行套件 为了在嵌入式系统中使用而剪裁过的Linux应用软件国家ASIC系统工程技术研究中心什么是嵌入式Linux :嵌入式应用国家ASIC系统工程技术研究中心什么是嵌入式Linux :嵌入式应用n实时性 硬实时 软实时 宽松时限n硬件规模 小型(CPU100MHz,内存32MB) 中型(CPU500MHz,内存1GHz,内存1GMB)国家ASIC系统工程技术研究中心什么是嵌入式Linux nuClinux (Micro-Control-Linux):专门针对无MMU的微控制器领

7、域而设计的嵌入式Linux 系统nARM Linux:专门针对无ARM处理器(有MMU)的嵌入式Linux 系统nRTLinux:硬实时微内核的实时操作系统,将普通Linux系统作为一个低优先级的任务来运行,其他的实时任务优先级比普通Linux 系统要高。nRATI(RealTime Application Interface):嵌入式Linux 系统的硬实时补丁,类同RTLinux,但通过实时硬件抽象层实现实时任务和Linux的交互。国家ASIC系统工程技术研究中心嵌入式Linux的特点n标准Linux的特点(1) 单体内核( monolithic ) 借鉴了微内核的特性,具有动态调入模块的

8、观念,比传统的单体内核操作系统可移植性更强。 多任务 采用时间片轮转优先级抢占的算法,实现多任务并行。 多用户 多个用户可以在同一时间内使用系统,同一用户可以同时并行执行多个任务。操作系统可以同时管理多个用户的请求和多个任务。国家ASIC系统工程技术研究中心嵌入式Linux的特点n标准Linux的特点(2) 支持多种处理器体系结构 X86、ARM、MIPS、M68K、PowerPC、SH、SPARC 支持MMU和non-MMU的处理器 支持32位和64位的处理器 支持多处理器(SMP) 支持32个CPU并行工作 支持多种总线接口和外部设备国家ASIC系统工程技术研究中心嵌入式Linux的特点n

9、标准Linux的特点(3) 支持虚拟内存 4GB虚拟地址空间,用户空间3GB。 支持多种文件系统 通过虚拟文件系统(VFS)屏蔽了各种不同文件系统的内在差别,使得用户可以使用同样的方式访问各种不同格式的文件系统:EXT、FAT、YAFFS。 通过逻辑卷管理(LVM)可以在运行时动态伸缩文件系统的大小,或增加文件系统。 支持网络文件系统(NFS) 支持内核虚拟机(KVM) 允许在宿主 Linux 内核的用户空间中运行其他客户操作系统。国家ASIC系统工程技术研究中心嵌入式Linux的特点n标准Linux的特点 规范性和可移植性 支持POSIX( Portable Operating System

10、 Interface )标准 GNU工具的支持:GCC、GDB、GNU make、GNU ld 实时性 支持内核线程(守护进程),2.6版本以后内核线程可抢占。 有效的延迟机制:下半部分,软中断,tasklet和工作列队等。可以针对任务的轻重缓急,更细粒度的选择执行时机。保证了系统运行时尽量在安全时间(不关中断)。国家ASIC系统工程技术研究中心嵌入式Linux的特点n标准Linux的特点 开放性 遵循GPL许可证协议,开放源代码,全世界的开发者共同使用和维护 无授权费用 开源社区的支持,快速的技术更新国家ASIC系统工程技术研究中心嵌入式Linux的特点nLinux没有的 强迫性的软件升级

11、私有的文件格式 产品注册登记 高昂的软件价格国家ASIC系统工程技术研究中心嵌入式Linux的特点nLinux 2.6内核针对嵌入式系统的改进 实时性显著提高 允许抢占以内核态运行的任务(包括通过系统调用进入内核模式的用户任务)。 更加有效的调度算法。算法复杂度为O(1)。 同步性的提高。 增加对嵌入式处理器的支持 增加了对无MMU系统的支持。 面向嵌入式应用 子系统架构将功能模块化,可以定制而对其他部分影响最小,便于裁剪和移植。 改善了I/O子系统,提供了更多嵌入式外设的支持以实现各种应用开发。 可以配置成无输入和显示的纯粹无用户接口系统。国家ASIC系统工程技术研究中心嵌入式Linux的特

12、点n嵌入式Linux的特点 需要交叉编译开发 具有更强的实时性 根据硬件资源限制和应用需求进行裁剪国家ASIC系统工程技术研究中心嵌入式Linux系统结构n引导系统(Bootloader)n系统内核(Kernel)n文件系统(File System)国家ASIC系统工程技术研究中心嵌入式Linux系统结构:BootloadernBootLoader回顾 Boot Loader 是在操作系统内核运行之前首先运行的第一段小程序:初始化硬件设备;建立内存空间的映射图;加载操作系统内核镜像到RAM中,并将系统的控制权传递给它。 BootLoader依赖于CPU体系结构和板级硬件配置 BootLoade

13、r通常预先划分好固态存储设备的空间,用于存放镜像。 BootLoader通常支持启动加载和下载两种模式。 BootLoader的操作通常分为两个阶段。国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Bootloadern第一阶段操作1. 屏蔽所有的中断2. 设置CPU 的速度和时钟频率3. RAM 初始化4. 初始化硬件调试端口(LED/UART)。5. 关闭CPU 内部指令数据cache6. 为第二阶段准备RAM 空间7. 拷贝第二阶段代码到RAM 中8. 设置堆栈指针sp9. 跳转到第二阶段的入口点国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Bootloadern第

14、二阶段操作1. 初始化本阶段要使用到的硬件设备2. 检测系统内存映射(memory map)3. 将kernel 映像和根文件系统映像从flash 上读到RAM 空间中4. 为内核设置启动参数5. 调用内核国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Bootloadern在嵌入式Linux系统中,需要由BootLoader设置的参数有: 内核参数,如页面大小、根设备 内存映射情况 命令行参数 initrd映像参数 起始地址,大小 Ramdisk参数 解压后的大小国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Bootloadern嵌入式Linux系统常用BootLoad

15、er: UBoot RedBoot Blob国家ASIC系统工程技术研究中心嵌入式Linux系统结构nGNU/Linux系统构成 应用程序 库 系统内核国家ASIC系统工程技术研究中心嵌入式Linux系统结构n嵌入式Linux应用程序 程序文件采用ELF格式或AOUT格式 运行在用户空间,必须通过Linux内核访问资源 支持图形用户界面,需要第三方GUI软件 X11 Window QT Micro Window MiniGUIn库:通常为共享库(.so),需要链接到应用程序运行。国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln内核:实际上仅仅是一个资源管理器。不管被管理

16、的资源是进程、内存还是硬件设备,内核负责管理并裁定多个竞争用户对资源的访问(既包括内核空间也包括用户空间)。 n内核构成 体系结构层 设备驱动 内存管理 进程管理 虚拟文件系统 网络协议 系统调用接口国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kernel国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln进程 在Linux内核中,进程代表了单独的处理器虚拟化(线程代码、数据、堆栈和 CPU 寄存器)。 系统资源分配的基本单位。由正文段(text)、用户数据段(user segment)和系统数据段(system segment)组成的动态实体。国家ASIC系

17、统工程技术研究中心嵌入式Linux系统结构:Kerneln进程管理进程管理 通过进程描述符(task_struct数据结构,进程控制块PCB )描述进程,是进程存在的唯一标志。 进程描述符放在动态内存中而且和内核态的进程栈放在一个独立的8KB的内存区中 进程描述符进程标识(PID)进程状态(State)进程调度信息和策略标识号(Identifiers)进程通信有关的信息(IPC)进程链接信息(Links)时间和定时器信息(Times and Timers)文件系统信息(Files System)处理器相关的上下文信息国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln进程管

18、理:状态机国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln进程管理 基本操作 fork: 通过复制调用进程来建立新的进程,是最基本的进程建立过程 exec :包括一系列系统调用,它们都是通过用一个新的程序覆盖原来的内存空间,实现进程的转变 wait:提供初级的进程同步措施,能使一个进程等待,直到另外一个进程结束为止。 exit:该系统调用用来终止一个进程的运行国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kernel国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kernel国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln进

19、程管理 fork调用结束时,内核在系统的物理内存中为新进程分配新的task_struct结构,并为新进程要使用的堆栈分配物理页和进程标志符 exec并不创建新进程 exec前后进程ID是不变的,仅替代了当前进程的正文、数据、堆和栈国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln进程管理:进程父子关系国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln进程管理 Linux中的0号进程,通常称为swapper进程,是所有进程的祖先。由它执行cpu_idle()函数,当没有其他进程处于TASK_RUNNING的时候,调度程序会选择0号进程运行 0号进程创建

20、1号进程,通常称为init进程。它创建和监控其他进程的活动国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln进程管理:进程调度 O(1)调度器 普通进程动态优先调度(时间片轮转)周期性地修改进程的优先级(避免饥饿)根据进程的counter值,平均睡眠时间长的提升优先级 实时进程静态优先级调度(FIFO或时间片轮转) RSDL (Rotating Staircase Deadline)调度器 CFS (Completely Fair Schedule)调度器 BFS (Brain Fuck Scheduler)调度器国家ASIC系统工程技术研究中心嵌入式Linux系统结构:

21、Kernel国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln内存管理 与体系结构无关的三级/四级页表模型 pgd,页目录 pmd,页中级目录 pte,页表项国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln内存管理 各进程拥有自己的3G用户空间 内核占用最高的1G作为系统空间,系统空间由所有进程共享国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln内存管理 1G内核空间的后128MB用作实现非连续内存分配和固定映射的线性地址国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln内存管理 实现了基于区的伙伴系统

22、(Buddy System)能够快速的满足各种大小的分配要求,同时减少碎片。 实现了slab分配器,把存储器区看作对象,对象按照类型分组成不同的高速缓存。解决请求内存小于一页的问题,改进伙伴系统的效率。 非连续存储器区的管理,允许将连续的线性地址映射到非连续的物理页。国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln设备驱动 完成与硬件相关的具体操作细节 提供一组抽象接口完成和操作系统之间的交互 运行在高特权级的处理器环境中 可采用内核模块( Loadable Kernel Module,LKM )的实现方式国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Ker

23、neln内核模块 可以动态链入内核的代码块 在内核空间运行 实际上是一种目标对象文件,没有链接,不能独立运行。国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln内核模块的优点 将来修改内核时,节省编译时间; 若需要安装新的模块,只要插入 (通过insmod命令) 对应的模块即可; 减少内核对系统资源的占用,内核可以集中精力做最基本的事情,把一些扩展功能都交由模块实现。模块也可以用来尝试新的内核代码,而不需要每次都创建和重激活内核。国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln内核模块潜在的问题: 对系统性能和内存利用有负面影响; 装入的内核模块和

24、其他内核部分一样,具有相同的访问权限,因此,差的内核模块会导致系统崩溃; 有些模块要求利用其他模块的功能,因此,内核要维护模块之间的依赖性。 内核必须能够在卸载模块时通知模块,并且要释放分配给模块的内存和中断等资源; 内核版本和模块版本的不兼容也可能导致系统崩溃。国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln设备驱动(中断处理) 当执行中断处理程序或下半部时,内核处于中断上下文 中断上下文不同于进程上下文,中断或异常处理程序执行的代码不是一个进程。它是一个内核控制路径,代表了中断发生时正在运行的进程执行,作为一个进程的内核控制路径,中断处理程序比一个进程要“轻”(中断

25、上下文只包含了很有限的几个寄存器,建立和终止这个上下文所需要的时间很少) 中断上下文不可以睡眠,也不能调用某些函数,具有较为严格的时间限制国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln设备驱动 下半部可以通过多种机制实现,分别由不同的接口和子系统组成 BH接口静态创建 由32 个 Bottom half组成的链表 Taskqueue 任务队列 机制 软中断 Tasklet 工作队列国家ASIC系统工程技术研究中心嵌入式Linux系统结构:Kerneln嵌入式Linux内核源代码组织国家ASIC系统工程技术研究中心嵌入式Linux系统结构:File Systemn嵌入式

26、Linux文件系统 在Linux中没有盘符的概念,每个文件都以唯一的名称存储在系统的目录中。我们可以把整个目录系统看成一个树形结构,其中有很多目录分枝。所有的目录都会连接到“根”目录,用单斜线 (/)表示。 Linux继承了Unix的资源访问方式,所有的资源访问控制都是基于文件的。在Linux中各种硬件设备、端口设备甚至内存都是以文件形式存在的。 通过虚拟文件系统(VFS)在内核中提供一个文件系统框架(接口函数集、管理用的数据结构、各种缓存机制)为各种文件系统提供通用接口,即通用文件模型。国家ASIC系统工程技术研究中心嵌入式Linux系统结构:File Systemn嵌入式Linux文件系统构成国家ASIC系统工程技术研究中心嵌入式Linux系统结构:File Systemn嵌入式Linux文件系统 VFS由以下对象类型组成 超级块对象:存放已安装文件系统信息 索引节点对象:存放文件信息,每个索引节点对象的索引节点号唯一地标识了文件系

温馨提示

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

评论

0/150

提交评论