您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 第4章 嵌入式操作系统v2
1嵌入式系统原理与设计第四章嵌入式操作系统2本章提要123操作系统的基本概念µC/OS-Ⅱ操作系统µCLinux操作系统4WinCE操作系统34.3µCLinuxMicro-Controller-Linux,字面上的理解就是“针对微控制领域而设计的Linux系统。Linux最开始只运行在x86系统上,后逐步支持其他微处理器。在Linux2.0发布后,有人开始对Linux源码进行修改,使得它能在没有内存管理单元(MemoryManagementUnit,简称MMU)的微控制器上运行。修改后的内核代码就是µCLinux。时至今日,µCLinux已得到广泛的认可和完善,它包含2.0、2.4和2.6的Linux内核,并且集成了很多有用的应用程序和库。这些相关的软件极大地方便了嵌入式开发者的工作。因此,目前在嵌入式Linux领域中,已经产生了明显的选择:如果微控制器具有MMU,就选择Linux;否则,选择µCLinux。4.3.1µCLinux简介44.3.2Linux内核•Linux内核采用的是单一内核结构。这种内核结构的重要特征是模块化。Linux对模块给予了强有力的支持,在各个模块之间规定了良好的界面,并且可以动态地装入和卸载内核中的部分代码。•Linux的内核为非抢占式的。它不能通过改变优先权来影响当前的执行流程。因此,可以对Linux某些重要的数据结构进行修改而不加任何保护措施。•Linux内核功能:(1)用软件接口抽象不同的硬件资源,以简化操作,屏蔽低层硬件的不同接口,即资源抽象。(2)将抽象出来的各种资源分配给各个进程并负责取回这些系统资源,即资源分配。(3)根据不同的资源类型使用不同的机制保证资源被进程所独占,即资源共享。54.3.2Linux内核Linux内核包含进程调度、内存管理、文件系统、进程间通信、网络及资源管理6部分。网络文件系统进程间通信内存管理进程调度资源管理硬件抽象层硬件图4.11Linux内核体系结构64.3.2Linux内核1.进程调度:控制CPU资源的分配。Linux内核采用基于优先级的抢占式多任务调度方式。2.内存管理:Linux的内存管理系统用于管理内存资源,它实现了进程之间的内存保护、内存共享及内存管理功能,可分为硬件相关部分和硬件无关部分。3.文件系统:Linux的文件系统结构和UNIX的类似,该系统具有虚拟文件系统(VFS)接口,所有真正的文件系统都挂接在虚拟文件系统下,通过虚拟文件系统接口切换。虚拟文件系统(VFS)逻辑文件系统设备管理部分Linux的文件系统74.3.2Linux内核4.进程间通信(IPC):主要的进程间通信方式有管道(Pipe)、文件锁、SystemVIPC、信号(Signal)及共享内存等。因为Linux支持网络,所以还可以使用网络接口进行进程间通信。5.网络:Linux是在互联网环境下产生的操作系统,所以它具有对网络的良好支持。Linux内核支持多种网络协议,如IP、IPv6、IFX、Appletalk及蓝牙(Bluetooth)等;支持路由、防火墙过滤等网络设备功能;并提供标准的BSDSocket编程接口。6.资源管理:Linux中除了CPU和内存,其他资源都是用驱动程序的形式加以管理的,因此,其内核源代码的绝大部分是各种驱动程序,并且随着系统支持的硬件的增加,代码增加量最大的也是驱动程序。84.3.4µCLinux的内核结构驱动文件系统虚拟文件系统管理模块文件系统模块系统调用处理函数IPC模块MM模块调度器内存初始化块设备驱动网络设备驱动Mass存储设备驱动字符设备驱动BootLoader捕获HandlerC库图4.12µCLinux的内核体系结构94.3.3µCLinux内核与传统Linux的比较µCLinux内核传统Linux内核内存保护只要应用程序经过较完整的测试,出现问题的概率就可控制在有限的范围内需要运行不同的用户程序,如果没有内存保护,将大大降低系统的安全性和可靠性虚拟内存父进程和子进程无法并发执行,导致这些程序可能要实质上的修改才能在µCLinux下完成同样的任务某些程序依赖子进程来执行基本任务,使得即使在进程负载很重时,系统仍可保持一种“可交互”的状态通用构架的内核变化•/linux/mmnommu目录•去除了MMU硬件的依赖•内核和用户内存分配及释放进程重新实现•加入了支持“位置无关代码(PIC)”的程序加载模块和支持ELF格式的程序加载模块•/linux/mm目录•MMU硬件的依赖104.3.5µCLinux在ARM上的移植DocumentationconfigGlibcimagesliblinux-2.0xlinux-2.4xlinux-2.7xromfsµClibcuservendors帮助文档配置脚本Glibc库源代码映像文件目录标准C库µC-libclinux-2.0x内核linux-2.4x内核linux-2.7x内核编译生成的根文件系统标准C库µClibc应用程序源代码制造商配置文件µClinux-dist图4.13µCLinux发行版本目录结构µCLinux内核的移植可以分为板级移植和片级移植两种。µCLinux发行版本目录结构如图4.13。114.3.5µCLinux在ARM上的移植图4.14µCLinux内核的目录结构µCLinux内核目录结构如图4.14。Documentationarchdriversfsincludeinitlibmmnommunetscript帮助文档体系结构相关源代码驱动程序文件系统头文件kernel初始化常用函数µClinux内存管理网络协议源代码脚本文件linux-2.4x124.3.5µCLinux在ARM上的移植1、内核移植的主要任务(1)配置内核:µCLinux常用的配置选项包括系统及其存储器配置、网络支持、USB支持、显示器支持以及触摸屏支持等。(2)编译内核:主要包括使用MakeDep建立依赖关系、使用Make编译内核、使用MakezImage编译压缩核心(zImage),编译生成地µCLinux映像文件通常保存在/images目录下。(3)下载、运行、调试内核:可通过调试器下载内核并运行,也可通过BootLoader将内核烧到Flash中,然后运行µClinux。134.3.5µCLinux在ARM上的移植2、µCLinux调试在µClinux开发中,由于有些嵌入式系统可能没有标准键盘和显示器支持,因此通常通过串行口将显示信息发送到主机,由主机端超级终端工具接收,以完成显示功能;在超级终端中也可输入数据,然后由µCLinux接收,以完成标准键盘功能。在调试过程中,也可以通过串行口将调试信息打印到超级终端,这是调试µCLinux的最有效和最简单的方法。144.3.5µCLinux在ARM上的移植3、µCLinux内核移植主要过程(1)内核配置:内核配置包括板级包配置,根据所选用的ARMCPU(例如S3C44B0X),分别配置其板级包(例如S3C44B0X-MBA44)。(2)体系结构相关代码修改:应根据板级包的配置,修改相应的体系结构相关代码,包括压缩核心启动代码、内核启动代码及板级相关代码。(3)连接脚本:µCLinux的核心连接脚本是位于linux-2.4.x/arch/armnommu下的vmlinux.lds文件;压缩核心连接脚本位于linux-2.4.x/arch/armnommu/boot/compressed下的linux.lds文件。(4)中断处理:在嵌入式系统中,µCLinux内核一般在SDRAM中运行,因此在BootLoader中必须将中断向量表正确导入到该处地址。154.3.5µCLinux在ARM上的移植(5)加载文件系统:目前所有的µCLinux内核(2.4和2.5)都支持Romfs文件系统,但是在一些Linux发布中可能没有将其编译进来。(6)编写驱动程序:µCLinux的驱动程序目录为linux-2.4.x/drivers,包括网卡驱动程序、LCD驱动程序和触摸屏驱动程序等。(7)编译µCLinux文件系统:包括配置文件系统;编译文件系统源代码,生成µCLinux文件系统;生成Romfs文件系统映像及编译Romfs文件系统映像到内核中或者写到固定位置并由内核从该位置加载。164.4WinCEWindowsEmbedded是微软嵌入式技术和产品的总称,它是微软专门为嵌入式智能设备开发的窗口操作系统。目前微软的WindowsEmbedded家族主要包括两个产品:WindowsCE和WindowsEmbedded7。MicrosoftWindowsCE是一个开放的、可裁剪的、32位的实时嵌入式窗口操作系统。和其他桌面版窗口操作系统(Windows98/2000/XP等)相比,它具有可靠性好、实时性高、内核体积小的特点,所以被广泛用于各种嵌入式智能设备的开发,涉及工业控制、信息家电、移动通信、汽车电子、个人电子消费品等各个领域,是当今应用最多、增长最快的嵌入式操作系统。174.4.1WinCE简介1.WindowsCE的设计目标(1)模块化和小内存占用(2)多种无线与有线连接支持(3)强大的实时性能力(4)丰富的多媒体和多语言支持(5)强大的开发工具支持2.WindowsCE的特征(1)可移植性(2)实时性(3)模块化(4)安全服务(5)多媒体性能(6)网络和通信性能(7)存储性能(8)本地化支持(9)GWES(10)开发环境全面184.4.2WinCE内核结构WindowsCE的架构客户应用程序WindowsCE应用程序Internet客户服务国际化用户接口应用层客户和服务开发CoreDLL对象存储操作系统层多媒体技术图形窗口和事件子系统通信服务和网络设备管理器核心OAL驱动程序启动加载程序配置文件OEM硬件层图4.15WindowsCE的架构WindowsCE的内核结构是一种分层式结构,从底层向上分别为硬件层、OEM层、操作系统层和应用层。194.4.2WinCE内核结构硬件层是指由CPU、存储器、I/O端口、扩展板卡等组成的嵌入式硬件系统,是WindowsCE操作系统必不可少的载体。OEM层是嵌入式硬件与WindowsCE操作系统的接合层。OEM层主要由下列模块组成:(1)OAL(OEMAdaptationLayer,OEM适配层)(2)启动加载程序(BootLoader)(3)配置文件(4)驱动程序204.4.2WinCE内核结构操作系统层是WindowsCE操作系统的核心层,它既要为下层OEM层提供接口和服务,也要为上层的应用程序提供服务与应用程序编程接口。操作系统层主要由下列模块构成:(1)核心(2)CoreDLL(3)对象存储模块(4)多媒体技术模块(5)图形窗口和事件系统模块(6)设备管理器模块(7)通信服务与网络模块(8)应用和服务开发模块214.4.2WinCE内核结构应用层主要包括以下模块:(1)WindowsCE应用程序:主要包括ActiveSync、CAB安装/卸载应用程序、文件查看器Inbox、游戏、WordPad、WindowsMessenger等应用程序以及RDP支持、声音重定向、文件存储重定向、打印机重定向、串并口重定向、智能卡重定向等应用程序。(2)Internet客户服务:提供了对浏览器应用程序、定制浏览器技术及脚本语言解析引擎的支持。(3)用户接口:构成了用户与基于WindowsCE的设备和应用程序的交互方式,它由鼠标接口、网络用户接口、软输入板、语音输入与识别、触摸屏等应用程序组成。(4)客户应用程序:是用户为特定需要编写的特定功能的WindowsCE应用程序。224.4.3WinCE的开发与应用由于WindowsCE自身良好的特点和开发工具环境的配套化、使用简单化,使得WindowsCE开发与应用相对比较容易,其一般流程如下:(1)对操作系统进行裁剪和配置,更改相应的配置文件(除内核外都是可选的);(2)OAL层(OEMAdaptationLayer)开发;(3)编译生成操作系统的镜像文件;(4)下载
本文标题:第4章 嵌入式操作系统v2
链接地址:https://www.777doc.com/doc-3329192 .html