【文档说明】嵌入式系统软件平台课件.ppt,共(240)页,3.145 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92655.html
以下为本文档部分文字说明:
嵌入式系统结构计算机系统结构嵌入式系统结构嵌入式系统组成第3章嵌入式系统软件平台嵌入式操作系统概述嵌入式操作系统的体系结构常用嵌入式操作系统嵌入式操作系统的开发在本质上与通用的操作系统没有太大的区别,一般用于比较复杂的嵌入式系统中手机、PDA等电子类消费产品、机顶盒、路由器等
对嵌入式系统的硬件有较高的要求体系结构向微内核方向发展可伸缩、可移植、可裁剪、可配置许多嵌入式操作系统不划分“系统空间”和“用户空间”操作系统的内核与外围应用程序之间不再有物理的边界,采用静态连接系统中所谓“进程”实际上全都是内核线程3.1嵌
入式操作系统概述嵌入式操作系统的意义:简单嵌入式系统8位或16位CPU,资源量,任务简单程序员自己管理调度CPU资源复杂嵌入式系统32/64位CPU,资源丰富,处理能力强,功能需求复杂需要采用嵌入式操作系统:管理系统的C
PU及外围硬件资源为应用程序提供一个多任务/多线程的编程环境和各种应用程序开发接口短时间内开发出功能强大、高效、可靠的系统嵌入式操作系统EOS(EmbeddedOperatingSystem)是一种支持嵌入式系统应用的系统软件,是嵌入式系统的重要组成部分。嵌入
式操作系统具有通用操作系统的基本特点,能够有效管理复杂的系统资源,完成进程管理、处理器调度、存储管理、设备管理、中断处理等操作系统任务。嵌入式操作系统通常包括与硬件相关的底层驱动程序、系统内核、设备驱动接口、通信协议、图形用户界面(GUI)、标准化浏览器等软件模块。嵌入式操作系统的概念
嵌入式操作系统能够把硬件虚拟化,使得开发人员从繁琐的驱动程序开发、移植和维护中解脱出来,能够提供库函数、驱动程序、工具集以及应用程序。嵌人式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。目前,市场上的嵌入式操作系统种类繁多,如VxW
orks、Nucleus、WindowsCE、μC/OS、pSOS、EmbeddedLinux、PalmOS、QNX、OS-9、EPOC、LynxOS等。以下给出各种嵌入式操作系统的常见分类方法。嵌入式
操作系统的种类1.按实时性能分类嵌入式系统按能否满足实时性要求,可分类为嵌入式实时系统嵌入式非实时系统这些特性同样适用于嵌入式操作系统(1)嵌入式实时操作系统(Real-TimeOperatingSystem,也称为嵌入式硬实时操作系统)性能特征
多任务运行方式真实世界中的事件具有异步特征,能够运行许多并发进程多任务运行方式则提供了一个较好的相对真实世界的匹配,它允许多个任务对应于许多外部事件的多线程执行,由系统内核分配CPU给这多任务来获得并发性基于优先级的抢占式调度真实世界的事件可以继承优先级,基于优
先级的抢占式调度反映了这一特征在该调度机制中,任务被指派优先级,在能够执行的任务(没有被挂起或正在等待资源)中,优先级最高的任务将被分配CPU资源,也就是说,当一个高优先级的任务处于可执行状态时,它立即抢占当前正在运行的较低优先级的任务快速的任务上下文
切换任务上下文切换是指当处理器的控制权由当前运行任务转移到另一个任务时其投入运行时所发生的事件序列,包括保存当前运行任务的运行现场信息、插入相应队列、并依据一定的调度算法重新选择一个任务使之投入运行快速的任务上下文切换是嵌入式实时操作系统的重要特征之一较短的中断
延迟时间中断延迟(InterruptLatency)时间是指中断发生到开始执行中断处理程序的时间较短的最大中断延迟时间也是嵌入式实时操作系统的重要特征之一典型的嵌入式实时操作系统VxWorkspSO
SQNXNucleusC/OS等(2)嵌入式非实时操作系统又称为“嵌入式软实时操作系统”典型代表是嵌入式分时操作系统也是一种多任务操作系统任务调度采用时间片轮转方式大的任务吞吐量典型的嵌入式软实时操作系统WindowsCEPalmOSEPOCEmbeddedLinu
x2.按购买方式分类商用型免费型(1)商用型嵌入式操作系统特点功能稳定、可靠提供完整方便的开发调试工具配套完善的技术支持和售后服务但往往价格昂贵典型代表VxWorks、pSOS、QNX、Nucleus、Wi
ndowCE、PalmOS、EPOC等(2)免费型嵌入式操作系统特点在价格方面具有优势一般缺乏完善的集成开发调试工具稳定性与服务方面存在挑战典型代表EmbeddedLinux和C/OS3.按源码是否开放分类按源码是否开放(OpenSource)划分为开放源码型黑箱型
(1)开放源码型嵌入式操作系统典型的开放源码型嵌入式操作系统有EmbeddedLinux和C/OS商用型嵌入式操作系统Nucleus也出售源代码(2)黑箱型嵌入式操作系统大部分商用型嵌入式操作系统为黑箱型嵌入式操作系统例
如pSOS、WindowCE等4.按知识产权分类按是否拥有自主知识产权划分为国外嵌入式操作系统自主知识产权型嵌入式操作系统(1)国外嵌入式操作系统目前国外嵌入式操作系统在嵌入式操作系统市场占有较
大份额常见的有VxWorks、pSOS、QNX、Nucleus、C/OS、WindowCE、EmbeddedLinux、PalmOS、EPOC等(2)自主知识产权型嵌入式操作系统Hopen针对微软的“维纳斯计划”推出的“女
娲计划”的核心产品,由凯思集团研制开发成功运行在32位微处理器上,由一个体积很小的内核和一些可以根据需要进行定制的系统模块组成DeltaOS(中文名为“道系统”)北京科银京成技术有限公司研制开发嵌入式操作系统的特征嵌入式操作系统负责嵌入系统的全部软、硬件资源
的分配、调度工作,控制协调并发活动。嵌入式操作系统体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。可定制性开放性、可伸缩性的体系结构。可移植性嵌入式操作系统能够支持多种嵌入式硬件,可以应用于不同的嵌入式微处理器。强实时性。EOS实时性一般
较强,可用于各种设备控制当中。低资源占有性嵌入式设备的硬件资源有限,一般只配置少量的RAM、频率较低的微处理器,最小的嵌入式操作系统内核只有几百千字节,在运行期间,内核能够通过一系列手段释放内存,使应用程序和应用软件得到更多的运行空间。固化代码在嵌入系统中,嵌入式
操作系统和应用软件被固化在嵌入式系统计算机的ROM中。辅助存储器在嵌入式系统中很少使用,因此,嵌入式操作系统的文件管理功能应该能够很容易地拆卸,而用各种内存文件系统。强稳定性,弱交互性嵌入式系统一旦开始运行就不需要用户过多的干预,要求负责系
统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统调用命令向用户程序提供服务。嵌入式操作系统的功能多任务管理对嵌入式系统中的运行软件进行描述和管理,并完成处理机资源的分配与调度存储管理如何来提高内存的利用率,方便用户的使用,并提供足
够的存储空间设备管理方便设备的使用,提高CPU和输入/输出设备的利用率中断管理负责中断的初始化安装、现场的保存和恢复、中断栈的嵌套管理嵌入式操作系统的演变*Percentoftotalsoftwa
resuppliedbyRTOSvendorinatypicalembeddeddevice10%*Kernel30%*KernelNetworkingFileSystem75%*KernelNetw
orkingFileSystemMultiprocessingMemoryManagementNetworkingUtilityWindowsAPIApplicationApplicationApplicationApplicat
ion90%*KernelNetworkingFileSystemMultiprocessingFaultToleranceDistributedObjectsAdvancedNetworkingAdvancedInterconnectJ
avaBrowser/GUI在嵌入式系统的发展过程中,从操作系统的角度来看,大致经历了以下几个阶段:无操作系统阶段简单操作系统阶段实时操作系统阶段面向Internet的阶段体系结构是操作系统的基础,它定义了硬件与软件的界限、内核与操作系统其它组件(文件、网络、GU
I等)的组织关系、系统与应用的接口。体系结构是确保系统的性能、可靠性、灵活性、可移植性、可扩展性的关键。3.2嵌入式操作系统体系结构操作系统是计算机系统的重要组成部分,是用户与计算机系统的接口。在进行操作系统设计前,首
先要明确操作系统的设计目标。嵌入式操作系统是操作系统的一个分支,所以设计目标首先应满足一般操作系统的设计目标。一般操作系统的设计目标和特点可靠性可靠性包含了正确性和健壮性两个方面的含义。影响操作系统正
确性的因素有很多,最主要的是并发、共享以及随之带来的不确定性。可靠性包括能在预期的环境条件下完成所期望的功能的能力。高效性操作系统的一个重要目标,是提高系统中各种资源的利用率,即提高系统的运行效率。一个计算机系统在
其运行过程中或者处于目态,或者处于管态。处于目态的时候为用户服务,处于管态时既可能为用户服务,也可能做系统维护工作。只能执行非特权指令,访问规定的寄存器和存储区;用户程序运行在用户态能执行一切指令,访问所有寄存器和存储区;操作系统运行在核心态易维护性
易维护性包括易读性、易扩充性、易剪裁性、易修改性等含义。为了对操作系统实施增、删、改等维护操作,必须首先了解系统,为此要求操作系统具有良好的可读性。可移植性可移植性是指把一个程序系统从一个计算机系统环境中移到另一个计算机系统环境中并能正常运行的特性。在操作系统的设计中,
影响可移植性的最大因素就是系统和计算机硬件有关的部分的处理。通常操作系统与硬件有关的部分被设计在操作系统程序的底层,在进行操作系统的移植时,只需修改操作系统的底层这一部分。安全性操作系统的安全性是整个计算机系统安全性的基础,它为保护用户
的程序和数据提供了最基本的安全机制。在网络环境中,操作系统的安全性更为重要。简明性如果一个操作系统没有简明性,那么该操作系统的设计和开发人员在工作中就很难清晰地了解和掌握该操作系统的设计。如果一个操作系统缺乏
简明性,那么在系统的修改和维护过程中,将会产生许多意想不到的困难。嵌入式操作系统的设计目标和特点低资源占有性开放性、可伸缩的体系结构高可靠性满足实时性要求较强的网络功能固化代码功能操作系统的体系结构问题讨论的是如何把操作系统这一大型软件划分
成若干较小的模块以及如何设计模块间接口的问题。通用操作系统的体系结构无序模块结构分层结构虚拟机结构客户端/服务器结构无序模块结构采用这种结构的操作系统是一个整块结构,内部分为若干模块,每个模块可以是一个子程序。模块之间直接相互调用,不分层次,形成网状调用模式。在无序模块结构的系统中,为
了构造最终的目标操作系统程序,开发人员首先将一些独立的模块进行编译,然后用链接程序将其链接在一起,成为一个单独的目标程序。适用于模块比较少的小型系统中。硬件系统服务用户态核心态应用程序应用程序…无序模块结构分
层结构分层结构操作系统按功能把系统分成若干基本模块,再根据模块的作用和相互关联分为不同的层次,各层次之间单向依赖或单向调用。尽可能地减少各模块间的相互调用,使模块间的无序调用变为有序调用。操作系统在设计时,可以从最底层,向上一层扩
充功能,最终形成面向应用层。硬件基本进程管理虚存管理I/O和设备管理进程间通信文件系统用户用户模式内核模式分层结构优点:把整体问题局部化把各模块间的组织结构和依赖关系进行了清晰的划分,把原来的无序任意调用变为有序、有组织和有限制的调用各层之间相对独立,增加或删
除某一层时,可以不影响其他层,便于系统的修改、扩充THE系统为荷兰制造的ElectrologicaX8计算机配备的一个简单的批处理系统。虚拟机结构VM/370系统一个提供多道程序特性的分时系统,一个具有比裸机更方便的、界面扩展的计算机VM/370系
统的核心称作虚拟机监控程序,在裸机上运行并具备多道程序功能,向上层提供若干台虚拟机。VM/370系统仅仅是裸机的精确复制,包含核心态/用户态、I/O功能、中断以及真实硬件具有的全部内容。每台虚拟机可以运行裸机能够运行的任何操作系统
,不同的虚拟机可以运行不同的操作系统。客户端/服务器结构运行在核心态的内核提供所有操作系统基本都具有的操作,一般采用层次结构设计,构成基本的操作系统,更多的功能留给进程层去实现。运行在用户态并以客户端/服务器方式运行的进程层。进程层分
为服务器进程和客户端进程。每个服务进程间相互独立,各自实现一组服务;客户端进程可以是一个应用程序,也可以是另外一个服务进程。硬件进程服务用户态核心态应用程序客户内存服务微内核文件服务网络服务显示服务发送应答客户端/服务器结构
(微内核结构)运行方式:为了获取某项服务,用户进程将此请求以消息的方式发送给一个服务器进程,但服务器进程并不能直接收到客户端发送的消息,因为每个进程属于不同的地址空间,它们不能直接进行通信。消息先发送给内核,内核再将消息发给服务器进程,服务器进程执行相应的操作后,其结果又通过内核以消
息的方式返回给用户进程。优点:强的可靠性适用于分布式系统性能问题:通过微内核构造和发送信息、接受应答并解码所花费的时间比进行一次系统调用的时间多很大程度取决于微内核的大小和功能嵌入式操作系统体系结构目前嵌入式操作系统主要采用分层和模块化相结合的结构或微内核结构。
分层和模块化结合的结构将操作系统分为硬件无关层、硬件抽象层和硬件相关层,每层再划分功能模块。移植工作集中在硬件相关层,与其余两层无关,功能的伸缩集中在模块上,从而确保其具有良好的可移植性和可伸缩性。采用微内核结构,则
可利用其可伸缩的特点适应硬件的发展,便于扩展。中间件和设备驱动程序通常集成在系统内核中。整个系统只有一个可执行文件,里面包含了所有的功能组件。系统的结构就是无结构,整个操作系统由一组功能模块组成,这些功能模块之间可以相互调用。性能较好,系统的各个模块之
间可以相互调用,通信开销比较小体积庞大,高度集成,相互关联,在系统剪裁、修改和调试等方面较为困难单体结构操作系统被划分为若干个层次(0~N),各个层次之间的调用关系是单向的。系统的开发和维护较为简单开销比较大,影响系统的规模和性能分层结构微内核结构的
操作系统是指在内核当中,把操作系统的大部分功能都剥离出去,只保留最核心的功能单元。易于扩展、调试方便、移植性好运行速度比较慢微内核结构内核比通用操作系统更小,将更多的功能放在外部进程实现大多数嵌入式操作系统采用了微内核的结构,内核只提供
最基本的功能。采用模块化的设计,使系统可配置性增强嵌入式操作系统一般都采用模块化的结构设计,是一个可配置的软件模块集。从结构设计上要使平台独立性更强,系统易于向其他平台移植从处理器到目标机,嵌
入式操作系统面临的是一个多变的硬件环境。结构设计:系统体系结构对不同处理器的支持,实现包括编码差异和指令系统定向的支持一般设计在CSP层驱动程序实现对不同目标机主板的支持,一般设计在BSP层BSP按照给定
的编程规范来完成,保证了嵌入式操作系统可以在新推出的微处理器硬件平台上运行。硬件抽象层接口的定义和代码设计特点:硬件抽象层具有与硬件密切相关性硬件抽象层具有与操作系统无关性接口定义的功能应包含硬件或系统所需硬件支持的所
有功能接口定义简单明了,太多接口函数会增加软件模拟的复杂性具有可测性的接口设计有利于系统的软/硬件测试和集成。应用程序任务管理硬件用户扩展处理调度管理硬件抽象层应用编程接口内存管理中断管理时钟/定时器管理I/O管理出错处理同步、通信管理(消息队列,信号量,事件,异步信
号))DeltaCORE的体系结构:层次+模块结构分层次模块化用户模式应用应用应用网络管理器图形管理器设备管理器文件系统管理器网络驱动图形驱动设备驱动文件系统驱动硬件内核模式内核(微内核)QNX4.25的体系结构:客户/服务器结构
WindowsCE.NET操作系统模型什么是WindowsCE.NET适于嵌入式产品的、小映像尺寸的、32位实时,多任务,抢占式嵌入式操作系统。Win32API子集高度组件化和可配置对标准硬件和特定硬件都可定制设计目
标:适应小型系统支持多种处理器和计算机结构,并支持多种设备接口遵循Windows平台的应用开发规范操作系统各部分模块化,可选择定制提供网络通信、图形用户界面、数据库、文件系统等支持支持高要求的实时应用提供高级电源管理特点:灵活的电源管理功能,包括睡眠/唤醒模式使
用了对象存储技术,包括文件系统、注册表及数据库良好的通信能力256个中断优先级别,支持嵌套更好的线程响应能力出色的图形界面多任务处理能力内置的多媒体处理功能系统模型分层模型组件模型迁移模型应用迁移模型系统迁移模型分层模型从接口的角度讲,WindowsCE.NE
T具备面向应用开发和面向系统两个界面。有一个层次实现硬件特点与操作系统本身特性的隔离,以便于实现系统的移植。底层是具体的硬件设备,顶层是具体的应用程序。组件模型OEM层模块:OAL模块包括和硬件相关的功能引导程序负责将操作系统核心调入内存配置文件根据不同硬件系统的特点,进行相关
文件的配置驱动程序使操作系统能驱动不同的硬件,既而实现了操作系统与具体硬件的分离操作系统层模块CoreDLL对外部调用系统功能进行代理,实现系统API的管理和按名调用实现字符串处理、随机数生成、时间计算等基本支持函数核心Windo
wsCE.NET操作系统的核心在系统运行时体现为nk.exe,一个占用空间很小的核心文件设备管理模块WindowsCE.NET操作系统对设备进行管理的核心模块,运行时表现为device.exe。提供基本的设备列表管理、即插即用管理、I
/O资源管理以及设备驱动程序工作的基本机制图形窗口和事件系统模块WindowsCE.NET与微软通用桌面操作系统区别较大的一个模块,运行时表现为gwes.exe。实现基本的绘图引擎、窗口管理、界面的事件机制通信和网络服务模块在WindowsCE.NET操作系统中是相
对最为独立的一个模块完成WindowsCE.NET操作系统与外界网络的通信功能,为操作系统上层提供网络服务对象存储模块对象存储是指WindowsCE.NET的存储内存空间。包括三种类型的数据:WindowsCE.NET文件系统,包括数据文件和程序、系统注册表、W
indowsCE.NET数据库应用和服务开发模块包括WIN32系统服务模块WindowsCE.NET对应用程序的接口在应用开发和服务开发时,系统利用这一模块完成开发者的系统调用。系统模型应用迁移模型系统迁移模型3.3常用嵌入式操作系统嵌入式实时操作系统嵌入式软实时
操作系统嵌入式实时操作系统VxWorkspSOSC/OSVxWorks1.VxWorks概述美国WindRiver公司于1983年设计开发高实时性和稳定性的微内核、友好的用户开发环境、良好的持续发展能力,全球商用市场占
有量排名第一广泛应用于通信、军事、航空、航天等高精尖技术及实时性要求高的工业控制领域美国F-16、FA-18战斗机、B-2隐形轰炸机和爱国者导弹上1997年和2004年两次在火星表面登陆的火星探测器商业用户包
括Ciscosystems、BayNetworks、3Com、Foresystems、HP、Lucent、Qualcomm、以及国内的华为、东方电子等2.VxWorks基本特征(1)高实时性、高稳定性的微内核内核Wind:微内核结构,最小8KB
实时性基于优先级的抢占式调度辅以时间片轮转及时响应高优先级的任务,同级任务可选择时间片轮转而并发执行快速的任务上下文切换较小的中断延时相应措施如采用中断处理与任务在不同栈中处理,使得中断的产生只会引发一些关键寄存器的存储而不会导致任
务的上下文切换在中断服务程序只完成在最小时间内中断发生通告,而将其它费时的处理过程尽量放在被引发的其它任务中完成(类比:参加展会)高稳定性(2)丰富的外挂组件模块基本外挂组件模块各种设备驱动(
字符型/块型设备,同步/异步设备)、文件系统(如DosFs、RawFs、TapeFs、CdromFs、TSFS等)、网络协议栈、以及POSIX1003.1b标准和ANSIC等兼容组件模块附加组件模块如Flash文件系统、图形界面管理等(3
)可裁减性粒度极小的配置裁减性能微内核结构,最简内核(只负责任务的管理与调度,称为纳核)只有8KB其它所有基本外挂组件和附加组件均为可选组件,并且这些组件本身也是可裁减的方便友好的配置裁减环境图形
化自动裁减特性,自动分析功能(4)对多种硬件平台的可移植性支持ARM、PowerPC、68K、CPU32、SPARC、i960、X86、MIPS等众多嵌入式处理器,并提供相应的BSP模板提供了数量众多的串口、并口
、网口、存储卡控制器、实时时钟等外围硬件设备的驱动程序(5)友好、开放的集成开发环境Tornado的可视化图形操作界面,可运行在多种主机硬件平台和操作系统上支持的主机硬件平台:Sun、HP、IBM-rs6000、Mips等支持的主机操作系
统:Unix、WindowsNT/95/98等Tornado的IDE集成了编辑器、编译器、链接器、调试器(命令行和图形界面两类调试器)、软件仿真器、工程项目管理器等系列开发工具Tornado的开放性能与第三方开发工具进行集成(6)持续的新技术跟踪和版
本升级维护能力表现最早实现捆绑集成交叉开发环境最早在其内核中加入TCP/IP网络协议又率先宣布支持网络文件系统NFS在集成最新网络协议方面也一直保持良好的势头原因——收购在相关领域有优势的公司收购开发pSOSystem
嵌入式实时操作系统的ISI,VxWorks在其5.5版本中加入了与pSOSystem类似的任务间的事件(Event)通讯机制,并进行了进一步改进,从而弥补了VxWorks5.5版本以前任务间无事件通讯机制的缺陷通过收购RapidLogic公司的RapidControl,VxWor
ks迅速推出了EmbededWebServer组件(7)价格较高较高的开发购买价格在运行使用方面,VxWorks采用的是出售Licence的销售策略3.VxWorks其它特色相对pSOSystem等较优秀的嵌入式实时操作系统,VxWorks还具有4项显著优点(1)优秀的项目管理能力开发
环境Tornado引入的项目(Projects)的概念,使源代码和整个目标映象生成的组织管理工作条理化、方便化配套相应的项目管理工具可自动生成编译使用的Makefile文件(2)支持应用程序动态链接和动态下载使开发者在调试阶段省去了每次调试都需将应用程序和操作
系统进行链接和下载的步骤,缩短了编辑/调试的周期(3)提供目标机仿真器VxSim使开发者可独立于硬件环境而先行开发应用程序,实现并行开发模式,有效缩短研发时间和硬件方面的开销(4)支持系统级和任务级两种调试方式方便了多任务程序
的调试,如跟踪任务间的通讯状况、任务间的同步与互斥关系pSOSISI公司(IntegratedSystemInc.)1980年研制集成了一整套嵌入式软件模块、工具和服务几年前销售额占世界第一,在中国市场占有率曾经也是最高的主要应用领域包括通讯、航天、信息家电以及工业控制
,例如华为早期的路由器、烟台东方电子的RTU、株洲电力机车研究所的DTECS控制器等现被WindRiver收购C/OS1.C/OS概述C/OS是microControlOS的缩写,即微控制器操作系统由美
国人JeanLabrosse1992年完成,1998年C/OS推出µC/OS-II版本,目前版本是µC/OS-IIV2.61源码公开、免费(WWW.μC/OS-II.COM)2.C/OS的特点(1)内核方面任务的调度与管理方面µC/OS-II管理64个任务,其
中保留8个给系统,应用程序最多可以有56个任务多任务的调度采用基于优先级的抢占式调度算法,且全部系统函数调用与服务的执行时间具有可确定性,因此C/OS具有优良的实时性能不支持时间片轮转调度现实世界有些任务无法区分出优先级高低,需要交替执行。例:用单片机控制两小块显示屏时任务间的的通讯
机制方面提供经典操作系统任务间通信方法,包括信号量、邮箱、事件标志和消息队列时钟管理方面提供系统时钟中断没有提供用户使用的定时器内核具有较高的稳定性和可靠性(2)功能模块方面C/OS本质是
一个实时多任务内核目前已扩充了一些简单的文件系统(FS)、TCP/IP协议栈、图形用户接口(GUI)等功能模块软件包(3)可裁减性C/OS内核结构小巧具有可裁减性(4)对不同硬件平台的可移植性移植到不太常用的嵌入式微处理器上时,必自己编写BSP程序没有
提供功能强大的驱动软件包,通常需要自行编写(5)提供的集成开发环境无(6)服务与价格方面技术服务方面C/OS不如商用嵌入式实时操作系统那样得到专门人员的持续更新研究和升级服务另一方面,由于其源码公
开,用户可以根据自己的需要对它进行修改价格方面:仅内核免费3.C/OS小结优点实时性能优良、执行效率高、占用空间小内核免费对小型企业具有较大的吸引力,一般适用于中小型嵌入式应用和对实时性能要求较高的低端嵌
入式控制系统产品中(如由51系列的8位单片机系统构成的控制系统产品)内核源码开放,可作为科学研究的典范缺点任务调度仅支持优先级的抢占式,不支持时间片,造成多任务划分不方便未提供用户使用的定时器和集成开发环境移植到不同硬件平台时,用户工作量大技术服务不如商用嵌入式实时操作系统那样能得到专
门人员的持续更新研究和升级嵌入式软实时操作系统PalmOSWindowsCEEPOCEmbeddedLinuxPalmOS1.PalmOS概述由PalmComputing公司出品PDA市场占有
量较大发展历史1992年,PalmComputing公司成立,最初只是想把自己开发的手写识别软件Graffiti(一种PDA速记输入法)卖给Apple1993年Apple发布了第一款Newton掌上电脑,使用自己开发的操作系统,也是世界上第一款没有键盘而使用触控笔来操作的掌上
电脑,这种全新的硬件形式也确定了今后掌上电脑的发展方向,成为现代掌上电脑的鼻祖Newton最终以失败而告终,但它不愧为一款具有划时代意义的产品,带来了“PDA”和“手持”这两个计算机术语随之而来的PalmOS获
得了空前成功,其代表性掌上电脑产品有PalmPilot和PalmIIIx等2.PalmOS的特点(1)内核方面属于32位嵌入式操作系统内核较小,应用程序通常也只有几十KB基于PalmOS的PDA配置较低
,内存2MB~12MB即可内核采用抢占式多任务管理方式,但不向开发者提供与多任务有关的APIs(2)功能模块方面支持PalmOS的应用程序十分丰富约5000套,包括个人信息管理、办公软件、数据库支持、电子邮件等操作界面采用触控式支持PalmOS的产品的系统
耗电量极小以PalmⅢx为例,两节7号碱性电池一般可使用两个月无录音、MP3播放功能等多媒体功能,仅支持256色以下彩色图形显示仍然要使用中文外挂平台,有相当部分依然是以英文界面为主(3)可裁减性采用微内核结构,各功能模块具有
可裁减性(4)可移植性支持的嵌入式处理器Motorola的DragonBall(PalmOS5.0前版本)ARM(PalmOS5.0版本)PalmOS阵营里使用四种不同的内存扩展技术Palm、Handspring、TRG
pro、Sony四家公司无法相互使用扩充资源——Palm的劣势(5)提供的集成开发工具有多种集成开发工具可供选择,例如PalmOSSDK、CodeWarrior、VisualFormDesign等PalmOSSDK由PalmOS开发商提供提供PalmOSEmul
ator,能够模拟多种型号的Palm掌上设备,可用于程序的测试和除错CodeWarrior是Windows或MacOS平台上最流行的集成开发环境集成了C/C++编译器、源代码和汇编级调试器、可视化模板拖放式用户开发界
面,可快速设计用户界面,简单易学Palm公司定期推出配合CodeWarrior使用的开发工具(6)服务与价格免费提供PalmOS的开发工具PalmOSSDKPalmOS较同档次的其它PDA操作系统略低3.PalmOS小结优点占用存储空间小、执行
速度快、功耗较低——简单、实用、高效目前在PDA应用领域拥有较大的市场份额不足用户应用程序不支持多任务编程多媒体功能弱支持的处理器硬件平台种类少集成扩展性能差等WindowsCE1.WindowsCE概述Window
s操作系统家族的新成员应用领域为多媒体信息设备代表产品如康柏iPAQPocketPCH3630、联想天玑3000、惠普Jornada545掌上电脑等版本WindowsCE3.0、WindowsCE-NET、PocketPC2002、Sm
artPhone2002等WindowsCE不是WindowsNT或Windows9x的一部份或缩减版本是为有限资源、微处理器可移植性的硬件平台设计的多线程嵌入式操作系统具备独立开发的内核和独一无二的设备驱动程序模型当然,
WindowsCE仍然享有WindowsNT和Windows9x的部分关键功能特如承袭Windows的一贯风格,提供强大的图形用户界面和多媒体功能2.WindowsCE的特点(1)内核方面属于32位、多线程的嵌入式操作系统内核提供多线程调度管理、同步原语、中断
处理、定时器、内存管理等服务基于优先级的多线程抢占调度管理方式但实时性能仍欠佳,属于软实时操作系统内核本身较大,对嵌入式处理器要求高,需要使用的内存容量大(2)功能模块主要功能模块包括:对象存储模块、图形窗口事件子系统(GWES)模块和通信模块
对象存储模块:用于永久存储,包括文件系统、注册表和数据库GWES(GraphicsWindowingandEventsSubsystem)模块:相当于桌面Windows的图形设备接口GDI和用户库通信模块:
负责与桌面PC、其它CE设备和因特网的互联具有录音、音视频播放等多媒体功能集成的应用程序Word、Excel和Outlook等针对手持设备的PocketOFFICE软件专门用于手持设备的浏览器Pock
etIE。能耗方面明显逊于Palm0SWindwosCE支持彩色显示WindowsCE本身对于资源的巨大吞噬作用(3)可裁剪性模块化结构每个模块又分成许多小组件具有可裁减性(4)对不同硬件平台的可移植性已支持一定数量的嵌入式微处理器体系结构,但仍不够广泛目前支持X86、ARM、M
IPS和SH等系列还可通过OEM适配层OAL适配到任何硬件平台OAL(OEMAbstractionLayer)是驻留在CE内核和硬件之间的代码层原始设备制造商使用这些代码把CE适配到自己的硬件上,OAL链接CE的内核和定制的硬件(5)提供的集成开发工具Windo
wsCEPlatformBuilder3.0,包括WindowsCEAdd-onPack(插件包)EmbeddedVisualTools由面向嵌入式系统开发而进行优化的EmbeddedVisualBasic和EmbeddedVisualC+
+、编程工具、交叉编译器、汇编程序组成还包括一个用于应用程序开发的扩展仿真环境各种调试工具(6)服务与价格在技术服务方面,WindowsCE努力寻求第三方的支持鼓励第三方独立软件供货商(ISV,Indepe
ndentSoftwareVendor)去开发和销售能在各种设计之间平衡的软件ISV软件已日益增多,有开发工具、设备驱动程序、应用程序和组件在价格方面,WindowsCE作为一套商业型嵌入式操作系统,不能免费提供3.Windows
CE小结优点提供的功能模块组件丰富,尤其是在图形界面接口GUI和多媒体方面具有明显优势,适用于信息设备提供与Windows平台相似的集成开发环境和API接口函数,使WindowsC/C++开发人员能够迅速的转到嵌入式系统
的开发上来,极大减少了开发者对新工具和新环境的学习掌握时间和费用不足之处内核仍较大,对硬件要求高,消耗资源多,耗电量大支持的嵌入式微处理器种类和提供的设备驱动程序不够丰富微软自身投入的WindwosCE售后技术支持服务力量较弱
EPOC1.EPOC概述EPOC是一个稳定的无线操作系统使用C++语言编写,采用完全面向对象的设计方法分为三种类型:Pearl/Quartz/Crystal分别对应普通手机、智能手机、HandHoldPC场合的应用,
因此可以满足从低端的无线电话应用到多功能无线个人通信器的需求目前EPOC拥有超过70%的智能手机市场占有率EPOC名称由来的两种解释一种说法:EPOC是取“ElectronicPieceofCheese”第一个字母而来,即“使
用电子产品时可以像吃奶酪一样简单”——EPOC在系统设计时所坚持的理念另一种说法:EPOC来自“Epoch”,即纪元、时代的意思,体现了其公司的野心EPOC的历史:EPOC、Pison和SymbianPison最初创立了PisonSoftware公司,它在20年前就
开发出了EPOC的前身,用于该公司开发的个人组织器(PersonalOrganizer)上1998年,PisonSoftware将EPOC这个操作系统独立出来,并联合Nokia、Ericsson、Mo
torola以及Panasonic、Siemens、Samsung等大型移动通讯设备商出资组建了一家新公司Symbian。该公司得到Pisonsofware的授权,在EPOC系统的基础上开发用于第三代无线智能型电话
和终端的无线操作系统当前,EPOC32操作系统已从一个用于结构较简单的个人组织器的无线操作系统,发展成为现在完全具有多任务处理能力的32位操作系统。EPOC的设计目标与现在用于蜂窝电话的操作系统类似,其重点放在
电源管理、对内存和执行速度的的设计等方面上2.EPOC的模块化结构EPOC分为独立的四层:核心层服务器层系统层应用层(1)核心层与可移植性EPOC的核心层也称基层(BaseLayer)核心层主要功能
多线程调度:高优先级的线程首先运行内存的使用保护机制:被一个任务占用的内存不可以再被其它任务访问节省能源:空线程请求CPU进入电源节省状态提供EPOC易于移植到新硬件的功能:提供硬件抽象层和各种设备的驱动程序(2)服务器层采用
客户/服务器的框架结构,提供的服务器:窗口服务器字库/位图服务器过程服务器套接服务器声音服务器数据库服务器文件服务器报警服务器等(3)系统层定义与用户接口相关的功能,如对话框、菜单、工具条、图标、列表控制和编辑控制等定义了几类基本的显示和输入设备640×240像素显示
设备与之配套的键盘240×320像素指示设备310×120像素的显示设备与指示设备200×200像素输入面板。前两类主要应用在个人通信器中,后二者主要用于智能电话。EPOC要求各独立软件厂商(ISV)提供的软件
必须兼容上述标准为了保持系统的灵活性,EPOC系统层还提供了一个设备系列参考设计(DFRD)6(4)应用层主要定义能够在EPOC操作系统上使用的各种应用,如浏览器、字处理软件、画图等还定义了EPOC使用的应用编程接口(API)使用了一个
Java虚拟机(JVM),具有独特的“一次编程,到处运行”的特性因此,使用无线JavaAPI开发某种移动设备的EPOC应用并可以直接用在其它类型设备上,将会大大提高开发效率3.EPOC小结EPOC在智能移动终端上拥有强大通信能力以
及应用程序,包括:一个健全的核心企业用标准通信传输协议Sunjava语言与他人互相分享信息、浏览网页、传输、接收电子信件、传真以及个人生活行程管理等应用程序提供声音、触控笔和键盘等无线通讯装置间多种沟通方式在硬件扩展性方面为
制造商在设计上预留了多种接口等EPOC的前景除EPOC外,用于第三代移动通信设备的嵌入式操作系统还有PalmOS、WindowsCE和EmbeddedLinux等将来EPOC能否取得成功,这主要
依赖于Symbian向其它手持计算和电信厂商发放EPOC使用许可证的数量目前通信业的一些领导厂商如Sun、Philips和NTTDoCoMo已经加入Symbian联盟中并取得了EPOC使用许可证3.4嵌入式Linux系统的开发嵌入式
Linux系统构成嵌入式Linux开发流程嵌入式交叉编译环境的创建EmbeddedLinux1.EmbeddedLinux概述商业化的操作系统高昂的价格使众多生产低端产品的小公司望而却步C/OS源码开放、免
费,但仅仅是个实时内核EmbeddedLinux源码开放、免费,同时提供强大功能,包括支持多种文件系统、内置TCP/IP等网络协议、支持图形用户界面—XWindows等,并且易于移植目前Embedd
edLinux得到了Motorola、Samsung等主要国际厂商的支持2003年初,Motorola卖掉了所持Symbian股份,同时发布了第一款采用EmbeddedLinux操作系统的智能手机A760;Motorola表示,它计划最终要
在该公司生产的大部分手机中采用EmbeddedLinux操作系统,包括价格便宜的手机2.EmbeddedLinux的特点(1)内核方面从内核的构造方式而言,EmbeddedLinux主要包括精简Linux版本抢占式内核Linux双内核Linux版本精简Linux版本重点关注的是嵌入
式系统的有限资源问题对Linux内核重新进行编译,在编译时选择嵌入式设备需要的功能模块,删除不需要的功能模块(如MMU);通过对内核的重新配置,可使系统运行所需要的内核显著减小,从而减少对资源的使用量对Linux的实时性问题未给予更
多的关注,它仍继承了Linux的多进程分时调度系统,属嵌入式分时操作系统精简Linux版本的典型如CLinux(microConrolLinux)抢占式内核Linux版本直接修改Linux内核代码中的调度算法机制,将Linux内核修改成称为RelativelyFullyPreempt
ableKernel的抢占式内核,以达到一定的实时性是一种软实时的Linux该版本典型如MontaVista公司发行的具有商业性质的MontaVistaLinux双内核Linux版本双内核体系结构在已有Linux分时通用内核基础上再增加一个实时内核,两个内核共同工作,实
时内核用来运行实时任务,Linux原来的分时通用内核作为实时内核的一个可抢占任务,运行非实时任务优点:实时内核短小精悍,可一定程度满足系统实时性能要求,而非实时内核仍可以保持现在Linux内核强大的功能,将两者有机地
结合起来,可以充分使EmbeddedLinux满足信息电器时代的要求双内核Linux版本的典型如美国新墨西哥州大学计算机科学系开发的NMTRT-Linux、RTAI(RealTimeApplicationInterface)等此外,Linux的内核安全可靠性高Linux
的内核与用户空间的内存管理分开,不会因为用户的单个程序错误而引起系统崩溃(2)功能模块EmbeddedLinux继承了Linux的传统,采用的是模块化的设计,各模块提供强大的功能并具有可裁减性例1:继承了l
inux完善的文件系统性能,采用romfs文件系统,相对于一般的ext2文件系统要求更少的空间例2:继承了linux网络操作系统的优势,基本上所有的网络协议和网络接口都可以找到例3:支持图形用户界面——XWindows系统XW
indows是一种与平台无关的客户/服务器(Client/Server)模型,可以让用户在一台机器上调用另一台机器的XWindows库,打开另一台机器上的窗口,而并不需要考虑这两台机器自己本身的操作系统类型(3)可裁减性模块化结构,具有可裁减性(4)对不同硬件平台的可移植性Embe
ddedLinux提供对多种处理器的支持,并且正在进一步增加对嵌入式微处理器的支持目前支持Intel的X86、ARM、MIPS、Motorola/IBM的PowerPC、Motorola的68K、Compaq(DE
C)的Alpha、IA64、S/390、SuperH等处理器体系结构(5)提供的集成开发工具仍采用GNU开发套件来完成应用程序的开发GNU包括Gcc、Gdb等一系列编译调试工具Gdb为命令行式调试工具,GNU
未提供图形化的多任务、进程调试工具各应用程序模块可单独编译,动态链入到内核或从内核中删除,不需要与内核一起编译链接,开发调试方便。(6)服务与价格与C/OS类似,EmbeddedLinux的显著优势也体现在它是一类源码开放的、免费的嵌入式操作系统只要遵循GPL(GNUGene
ralPublicLicense)的规定,就可以获得免费拷贝,且通过Internet网可获得丰富的技术文档资料3.EmbeddedLinux小结优点EmbeddedLinux是Linux的精简版本或演化版本,它继承了Linux的诸多优点,包括:采用模块化体系结构,
各模块具有可裁减性,内核安全可靠提供功能强大的文件系统、网络协议模块、窗口管理器等支持多种微处理器平台提供GNU开发套件,支持模块动态链接提供源代码开放的免费版本等不足之处内核仍然较大,占用内存资源多未能提
供图形化的多进程调试工具等一些发行版RedHatFedoraCoreMandrakeSuseDebian红旗嵌入式Linux系统结构图代码执行顺序先后加载内核初始化平台初始化外设初始化内核执
行应用程序嵌入式Linux系统构成嵌入式Linux也是Linux基于主流的Linux内核源码开发不同的类型对内核有不同的修改基于标准Linux系统构架定制嵌入式系统Linux系统的构成硬件平台引导程序Linu
x内核Linux文件系统网络接口串口LCD和触摸屏接口存储器单元CPU扩展口SD卡USB接口红外接口IIS接口输入设备电源嵌入式系统与PC相同点设备名称CPU内存存储设备输入设备输出设备声音设备接口其他设备嵌入式系统嵌入式处理器SD
RAM芯片Flash芯片按键,触摸屏LCD音频芯片MAX232芯片USB芯片,网卡芯片PC机CPUSDRAM,DDR内存条硬盘鼠标,键盘显示器声卡主板集成主板集成或外接卡不同点引导代码操作系统驱动程序协议栈开发环境仿真器Bootloader引导,针对不同
电路板进行移植WinCE,VxWorks,Linux等,需要移植每个设备驱动都必须针对电路板进行重新开发或移植,一般不能直接下载使用需要移植借助服务器进行交叉编译需要主板的BIOS引导,无须改动Windows,Linux等,不需要移植操作系统含有大多数驱动程序,或从网上下载直接使用操作系统包
括,或第三方提供在本机就可开发调试不需要硬件平台Linux几乎可以支持所有体系结构的处理器X86,PowerPC,ARM,XScale,MIPS,SH,68K,Alpha,SPARC,„能够支持带MMU和不带MMU的处理器uC
linux支持不带MMU的处理器对于Linux开发需要针对特定的硬件开发板通常半导体商能够提供处理器的开发板板上固件和引导程序具备硬件初始化和引导Linux启动的功能。引导程序引导程序就是bootloaderBoo
tloader的定义Linux的bootloader开发源码的bootloader介绍Bootloader的定义BootloaderBootloader是引导设备启动并且执行主程序的固件Monitor
除了引导功能,Monitor还有命令行的接口,可以有调试、读写内存、擦写FLASH、配置参数等功能。习惯上,可以把上面两种软件都叫做“bootloader”Linux的bootloader所有Linux系统都需要通过bootloader引导启动
对于嵌入式Linux系统,需要专门定制引导程序已经有各种各样的bootloader供嵌入式系统使用PPC和x86平台已经有众人皆知的bootloader其他体系结构没有标准的bootloader依赖于硬件供应商提供的bootloader开放的和商业的bootloa
der开放源码的Bootloaderx86BootloadersX86平台的2个主要引导程序:LILO和GRUBLILO和GRUB工程的Makefile不允许交叉编译,需要X86主机上本地编译。其他Bootloa
ders:Rolo,EtherBoot,LinuxBIOS很少用应用于特定环境下ARMBootloadersU-Boot已经成为标准的ARMbootloaderArmboot跟ppcboot合并,成为u-boot支持arm720,arm
920,arm926,sa1100,xscale…Blobblob是由LART工程中开发的bootloaderbolb已经移植到其它基于ARM的系统上Redboot也能支持PowerPCBootloadersU-boot是PowerPC平台的主要引导程序Ppcboot是u-boot
的前身能够支持上百的PowerPC板子支持PPC4xx,5xx,8xx,82xx,7xx,74xx…等系列处理器OpenBIOS开放源码的IEEE1275-1994兼容的固件支持一些IBMPPC405的板子Red
boot也能支持MIPSBootloadersYAMONMIPS嵌入式Linux系统的标准引导程序MIPS公司的开放源码的软件支持大多数的MIPS开发板PMON作为初始化代码使用需要移植到自己的开发板上U-boot和Redboot也能支持其它boo
tloaderSuperHsh-boot是SH平台的标准引导程序Redhat也能支持M68KRedhat能支持没有标准的bootloader商业的bootloaders硬件供应商可以提供开发板可以提供源代码OEM
板仅提供二进制的通常不允许客户任意发布可以得到开发手册和支持Bootloader可以从网络上获得,根据具体的硬件进行修改,最后生成.bin的二进制文件,输入相应的存储器的前512字节中,从而完成硬件的初始化及内核的引导。Linux内核Linux内核版本发布Linux内核功能L
inux内核特点Linux内核编译配置Linux内核版本发布主版本号每2-3年发布一个主版本例如:1.0,2.0,2.4,2.6--偶数稳定版本每1-2个月发布一个稳定版本例如:2.0.40,2.2.26,2.4.27,2.6.7...开发版本在某个稳定版本发布之前,开
发者使用的版本Examples:2.3.42,2.5.74Linux内核功能处理器管理存储管理设备管理文件系统管理网络管理内核在系统中的位置从程序员的角度操作系统内核提供了一个与计算机硬件等价的扩展成虚拟的计算平台,抽象了硬件细节从
用户的角度操作系统是一个资源管理者,用户可以以某种易于理解的方式组织自己的数据。内核子系统进程调度(SCHED)控制进程对CPU的访问内存管理(MM)多个进程安全共享主内存区域虚拟文件系统(VFS)
隐藏各种不同硬件的具体细节,为所有设备提供统一的接口网络通信(NET)提供对各种网络标准协议的存取和各种网络硬件的支持进程间通信(IPC)支持进程间各种通信机制Linux内核特点可移植性支持绝大多数的硬件板可定制性能够运行在超级计算机
上,也可以运行在很小的嵌入式设备上(4MRAM)兼容标准和具有互操作性丰富的网络支持安全性任何缺陷都会被发现,很多专家都在研究它的代码.稳定性和可靠性模块化内核可以仅包含系统运行必须的东西方便
编程可以通过学习已有的代码和网络上丰富的资源内核目录结构:/usr/src/Linux-***/arch/drivers/fs/include/init/ipc/kernel/mm/net编译模式:直接编译进内核编译成模块Linux内核编
译进入到内核源代码目录cd/usr/src/linux-2.6.15步骤:编辑Makefile文件在Linux下进入目录/usr/src/linux-2.6.15进行内核的配置编译生成的文件vmlinux未压缩的Linux内核arch/<arch>/boot/zIma
ge经zlib压缩后的Linux内核arch/<arch>/boot/bzImage经zlib压缩后的Linux内核,b是指big/boot/vmlinuz-<version>经zlib压缩后的Linux内核/boot/S
ystem.map-<version>内核符号地址/boot/initrd-<version>.imgramdisk,要挂载的根文件系统/lib/modules/<version>模块modules.dep模块依赖文件Linux内核配置makeconfig基于交互式的文本
配置界面每个问题以线形格式出现,并被一个一个地回答,而且一旦作出回答就不能再修改makemenuconfig以文本窗口的形式进行核心配置以窗口作为人机交互界面,可随时获得系统的帮助makexconfig与menuconfig基本相同,但只能在XWindows环境下工作。配置
编译修改Linux内核配置Linux内核Makemenuconfig编译Linux内核对于Linux-2.4内核makedepmakezImage对于Linux-2.6内核make编译离不开gcc和make嵌入式Linux开发通常使用交叉
编译器Linux文件系统Linux的虚拟文件系统文件系统是必不可少的所有的设备都当作文件来管理程序存储在文件系统中文件系统的内容标准的目录结构软件的来源高度可配置性来源于开放源码的软件Linux内核的编译使用了GNUGCCLinux文件系统中
的软件都是开源的嵌入式Linux开发流程嵌入式Linux开发任务硬件开发:芯片设计,电路设计,选择芯片等软件开发:制作交叉编译器,移植Bootloader,移植内核,开发文件系统和开发应用程序等。嵌入式Linux开发工具Vi编辑器G
CCMakeMakefileLinux分区Linux分区的形式Swap分区根分区Boot分区其他嵌入式Linux编程基础Linux的编辑器——ViVi的基本使用方法GCC介绍全称为GNUCC,GNU项目中符合ANSIC标
准的编译系统编译如C、C++、ObjectC、Java、Fortran、Pascal、Modula-3和Ada等多种语言一个交叉平台编译器,适合在嵌入式领域的开发编译针对嵌入式Linux系统常用交叉编译器,比如针对ARM平台,使用arm-linux-gcc等。gcc所支持后缀名解释.c
C原始程序.C/.cc/.cxxC++原始程序.mObjective-C原始程序.i已经过预处理的C原始程序.ii已经过预处理的C++原始程序.s/.S汇编语言原始程序.h预处理文件(头文件).o目标文件.a/.so编译后的库文件Gcc的编译流程分为四
个步骤:预处理(Pre-Processing)编译(Compiling)汇编(Assembling)链接(Linking)Make工程管理器工程管理器,顾名思义,是指管理较多的文件Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发
现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作。MakefileMakefile的作用是根据项目配置的情况,构造出需要编译的源文件列表,然后分别编译、链接。Linux内核中与Makefile相关的文件:顶层M
akefile:整个内核配置、编译的总体控制文件。.config:内核配置文件,包含由用户选择的配置选项,用来存放内核配置后的结果。arch/*/Makefile:位于各种CPU体系目录下的Makefile,如arch/arm/Makefile,是针对特定平台的
Makefile。各个子目录下的Makefile:比如drivers/Makefile,负责所在子目录下源代码的管理。Rules.make:规则文件,被所有的Makefile使用。Makefile基本结构Makefile是Make读入的唯一配置文件由make工具创建的目标体
(target),通常是目标文件或可执行文件要创建的目标体所依赖的文件(dependency_file)创建每个目标体时需要运行的命令(command)Makefile格式target:dependency_files
command例子hello.o:hello.chello.hgcc-chello.c-ohello.oMake使用直接运行make选项-Cdir读入指定目录下的Makefile-ffile读入当前目录下的file文
件作为Makefile-i忽略所有的命令执行错误-Idir指定被包含的Makefile所在目录-n只打印要执行的命令,但不执行这些命令-p显示make变量数据库和隐含规则-s在执行命令时不显示命令
-w如果make在执行过程中改变目录,打印当前目录名开发板硬件基本配置开发板与PC机连接方式PC机相关配置熟悉bootloader的使用嵌入式交叉编译环境的创建下载源文件、补丁和建立编译的目录建立内核头文件建立二进制工具建立初始编译器建立C库建立全套编译器步骤:桌面系
统开发过程开发平台(操作系统):Windows编辑/编译器/调试器:VisualStudio嵌入式开发过程嵌入式Linux调试工具printk函数strace命令OOPS分析GDBKDBKGDB使用printk进行调试优点:随时调
用在中断中调用在进程上下文中调用在持有锁时调用在多处理器上同时使用缺点终端启动前无法调用strace命令显示程序调用的所有系统调用从内核接收信息,而且不需要以任何特殊的方式来构建内核。
用法:eg.$stracels-t:显示调用发生的时间-T:显示调用花费的时间-e:限定被跟踪的调用类型-o:将输出定向到一个文件中OOPS分析OOPS(也称panic)消息包含系统错误的细节,如C
PU寄存器的内容。在Linux中,调试系统崩溃的传统方法是分析在发生崩溃时发送到系统控制台的OOPS消息。一旦您掌握了细节,就可以将消息发送到ksymoops实用程序,它试图将代码转换为指令并将堆栈值映射到内核符号。在很多情况下,这些信息就足够您确定错误的可能原因
是什么了。请注意,OOPS消息并不包括核心文件。GDB运行被调试程序,设置所有的能影响该程序的参数和变量保证被调试程序在指定的条件下停止运行当被调试程序停止时,让开发工程师检查发生了什么根据每次调试器的提示信息来做相应的改变,以便修正某个错误引起的问题GDB基本命令filequi
trunprintlistbreakwatch......helpKDB介绍Linux内核调试器是Linux内核的补丁,提供了一种在系统能运行时对内核内存和数据结构进行检查的办法。可以添加额外的命令,给出该数据结构的标识或地址,这些命令便可以格
式化和显示基本的系统数据结构。它适合于调试内核空间的程序代码,譬如进行内核模块的调试,设备驱动程序的调试等。KDB允许的内核操作处理器单步执行执行到某条特定指令时停止当存取(或修改)某个特定的虚拟内存位置时停止当存取输入/输出地址空间中的寄存器时停止,对当前活动的任务和所有其他任务进行
堆栈回溯跟踪(通过进程ID)对指令进行反汇编追击内存溢出KGDB需要软件内核源代码:linux-x.x.x.tar.bz2Kgdb补丁:linux-x.x.x-kgdb-1.9.patchgdbmod-x.x.bz2使用两台计算机开发,一台为开发主机,一台为目标机。通常用串口线相连嵌
入式Linux系统开发环境安装配置交叉编译工具链准备一个完整的文件系统启动目标板通过网络挂接文件系统开发Linux系统Linux内核开发应用程序开发系统集成定制文件系统部署Linux系统内核调试工具比较GDB:在调试模块时缺少一些至关重要的
功能,如不能修改内核数据,不能设置断点或观察点,或者单步跟踪内核函数。它可用来查看内核的运行情况,包括反汇编内核函数。KDB:可以交互式调试,只能在汇编代码级进行调试,优点是不需要两台机器进行调试。KGDB:能很方便的在源码级对内
核进行调试,缺点是KGDB只能进行远程调试,它需要一根串口线及两台机器来调试内核(或在同一台主机上用虚拟机运行两个操作系统来调试)Linux驱动程序介绍驱动程序的分类设备驱动程序分字符设备,块设备,网络接口另
外有一些设备驱动比较特殊,比如ipforwardingaccelerator,cyphercoprocessor,realtimeextendhardware嵌入式Linux驱动已经支持的设备门类齐全,已成为linux相对其他嵌入式操作系统的一大优势工业控制常用的串口,并口
人机输入设备鼠标、键盘,触摸屏彩色、黑白液晶显示输出网络的完善支持,包括tcp/ip,udp,firewall,WLAN,ipforwarding,ipsec,vpnUsb的全面支持,包括usb硬盘、u盘,usb摄像头支持丰富的文件系统,包括
fat32,ntfs驱动程序的作用驱动程序直接操控硬件收发通讯数据读写存储介质,比如flash或硬盘操作输出设备和执行机,例如打印,开关门襟等等驱动程序提供软件访问硬件的机制应用软件通过驱动程序安全高效的访问硬件驱动程序文件节点可以方便的提供访
问权限控制驱动程序作为一个隔离的中间层软件,将底层细节隐藏起来,提高了软件的可移植性Linux驱动程序开发流程熟悉设备的特性确定设备驱动程序是哪一类编写测试用例搜集可重用的代码编写自己的驱动程序代码调试、编码、测试Linux驱动程序加载方式驱动程序直
接编译入内核驱动程序在内核启动时就已经在内存中可以保留专用存储器空间驱动程序以模块形式存储在文件系统里,需要时动态载入内核驱动程序按需加载,不用时节省内存驱动程序相对独立于内核,升级灵活高效的嵌入式驱动程序开发嵌入式开发一般采用主机/目标机交叉开发环境交叉编译开发循环1
.移植/编写驱动程序2.编译驱动程序C语言文法级调整3.加载驱动程序4.软硬件协同调试5.卸载驱动程序6.重新修改代码,重复2交叉编译开发流程图开发/调试反复消耗大量开发时间驱动程序提供多种灵活方式来减少反复减少反复次
数减少每次反复消耗的时间驱动程序可以采用以下技巧用参数来改变配置用proc文件系统采用debugioctl应用开发入门Linux应用开发入门要求:具备计算机基础知识具备C语言编程基础了解Linux基本操作
Linux应用开发学习目标:熟悉嵌入式Linux内核掌握Linux系统调用掌握进程间通信掌握Linux下网络开发掌握Linux下GUI开发掌握Linux文件系统驱动开发入门Linux驱动开发入门要求:
熟练使用Linux操作系统具备C语言编程基础了解Linux内核结构具备一定的硬件知识,如各种接口电路Linux驱动开发学习目标:掌握字符设备驱动开发掌握块设备驱动开发掌握网络设备驱动开发熟悉USB,Fra
mebuffer等设备驱动开发系统开发入门Linux系统开发入门要求:熟练使用Linux操作系统熟悉C语言编程和汇编语言编程熟悉ARM或其他处理器Linux系统开发学习目标:建立Linux交叉开发环境移植或开发Bootloader配置编译Linux内核
移植Linux内核制作Linux根文件系统3.5嵌入式操作系统的选择标准充分考虑嵌入式系统的自身特点,结合以下给出的嵌入式操作系统的6项参考标准进行选定。(1)内核的大小与性能内核大小是衡量嵌入式操作系统的重要性能指标之
一,一般只有几十KB到几KB,微内核是一种较好的机制与策略分离的开放式内核模式。内核的性能包括稳定性、实时性、功耗等。(2)外挂模块/组件的丰富性可能的外挂模块/组件包括设备驱动、文件系统(如TFFS)、各种网络协议栈、图形界面管理、电源管理、POSI
X标准兼容接口等。(3)可裁减性满足嵌入式系统有限资源的约束提供的裁减粒度越小,用户对嵌入式操作系统配置的灵活性则越大(4)对不同硬件平台的可移植性可移植性讨论软件移植到不同目标硬件时,如果能够将依赖于硬件的低级代码和高级的应用程序及操作系统区分开来,移植工作将会变
得非常简单通常,嵌入式操作系统将最小依赖于硬件的低级代码设计成板级支持包BSP,则进行移植工作时,只需改变相应的依赖于硬件的BSP和其它一些外围硬件设备驱动程序,无需修改操作系统和应用程序嵌入式操作系统可移植性评估支持的嵌
入式处理器的种类数量是否提供相应嵌入式处理器的BSP模板提供的外围硬件设备驱动程序的种类数量(5)开发环境的完备性是否提供友好的交叉开发工具交叉开发工具的集成性(包括是否提供编辑器、编译器、链
接器、调试器、仿真器、工程管理器等)与开放性(6)服务与价格等提供的服务包括包括是否提供源代码、技术文档的完善性以及升级维护和技术支持能力等价格包括开发购买价格和使用价格(如使用时是否需要购买Licence)3.6嵌入式操作系统的发展趋势(1)嵌
入式操作系统的标准化研究目前国外的嵌入式操作系统开发商有数十家,提供了上百个嵌入式操作系统,它们各具特色但这同时也给应用开发者带来难题,首先是应用代码的重用性难,当选择不同的嵌入式操作系统开发时,不能保护用户已有的软件投资,嵌入式操作系统的标准化研究越来越被重视美国IEEE协会在Un
ix的基础上,制定了实时系统扩展(1003.1b)的POSIX标准,但仍有许多工作有待完成(2)实时超微内核微内核(Microkernel)20世纪80年代后期,国外提出了微内核的思想。微内核将传统操作系统中的许多共性的东西抽象出来,构
成操作系统的公共基础,真正具体的操作系统功能则由构造在微内核之外的服务器实现。微内核是采用水平结构代替了传统的垂直分层结构。这是一种机制与策略分离的开放式设计思路。实时超微内核近几年来,国外发展了一种基于微内核思想设计的精巧的嵌入式微内核,即实时超微内
核。超微内核是一种非常紧凑的基本内核代码层,为嵌入式应用提供了可抢占、快速、确定的实时服务,在它的基础上,可以灵活地构造各种类型的、与现成系统兼容的、可伸缩的嵌入式实时操作系统。因此,能满足应用代码的可重用和可伸缩性
(Scalability)的需求。例:MRI已首先推出了基于实时超微内核的嵌入式实时操作系统VRTXsa,它与VRTX32兼容,并具有更强的功能,实时性和可靠性有了很大的改进。(3)多处理器结构与分布式多处
理器结构实时应用的飞速发展,对嵌入式操作系统的性能提出了更高的要求。单处理器的嵌入式系统已不能很好地满足某些复杂实时应用系统的需要,开发支持多处理器结构的RTOS已成为发展方向这方面比较成功的系统有pSOSystem等分布式嵌入式操作系统国外一些嵌入式操作系统厂家虽已推
出部分嵌入式操作系统产品,如QNX、Chorus、Plan9等。但分布式实时操作系统的研究还未完全成熟,特别是在网络实时性和多处理器问任务调度算法上还需进一步研究。(4)集成与开放的开发环境开发嵌入式应用系统,只有嵌入式操作系统是不够的,需要集编辑、编译、调试、模拟仿
真等功能为一体的集成开发环境的支持。开发环境具有开放性能,允许用户自己集成第三方工具。开发环境的研究还包括网络上多主机间协作开发与调试应用技术的研究、嵌入式操作系统与环境的无缝连接技术等。小结随着嵌入式应用的发展,尤其在开发32位嵌入式系统产品时,用来连接产品应用程序和低层硬
件的操作系统的功能作用显得更为必要。本章对比介绍分析了几种典型的嵌入式实时操作系统和嵌入式软实时操作系统特色优缺点常见应用领域可作为嵌入式操作系统性能评估与选择参考