《嵌入式系统的特性及开发.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统的特性及开发.ppt(74页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式系统的特性及开发嵌入式系统的特性及开发主要内容主要内容1、为什么需要操作系统2、为什么需要嵌入式操作系统3、主流嵌入式操作系统及其用途4、Linux操作系统的特点5、Linux操作系统的应用6、Linux开发的主要任务为什么需要操作系统为什么需要操作系统l1、屏蔽硬件特性,标准化公用的使用特征。l2、提高系统运行的可靠性。l3、有效的资源管理。l4、提高开发效率和产品质量。学习操作系统的目的学习操作系统的目的 加深对使用的加深对使用的OSOS的理解,有利于充分利用操作的理解,有利于充分利用操作系统提供的特性深入编程系统提供的特性深入编程 编程时借鉴操作系统的设计思想和算法编程时借鉴操作系
2、统的设计思想和算法 选择购买操作系统设计操作系统或者修改现有选择购买操作系统设计操作系统或者修改现有的系统的系统什么是嵌入式系统什么是嵌入式系统l嵌入式系统就是“以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统”。为什么需要为什么需要“嵌入式嵌入式”操作系统操作系统l1、大量的电子设备的智能化水平和功能越来越强,需要操作系统的支撑才能实现。l2、嵌入式系统专业性强,稳定性要求高。l3、嵌入式操作系统代码量小,满足电子设备的存储和成本要求。l4、嵌入式操作系统可裁减性强,适应性好。主流嵌入式操作系统主流嵌入式操作系统l1、高实
3、时类:VxWorks、pSOS、Nucleas 用途:大型通讯设备、工业控制设备、火控设备等高实时领域。l2、通用类:Linux、WinCE、Symbin、QNX用途:消费电子(手机)、智能仪器等。为什么为什么Linux值得研究?值得研究?l1、Linux完全开源,为学习操作系统提供了绝佳的平台。l2、Linux内核机制提供了现代操作系统的各种特性,满足大多数嵌入式应用的需要。l3、丰富的自由资源和外界支持,能够加快研发速度,降低研发成本。l4、能够掌握核心技术。Linux的主要特点的主要特点1、类UNIX平台,开发和移植的适应性强2、新版本支持抢占式内核,满足一定实时性要求3、内核可根据需要
4、裁剪4、支持多种CPU(ARM、PowerPC、x86等)5、是一种强大的网络操作系统。6、汇编+标准C、C+的编程模式7、支持内核模块的动态加载、卸载嵌入式系统系统的主要模块嵌入式系统系统的主要模块1、进程管理:完成多任务和抢占调度模式2、存储管理:完成虚拟内存和分页式管理3、文件系统:采用日志文件系统:jffs24、设备管理:提供高效、兼容性好的驱动模式5、网络管理:完成相关的网络协议栈嵌入式产品的开发流程嵌入式产品的开发流程l一、硬件开发。l二、软件开发1、boot程序开发。2、操作系统平台搭建。3、上层应用开发一、嵌入式硬件的开发流程一、嵌入式硬件的开发流程l1、确定嵌入式系统的需求l
5、2、体系结构设计,软硬件分割l3、详细的硬件设计(前仿真、原理图、PCB图及后仿真)l4、软硬件的联调和集成l6、测试PC与嵌入式硬件的比较与嵌入式硬件的比较 PC硬件 功能模块固定 体积大小固定 外部接口规范 功耗控制简单嵌入式系统硬件 没有必须支持的功能 没有固定的体积大小 没有必须提供的接口 功耗控制复杂嵌入式硬件设计的特点嵌入式硬件设计的特点l没有固定的规则,量体裁衣l同系统软件密切相关 硬件的四大关键部分硬件的四大关键部分lMcu 微控制器(ARM和PowerPC)lDsp 数字信号处理器(Ti、ADI和专用DSP)lFpge 可编程逻辑器件(Altera、Xilinx)l存储设备
6、Sram、Sdram DOC、微硬盘、Eeprom,Flash,硬件实例硬件实例硬件框架硬件框架二、嵌入式系统软件流程二、嵌入式系统软件流程1、Boot程序的开发程序的开发l作用:完成硬件检查,调整硬件状态,实现操作系统的代码载入和启动。lu-boot:目前最为通用的boot开源项目。完成了主流CPU如arm、powerPC、MIPS等支持。能够实现以太网、USB以及存储设备分区功能。l开发工作:根据硬件特点和程序的载入的要求,实现方便生产、系统快速启动和便于开发调试。2、Linux操作系统平台搭建操作系统平台搭建l目的:1)根据功能要求,选择操作系统特性,完成裁减。2)根据硬件特点,完成驱动
7、程序开发。3)完成电源管理策略等嵌入式特性操作。4)完成用户层需要的内核操作要求。Linux操作系统平台搭建(续)操作系统平台搭建(续)l开发流程1)选择稳定的linux操作系统版本(目前是2.4.20使用最为广泛)。完成操作系统公用部分配置,实现内核启动。2)完成网络驱动加载,选择网络文件系统NFS便于调试。3)根据硬件平台编写各种类型的驱动程序。4)编写驱动的测试用例,完成测试。3、用户程序框架、用户程序框架总结总结l1、掌握嵌入式操作系统不但是新技术发展的需要,也是电子工程师职业发展的一个新的优势方向。l2、随着Linux的日渐成熟,越来越多的嵌入式产品会采用Linux。但Linux也存
8、在诸多缺点,开发中也有很多困难。只有深入学习,才能够使Linux真正产生价值。lLinux是一个大的系统工程,学习和开发要做好计划合理分工,才能真正利用Linux的优点。第一章嵌入式系统的硬件构成l1.1、嵌入式处理器lA、嵌入式微处理器 RISC和CISCZ指令集lB、嵌入式微控制器即单片机lC、嵌入式DSP 处理器lD、嵌入式片上系统(System On Chip)嵌入式处理器的选择l(1)调查市场上已有的CPU 供应商。l(2)处理器的处理速度。l(3)技术指标l(4)处理器的低功耗。l(5)处理器的软件支持工具。l(6)处理器是否内置调试工具。l(7)处理器供应商是否提供评估板。2、存
9、储器l存储器的物理实质是一组或多组具备数据输入输出和数据存储功能的集成电路,用于充l当设备缓存或保存固定的程序及数据。存储器按存储信息的功能可分为只读存储器ROMl(Read Only Memory)和随机存储器RAM(Random Access Memory)存储设备的具体种类:存储设备的具体种类:l flash:Nor、NANDl 硬盘:IDE、SCSIl 内存:SDRAM DDRAM SRAMl 存储卡:CF MD SD tf卡 记忆棒3、输入输出设备l嵌入式系统中输入形式一般包括触摸屏、语音识别、按键、键盘和虚拟键盘。l输出设备主要有LCD 显示和语音输出。液晶显示l液晶分为以下几类:
10、段式(也称液晶分为以下几类:段式(也称8 字)、字符型字)、字符型和图形点阵和图形点阵l图形点阵式液晶:我们又将其分为TN、STN(DSTN)、TFT 等几类l从色彩上分,LCD 显示屏分为单色、灰度和彩色三种,价格由低到高.触摸屏l嵌入式系统中的触摸屏分为l电阻式.l电容式l电感式l其中电阻式触摸屏最为常用。其他输入、输出设备其他输入、输出设备l语音输入输出技术l键盘l指纹识别、虹膜识别l传感器4、电源转换与管理1、线性稳压电源2、开关稳压电源3、电荷泵电源。4.2电源IC 的特点l(1)工作电压低l(2)工作电流不大l(3)封装尺寸小l(4)完善的保护措施l(5)耗电小及关闭电源功能l(6
11、)有电源工作状态信号输出l(7)输出电压精度高l(8)新型组合式电源IC4.3电源IC 选用指南l(1)优先考虑升压式DC/DC 变换器l(2)采用LDO 的最佳条件l(3)需负电源时尽量采用电荷泵l(4)不要追求高精度、功能全的最新器件l(5)不要“大马拉小车”l(6)输出电流大时应采用降压式DC/DC 变换器l(7)DC/DC 变换器中L、C、D 的选择5、嵌入式系统硬件开发相关技术嵌入式产品前面介绍的部分是最基本的硬件架构。但是一个嵌入式产品能够满足各种需要、能够成功的开发、调试和生产还需要各种相关的辅助技术。5.1接口技术l1、并行接口l2、串口232和485l3、USBl4、PCMC
12、IA 和CFl5、红外线接口l6、总线l7、I2C 总线l8、SPI总线l9、CAN 总线5.2嵌入式系统开发常用的硬件调试和编程技术l1、微代码支持的串口调试l2、编程技术l3、JATG 与IEEE1149 协议简介(pdf 30页)5.3 3.3V 和和5V 装置的互连装置的互连l(1)5V TTL 装置驱动3.3V TTL 装置。5V TTL 和3.3V LVC 的逻辑电平是相同的。因为5V容忍度的装置可以经受住6.5V 的直流输入,所以5V TTL 连接3.3V 且容忍度为5V的装置时,可以不需要额外的元器件。TI 的CBT(crossbar technology)开关可以用来从5V
13、TTL 向3.3V 且容忍度不为5V 的装置传送信号。该开关通过使用一个外部的产生0.7V 压降的二极管和CBT(门极到源极的压降为1V),从而产生3.3V 的电平。l(2)3V TTL 装置(LVC)驱动5V TTL 装置。两者逻辑电平是相同的,连接可以不需要外部电路或装置。l(3)5V COMS 装置驱动3.3V TTL 装置。两个不同的逻辑电平连接在一起,进一步分析5VCOMS 装置的VOH 和VOL 与3.3V LVC 装置的VIH 和VIL 电平,虽然存在不一致的地方,但有5V 容忍度的3.3V 装置可以在5V CMOS 电平输入下工作。使用5V 容忍度的LVC 装置,5V CMOS
14、 驱动3.3V LVC 是可能的。l(4)3.3V TTL 装置驱动5V CMOS 装置。3.3V LVC 的VOH 是2.4V(输出电平可达3.3lV),而5V CMOS 装置的最小VIH 要求是3.5V。因此,用3.3V LVC 或其他3.3V 标l准的装置驱动5V CMOS 装置是不可能的。解决该问题就需要用到专用芯片,如TIl的SN74ALVC164245 和SN74LVC4245 等。这些芯片一边采用3.3V 电平供电,另一l边采用5V 电平供电,可以使3.3V 逻辑部分驱动5V CMOS 装置。第二章操作系统l2.1.基础知识l2.1.1.操作系统功能l 程序运行lI/O 设备访问
15、l文件访问l系统访问l错误检测和反馈l系统使用纪录l程序开发2.1.2.操作系统发展史l1、串行处理系统l2、简单批处理系统l3、多道程序设计批处理系统l4、分时系统l5、现代操作系统(1)进程及进程管理,(2)内存及虚拟管理,(3)信息保护和安全,(4)调度和资源管理,(5)模块化系统化设计。2.1.3.Linux 与嵌入式LinuxlLinux 是一个多用户多任务操作系统,支持分时处理和软实时处理,并带有微内核特征(如模块加载/卸载机制),具有很好的定制特性。l由于它是开放源码的,全世界很多科学技术人员在不断对它完善的同时,还增加了越来越多的新功能,比如说支持硬实时任务处理等。lLinux
16、 在嵌入式系统应用方面尤其显示出其优越性。lLinux 的强大的网络功能将赋予嵌入式系统对网络天然的亲和力,从而为嵌入式系统的网络互连和功能扩展准备了广阔的发展空间。2.2.操作系统内核l2.2.1.内存管理l2.2.1.1.内存管理功能l2.2.1.2.内存分割l2.2.1.3.虚拟内存2.2.1.3.虚拟内存虚拟内存l(1)系统是否需要虚拟内存支持;l(2)系统对内存分割机制的选择问题;l(3)内存管理算法的选择问题。l 分页的取放l 分页的替换l 驻留部分管理l 加载控制2.2.2.进程与中断管理基本任务之一就是进程管理。操作系统需要为进程分配资源;实现进程间共享和交换信息;保护进程资源
17、;以及实现进程间同步,为此,操作系统需要为每一个进程维护一个特定的数据结构用于描述该进程的状态和资源占用情况,从而实现对进程的管理和控制。引入进程带来得问题引入进程带来得问题l单处理器多道程序设计系统中,多个进程是交替执行的l一个多处理器系统中,多个进程不仅可以在某个处理器上交替执行,而且还可以在多个处理器上被并行处理。不管是交替方式还是并行处理都会导致进程并发现象。l进程管理因为线程的引入变得更加复杂。在一个多线程系统中,进程成了资源管理器,而线程成为程序的基本执行单元。l中断是现代计算机系统普遍采用和支持的技术。2.2.2.1.进程描述与控制l 进程状态五值模型的各个状态转移情况l(1)无
18、 创建一个新的进程被创建用于执行一个程序。l(2)创建 就绪l(3)就绪 运行 l(4)运行 退出当某个进程已经完成自身的任务或者因为某种原因终止了的话,操作系统会将其状态从运行状态转换为退出状态。l(5)运行 就绪l(6)运行 阻塞当一个正在运行中的进程需要某个事件发生后才能继续运行时,操作系统将其状态从运行状态转换为阻塞状态。这样操作系统可以运行其它进程。l(7)阻塞 就绪进程描述l1)进程位置 某个进程和一段程序以及和这段程序相关的数据联系起来;同时,操作系统执行该进程时需要维持一个或多个堆栈用于跟踪过程调用以及过程间参数调用;最后,操作系统为了控制和管理该进程需要维护一系列与该进程相关
19、的信息。操作系统所维护的这些信息通常被称为进程控制块(Process Control Block)。与进程相关的程序、数据、堆栈和进程控制块信息统称为进程映像。操作系统会在物理内存中维护一个主进程表,其中的各个条目包含一个指向一个进程映像的指针,从而标明进程位置。进程描述l2)进程标识l3)进程状态信息l4)进程控制信息进程控制l1、对进程创建过程的控制而且还包括对进程状态切换的控制。l2、出于对操作系统某些关键数据如进程控制模块等的保护,进程的执行模式分为两种,即拥有更高权限的内核执行模式和拥有较低权限的用户执行模式。从而进程控制就增加了对进程执行模式切换的控制。进程和线程1、进程就只是一个
20、单纯的资源管理器,它管理着与进程相关的资源如进程映像、各类访问权限等等;2、线程成为操作系统的基本执行单元,受操作系统调度和控制。当然,线程也常常被称为轻量级进程,而这个时候的进程也常常被称作任务。2.2.2.5.Linux 的进程与中断管理机制lLinux 进程状态有五种分别为运行态,可唤醒阻塞态、不可唤醒阻塞态、僵死状态和停滞状态lLinux 进程控制块(1)进程状态:(2)调度信息:(3)进程标识:(4)进程间通讯:Linux 支持的进程间通讯机制不仅包括传统Unix 系统中的信号、管道和信号量机制,也支持Unix System V 进程间通讯的共享内存、信号量和消息队列机制;(5)进程
21、间关联:(6)时间和定时器:进程需要维护其创建时间,从而决定分配给它的处理器时间片的消耗情况;另外,进程在发送信号等方面需要和定时器打交道,因此需要维护与进程相关的内部定时器;(7)文件系统:(8)虚拟内存:(9)处理器相关信息:各个寄存器的内容等。Linux 内核同步机制1)非抢占2)原子操作3)中断禁止4)内核信号量。信号量可以引起进程睡眠。5)自旋锁。用于多处理器系统中Linux 进程间通讯l信号(Signal)l管道(Pipe and Named Pipe)l信号量(Semaphore)l消息队列(MessageQueue)l共享内存(Shared Memory)Linux中断与定时服
22、务lbottom halflTaskletlsoftirq2.2.3.调度机制l实时操作系统特点 其任务处理的确定性、响应灵敏度、用户参与控制、可靠性以及故障保护措施上。衡量系统的确定性有一个比较好的指标,就是系统从接到要求处理的中断和对应的处理任务启动这两个事件发生的时间间隔。一般操作系统这个时间参数很大,而且可能会有几个数量级的变动。而在实时操作系统中,它应当很小,并且比较稳定,有一个上限值。2.2.4.I/O 设备一、是效率问题,因为I/O 设备是系统性能的瓶颈所在,效率就尤显重要;二、是抽象程度问题,我们总是希望所有的I/O 设备都能有一个统一的接口便于上层系统和应用的操作,因此,需要
23、对各I/O 设备进行某种程度甚至是多个层次的抽象以便统一管理和操作。2.2.4.4.I/O 缓冲技术l(1)单缓冲l(2)双缓冲l(3)循环缓冲2.3.3.Linux 下的用户界面l2.3.3.1.X Window 简介l2.3.3.2.X 服务器第三章嵌入式Linuxl嵌入式Linux 主要可以分为两类:第一类是在利用Linux 强大功能的前提下,使它尽可能的小,以满足许多嵌入式系统对体积的要求,如uClinux;l第二类是将Linux 开发成实时系统尤其是硬(firm)实时系统,应用于一些关键的控制场合,如RTLinux3.1.2 uCLinuxl1、标准的Linux 内核采用虚拟内存管理
24、技术来提高系统运行效率,这种设计在硬件上需要有微处理器内嵌的内存管理单元(MMU)的支持。l是为微控制领域量身定做的Linux 版本。uCLinux的设计思想就是通过对标准Linux 内核的裁减,去除虚拟内存管理部分代码,并且对内存分配进行优化,从而达到提高系统运行效率的目的。它经过各方面的小型化改造,形成了一个高度优化的、代码紧凑的嵌入式Linux,虽然它的体积很小,但是仍然保留了Linux的大多数的优点:稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持、以及标准丰富的API。ucLinux特性特性l(1)通用Linux APIl(2)内核体积 512 KBl(3)内核+文件系
25、统900 KBl(4)完整的TCP/IP 协议栈l(5)支持大量其它的网络协议l(6)支持各种文件系统,包括NFS、ext2、ROMfs and JFFS、MS-DOS 和FAT16/323.1.2.1 uClinux 的内存管理 由于去除了与MMU 相关的代码,uClinux 可以生成精简的内核与应用程序,这一特点对于嵌入式系统来说优势是非常显著的,同时也使得uClinux 与标准Linux 有了本质的区别。在uClinux 下开发应用程序与标准Linux 没有太大区别。由于没有对MMU 的支持,uClinux 缺乏内存保护机制和虚拟内存模块,这是uClinux 与标准Linux 最本质的区
26、别所在。由此一些底层的系统调用也有不同程度的变化。3.1.2.3 内存保护l运行没有虚拟内存模块的Linux,有三个主要问题是需要特别注意的:l(1)必须保证由内核载入的进程能够在各自独立的内存空间中运行。保证这一点的一 种方法是在程序载入内存以前就确定进程将占据的地址范围。另一种方法是在程序代码生成时只使用相对地址uClinux 对这两种方法都有支持。l(2)内存的分配和释放都是直接在一维的内存映像中进行的,非常频繁的动态内存分配会在系统内存中产生很多碎片,从而导致系统内存不足。因而,为了改进采用动态内存分配方式的应用程序的执行性能,uClinux通过改写malloc()系统调用,使内存在一
27、个内存块区的池中进行预分配。l(3)uClinux 不支持虚拟内存,系统无法保证不同内存页面载入到相同的地址,因此无法实现内存页面的换入与换出。因而在嵌入式系统中,一般而言,那些内存需求比系统实际具有的物理内存大的程序无法运行。3.1.2.4 编程接口的改变l1、fork()l2、vfork()l3、exec()3.1.2.6 uCLinux 内核运行方式luCLinux 的内核有两种可选的运行方式:可以在flash 上直接运行,也可以加载到内存中运行。后者可以减少内存需要。lFlash 运行方式(XIP):把内核的可执行映像烧写到flash 上,系统启动时从flash 的某个地址开始逐句执行
28、。这种方法实际上是很多嵌入式系统采用的方法。l内核加载方式:把内核的压缩文件存放在flash 上,系统启动时读取压缩文件在内存里解压,然后开始执行,这种方式相对复杂一些,但是运行速度可能更快(RAM 的存取速率要比Flash 高)。3.2.嵌入式设备的文件系统l第二版扩展文件系统Ext2fsl临时文件系统tmpfsl日志闪存文件系统版本2 JFFS2 1、调电数据保护。2、损耗均衡性。3.3 嵌入式用户界面lXfree86 4.X(带帧缓冲区支持的X11R6.4)lMicrowindowslQt/EmbeddedlMicroWindowslMiniGUI第四章交叉编译l要想让计算机源程序运行就
29、必须通过编译器把这个源程序编译生成相应计算机上的目标代码才能够运行,而编译的前提是必须要有一个机器语言组成的可以直接运行的编译器。第一个编译器只能使用机器语言编写,而现在就不需要这样了。如果想编写某种特定语言的编译器,可以直接利用已经有编译器的其它语言来编写,然后利用已有的编译器来编译,从而得到一种新的可以直接运行的编译器。l通常而言,一个编译器所编译生成的目标代码一般是这个编译器所在的机器上的机器语言编码。但是,也有例外的情况,这种情况常常在嵌入式系统开发中遇到,就是利用运行在某机器上的编译器编译某个源程序生成在另外一台机器上运行的目标代码,这种编译器即所谓的交叉编译器(Cross Compiler)4.2.交叉编译技术l随着硬件平台和操作系统的多样化,软件向不同平台移植的工作变得越来越繁复。交叉编译技术的引入为软件的不同平台移植创造了便利条件。在交叉编译技术中有两种比较典型的实现。l一个我们称之为Java 模式,即Java 的字节码编译技术;l另外一个我们称之为GNU GCC 模式,即通常所讲的Cross GCC 技术。
限制150内