嵌入式系统简介 Introduction to Embedded System 南开大学 孙凤池 Mar. 12, 2007
报告内容 认识嵌入式技术 嵌入式技术的起源 嵌入式技术的现状 嵌入式系统的开发 WinCE系统开发 展望与总结
认识嵌入式技术 丰富多彩的嵌入式产品 无处不在的嵌入式技术 嵌入式系统的概念 嵌入式系统的特点 嵌入式系统的结构
丰富多彩的嵌入式产品
无处不在的嵌入式技术 消费电子:数码相机、MP3、游戏机等 信息家电:数字电视、机顶盒 智能电器:能上网的冰箱、空调、洗衣机等 通信设备:手机、IP电话、网络设备等 便携设备:PDA、数据采集、测试装置等 工业设备: 数控设备、过程工业控制设备 商业金融:售货机、收款机、取款机等 汽车电子:智能化汽车 航空航天:飞行器控制、外星探测器 医疗设备:CT机,电子血压计等 交通管理:GPS导航、智能监控设施 军事领域:武器控制、车载电子设备等
嵌入式系统的概念 定义:嵌入式系统是以应用为中心,以计算机技术为基础,软件、硬件可裁剪,功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 与通用计算机系统的不同:嵌入式系统是不同于常见计算机系统的一种计算机系统,它不以独立设备的物理形态出现,嵌入式系统的部件根据主体设备及其应用的需要,嵌入在主体设备内部,发挥着运算、处理、存储及控制的作用,是“用于控制、监视或者辅助操作机器和设备的装置”。
嵌入式系统的结构 从体系结构来看,嵌入式系统包括两部分: 1)嵌入式处理器为中心的嵌入式硬件系统; 2)由嵌入式操作系统和用户应用程序组成的嵌入式软件系统。 注意: 与传统的嵌入式控制系统相比,现在的嵌入式系统,强调“系统”---指的是嵌入式操作系统。
应用程序 软件结构 操作系统 存储器 硬件结构 输入 输出 处理器
嵌入式系统的特点 嵌入式系统是多学科融合的结果:计算机、电子、半导体、通信、控制等; 嵌入式系统通常是面向用户、面向产品、面向特定应用,开发人员很可能是各个应用领域的专家; 产品具有较长的生命周期; 软件固化存储,OS内核小,OS和应用程序的区分不明显; 需要另外的开发工具和环境:宿主机+目标机的开发方式/集成开发环境;
报告内容 认识嵌入式技术 嵌入式技术的起源 嵌入式技术的现状 嵌入式系统的开发 WinCE系统开发 展望与总结
嵌入式技术的起源 早期的嵌入式技术 嵌入式操作系统的出现 采用嵌入式操作系统的优点
早期的嵌入式技术 微处理器--单板机--单片机、DSP等 早期的嵌入式应用大都不采用操作系统,只是为了实现某些特定功能,使用一个简单的循环控制程序对外界的控制请求进行处理。 问题: 不利于扩展新功能; 加入网络协议栈比较麻烦; 应用程序移植性差;
嵌入式操作系统的出现 随着嵌入式系统的功能要求日益复杂,硬件功能越来越强大,使用操作系统是必须的,并且可能的; C语言被广泛用于嵌入式操作系统开发; 从20世纪80年代开始,出现了各种各样;商用嵌入式操作系统,大多为专用系统开发,从而形成了目前多种嵌入式操作系统并存的局面; 嵌入式操作系统的功能包括:任务管理、存储管理、时钟管理、进程间通信与同步、设备管理、文件系统、图形界面、网络接口等。
采用嵌入式操作系统的优点 在嵌入式应用中使用操作系统,可以把复杂的应用分解成多个任务,简化了应用系统软件的设计; 程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能; 使控制系统的实时性得到保证; 通过有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用; 良好的多任务设计,有助于提高系统的稳定性和可靠性.
报告内容 认识嵌入式技术 嵌入式技术的起源 嵌入式技术的现状 嵌入式系统的开发 WinCE系统开发 展望与总结
嵌入式技术的现状 嵌入式微处理器发展现状 嵌入式操作系统发展现状 嵌入式技术市场现状
嵌入式微处理器现状 由于嵌入式系统应用环境比较特殊,因而嵌入式微处理器在对实时系统的支持能力、工作温度、电磁兼容性、功耗、可靠性方面的要求较通用微处理器更高;但嵌入式微处理器在基本功能方面与通用微处理器类似.
嵌入式处理器分类
五种主流的嵌入式微处理器体系 ARM/Xscale MIPS IBM的Power PC INTEL的X86 Motorola的 68000(68K)
嵌入式操作系统的发展现状 嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备管理、网络通信、图形界面、文件系统等模块; 嵌入式操作系统具有通用操作系统的基本特点,能够有效管理越来越复杂的系统资源; 能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来; 能够提供库函数、驱动程序、工具集以及一些典型应用程序。
嵌入式操作系统可以分为两类: 面向控制、通信等领域的实时操作系统-RTOS,实时系统能在确定的时间内执行其功能,并对外部的异步事件做出响应; 面向消费电子产品的非实时操作系统,这类系统用于对响应时间要求不严格的场合。
实时系统的定义:系统执行的正确性不仅取决于计算的逻辑结果,还取决于结果产生的时间。 特点:通过任务调度,使得对于重要事件在规定的时间内做出正确的响应。 硬实时系统:必须对事件做出及时的反应,绝对不能错过事件处理的时限。 软实时系统:如果在系统负荷比较严重的时候,允许发生错过时限的情况,而不会造成太大的危害。
内核是操作系统的核心程序,多任务系统中,内核负责管理各个任务:为每个任务分配CPU时间,并且负责任务之间的通信。 任务调度(Scheduler)是内核的主要职责,就是要决定运行哪一个任务。多数实时内核是基于优先级调度法的:每个任务根据其重要程度的不同被赋予一定的优先级,CPU总是让“处在就绪态的优先级最高的任务先运行”。
调度方式 当系统响应时间很重要时,要使用占先式(preemptive)调度的内核:最高优先级的任务一旦就绪,总能得到CPU的控制权。 当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。 如果是中断服务程序使一个高优先级高的任务进入了就绪态,则中断完成时,原来被中断了的任务被挂起,优先级高的任务开始运行。 占先式内核的任务级响应时间是可知的。
几款主流嵌入式操作系统 VxWorks Windows CE 嵌入式Linux uC/OS Palm OS QNX
VxWorks VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),具有良好的扩展能力、高性能的内核以及友好的用户开发环境。该公司在实时操作系统领域是世界公认最具有领导作用的公司。VxWorks具有很高的可靠性、实时性和可裁减性,它支持多种处理器,被广泛应用在通信、军事、航空、航天等对实时性要求极高的领域中,在美国的 F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹、火星探测器上也使用到了VxWorks。
VxWorks的特点 具有高性能实时微内核Wind; 友好的开发调试环境Tornado:运行在宿主机上,包含编辑器、编译器、调试器的集成开发环境; 兼容POSIX 100.1b 标准; 良好的自由配置能力; 广泛的CPU支持.
基于VxWorks的火星探测机器人
VxWorks在高性能武器中广泛应用
Windows CE Windows CE是一种针对小内存、移动式、智能化设备推出的模块化嵌入式操作系统。 Win CE3.0 以前的版本实时性能不高。 另外两种版本:Windows Mobile 和Windows Automotive
Windows CE的开发环境 Platform Builder用于定制Windows CE平台 Platform Builder能够根据用户的需求,选择构建(定制)具有不同功能配置的CE系统;定制的平台编译后,就会得到一个OS映像文件;将该文件下载到目标平台,就能够调试、运行CE系统了。 Visual Sudio.NET 2003/eMbedded Vsiual C++ 用于Windows CE应用程序的开发。
基于Win CE的自动装配平台
基于Win CE的移动机器人平台
嵌入式Linux 嵌入式Linux(Embedded Linux)是指对Linux经过小型化裁剪后,固化在容量只有几百K字节或几兆字节的存储器芯片或单片机中,应用于特定嵌入式场合的专用Linux操作系统。 前几年的嵌入式Linux主要有RTLinux和uCLinux两个版本。uClinux内核不关心实时性问题,可用于各种手持设备等场合,RTLinux适合处理实时任务,可用于工业控制等场合。 Linux是开放源码的,并具有内核小、功能强大、运行稳定、系统健壮、效率高、易于定制剪裁等优点,在价格上极具竞争力,因此嵌入式Linux是一种最有前途的嵌入式操作系统。
嵌入式Linux的交叉编译环境 Linux内核编译时,默认的配置是对i386平台,如果要编译其他CPU内核,要先建立针对该处理器的编译环境,包括:Linux内核源代码、GNU的C库和线程库、GNU的C编译器、连接器ld、汇编代码编译器as、用来将文件打包重组的ar以及为ar打包的文件建立符号表的ranlib等。 例如针对ARM处理器的交叉开发环境中:arm-linux-gcc是编译器, arm-linux-ld是连接器
嵌入式Linux的开发环节 引导装载程序(BootLoader) Linux系统内核 嵌入式设备文件系统 设备驱动程序 应用程序
基于RTLinux的仿人机器人 高 48 cm 重: 6 kg 灵活性:20 DOF 操作系统: RT-Linux 接口形式: USB 1.0 (12Mbps) 响应周期: 1ms 能源: DC24V x 6.2A (150W) 制造:富士通
基于嵌入式Linnux的电子书
uc/OS uc/OS是一个源代码公开、免费的嵌入式操作系统,是一个高实时性的多任务系统内核,其应用面覆盖了诸多领域,如照相机、网络设备、医疗器械、音响设备、高速公路电话系统、自动提款机等,并于2000年得到美国航空管理局(FAA)的认证,可以用于飞行器中。
基于uc/OS的产品 3-Axis Motor Control Card Self Service Terminal (SST) µC/OS-II Hitachi SH2 running at 29.4912 MHz 7 Tasks / 10 Hz Tick Rate Self Service Terminal (SST) µC/OS-II Intel 80386 CPU @ 33 MHz 9 Tasks 20 Hz Tick Rate
基于uc/OS的机器鱼
机器鱼的嵌入式控制器 uC/OS-II RTOS
PalmOS Palm OS是Palm Computing公司为其掌上电脑产品开发的嵌入式操作系统,Palm OS在PDA市场上占有很大的市场份额,目前主要与WinCE(Pocket PC)进行激烈竞争。 采用Palm OS的掌上电脑:
QNX 加拿大QNX公司的产品。内核只有8K字节,QNX是一个实时的、可扩充的嵌入式操作系统,遵循POSIX(可移植操作系统接口)相关标准,QNX具有强大的图形界面功能。 应用于机顶盒、手持设备(手掌电脑、手机)、GPS设备等,在工业控制领域也有比较广泛的应用。
采用QNX的机器人“EMIEW” 日立公司设计,在2005年爱知世博会展出。 050317hit1.mpeg 050317hit2.mpeg
附:手机操作系统 Linux 微软Windows Mobile Symbine
嵌入式技术市场现状 引用:“PC和因特网之后最伟大的发明”,“福特出售的‘计算能力’已超过了IBM” 发展嵌入式软件有以下几个有利条件: 1.通用软件容易被盗版,但是嵌入式软件由于固化存储的原因不易被盗版。 2.和开发通用系统软件相比,嵌入式软件的开发成本低,风险小,门槛低。 3.嵌入式软件和具体行业、应用联系紧密,国外垄断程度和垄断能力相对较弱。 嵌入式应用软件是除行业应用软件、软件外包之外的又一个有前途的方向
嵌入式技术市场现状 嵌入式技术相关的企业的运营模式: 生产、销售嵌入式系统相关产品的大公司; 提供嵌入式技术、应用解决方案的中小型技术公司; 用嵌入式技术进行生产设备改造或者产品升级的传统企业;
报告内容 认识嵌入式技术 嵌入式技术的起源 嵌入式技术的现状 嵌入式系统的开发 WinCE系统开发 展望与总结
嵌入式系统的开发 设计流程 软件开发调试方式 宿主机-目标机开发模式 嵌入式软件集成开发环境 操作系统移植 系统定制 Boot Loader设计 BSP的概念
设计流程 系统需求分析:分功能性需求和非功能性需求两方面. 体系结构设计:对硬件、软件和执行装置的功能划分,对操作系统、微处理器选型. 硬件/软件协同设计:软硬件设计工作并行;采用基于开发平台的方式进行硬件开发;大部分工作集中在软件设计上,采用标准化的软件设计方法. 系统集成与测试
软件开发调试方式 在线仿真器 使用仿真头代替目标板上的CPU,可以完全仿真ARM芯片的行为,速度快。但结构较复杂,价格昂贵,通常用于ARM硬件开发中。 JTAG仿真器 通过ARM芯片的JTAG边界扫描口与ARM内核进行通信,不占用目标板的资源,是目前使用最广泛的调试手段。 指令集模拟器 驻留监控软件
宿主机-目标机开发模式
嵌入式软件集成开发环境 集成开发环境(IDE)的意义:加快开发进度,节省开发成本。 例如:ARM SDT (ARM Software Development Toolkit)用于在ARM微处理器上进行应用软件开发的集成开发工具,由ARM公司提供,可以直接用于uC/OS系统移植和应用程序开发。 ARM SDT 可以在多个系统平台上运行,可以支持C语言和汇编语言。
嵌入式操作系统的移植 操作系统的移植,是指使一个实时操作系统能够在某个微处理器平台上运行。 操作系统移植成功的要求: 微处理器能够支持 编译器能够支持 移植步骤和移植工作复杂程度,因选定的嵌入式操作系统而异。
举例:移植COS-II所需条件 处理器的C编译器能产生可重入代码; 在程序中可以打开或者关闭中断; 处理器支持中断,并且能产生定时中断(通常在10-100Hz之间); 处理器支持能够容纳一定量数据的硬件堆栈; 处理器有将堆栈指针和其他CPU寄存器存储和读出到堆栈(或者内存)的指令.
移植C/OS-II所需工作 在includes.h中设置与处理器和编译器相关的代码 用C语言编写六个操作系统相关的函数(OS_CPU_C.C) 用汇编语言编写四个与处理器相关的函数(OS_CPU.ASM)
系统定制 嵌入式操作系统的定制: 定制方式: 在编译之前定制 用户可以根据自己系统的功能需求,通过交叉开发环境对操作系统进行配置,保留所需要的功能,删除不需要的功能,以节省硬件存储空间。 定制方式: 选择组件方式 条件编译方式 在编译之前定制
Boot Loader的设计 BootLoader是嵌入式系统最底层的引导软件,它在系统加电后初始化主板的基本设置,为接收外部程序做硬件上的准备。 BootLoader是一段单独的程序代码,它存放于目标平台的非易失存储介质中,如ROM或Flash ROM.
Boot Loader的作用 硬件系统自检; 配置其他存储体或者端口、外设的工作模式; 处理系统的中断; Flash ROM编程、映像文件下载; 接收用户命令,参数和数据的设置、存储和传递. 引导操作系统
BootLoader 设计方法 编写BootLoader是开发第一步。 从操作系统厂商提供的例程中寻找与硬件平台最接近的作为标本程序,然后再根据自己的硬件平台做相应的改动。 一些新的评估板可能会由供应商或者第三方的厂商来提供Bootloader。如果硬件平台是从这样的基板设计而来,寻求厂商获取Bootloader来移植,可以减少工作量。 参考其他来源的近似系统的设计。 编写BootLoader是开发第一步。
BSP的概念 BSP是板级支持包,是介于主板硬件和操作系统之间的层次,是操作系统的一部分,主要目的是为了支持操作系统,使之能够更好的运行于硬件主板。 BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,BSP一定要按照该系统BSP的定义形式来写,才能与上层OS保持正确的接口。 通常,BSP包括硬件适配层和设备驱动程序,其编程过程大多数是在某一个成型的BSP模板上进行修改。
报告内容 认识嵌入式技术 嵌入式技术的起源 嵌入式技术的现状 嵌入式系统的开发 WinCE系统开发 展望与总结
WinCE系统开发的环节 操作系统定制 BootLoader开发 硬件适配层(OAL)开发 驱动程序开发 应用程序设计
WinCE应用程序开发 WinCE支持本地应用程序和托管应用程序: Native application:开发工具是Embedded Visual C++ Managed application:开发工具是Visaul Studio.NET
开发环境比较 Embedded Visual C++: 直接编译C/C++代码到CPU指令 可使用Win32API应用程序接口存取Windows CE 函数 可使用MFC(Microsoft Foundation Classes)及ATL(Active Template Library)库函数开发GUI和COM应用程序 Visual Studio.NET: 编译成独立于CPU的中间语言代码 托管应用程序不直接使用Win32API 必须通过.NET Compact Framework库才能访问操作系统功能 上述中间语言代码必须通过.NET Compact Framework库将它转化为机器语言代码才能访问操作系统功能
本地(Native)应用程序开发 从Platform Builder导出 SDK(Software Development Kit); 使用 eVC进行开发前要安装SDK; Win32编程开发。 注:若只是进行应用程序开发,只要工作站上有eVC,就可以安装SDK,而不必要安装Platform Builder.
关于SDK SDK包含了一个特定平台的所有函数,SDK决定于包含在平台中的操作系统配置、运行时库、OAL(OEM Adaption Layer)、和设备驱动程序; 导出的SDK是一个Windows安装程序(.msi文件); 在使用eVC进行开发前,必须安装特定平台的SDK,而且进行开发时必须了解特定平台支持的函数,SDK中不包括的函数不能使用; Micorosoft提供了一些SDK,如Standard SDK、Pocket PC2003、SmartPhone2003等等。开发人员可以使用这些SDK进行相应程序开发,程序中使用的函数需要在这些SDK中支持的范围以内。
报告内容 认识嵌入式技术 嵌入式技术的起源 嵌入式技术的现状 嵌入式系统的开发 WinCE系统开发 展望与总结
展望 软件设计比重日益突出; 采用组件设计技术; SOC是发展趋势; 硬件软件化。
总结 嵌入式系统开发与桌面应用开发存在很大区别,软件和系统平台紧密相关; 嵌入式系统将迅速普及和发展,但不会取代传统的单片机嵌入式测控系统,二者的发展空间并不冲突; 嵌入式系统设计开发中的处理器、操作系统选择。
Thank you !