嵌入式系统概论.ppt
嵌入式系统概论,刘立,衡阳南华大学计算机专业课程,南华大学计算机学院,所需知识,C语言 操作系统 接口与组成 简单的电路知识,推荐教材,参考资料1.王田苗 主编.嵌入式系统设计及实例开发ARM与C/OS-.北京:清华大学出版社,2002.92(美)Jean J.Labrosse,邵贝贝译.C/OS-源码公开的实时嵌入式操作系统.北京:中国电力出版社,2001.8简介:是目前学习嵌入式操作系统最好的入门教材,书中对一个完整的嵌入式实时内核C/OS-进行了剖析,详细讲述了实时内核的设计和创建方法,以及多任务实时系统的原理和编程思想。4.马忠梅等著.ARM嵌入式微处理器体系结构。北航出版社3(美)Wayne Wolf,孙玉方等译.嵌入式计算机系统设计原理.北京:机械工业出版社,2002.2 简介:被称为“嵌入式计算系统设计的第一本教科书”,书中重点介绍了嵌入式技术和基本原理和技术,涉及到嵌入式系统的相关的指令系统、CPU、计算平台、程序设计与分析、进程和操作系统、硬件加速器、网络、系统设计技术等方面。,第一讲 基本概念,一、嵌入式系统的定义 嵌入式系统本身是一个相对模糊的定义。一个手持的MP3和一个微型工业控制计算机都可以认为是嵌入式系统。根据IEEE(国际电气和电子工程师协会)的定义:嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”,嵌入式系统应用领域,嵌入式应用,信息家电,智能玩具,军事电子,通信设备,移动存贮,工控设备,智能仪表,汽车电子,网络设备,工业,消费电子,军事国防,电子商务,网络,嵌入式产品一览,一般定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。,比较科学的定义,嵌入到对象体中的专用计算机系统三要素:嵌入 专用 计算机,二 现代计算机的两大分支,1 开始于微型机时代的嵌入式应用小型 廉价 可靠的微型机走出机房对象系统对计算机的嵌入式应用要求计算机系统的嵌入式系统应运而生,不可兼容的计算机系统高速海量数计算与对象的智能化控制不可避免的分道扬镳发展高速cpu与发展计算机外围两大分支的必然道路通用计算机系统嵌入计算机系统,2 现代计算机系统两大分支不可避免,三 嵌入式系统的特点,由三要素引出嵌入性:嵌入到对象体系中,有对象环境要求专用性:软硬件按对象要求可剪裁计算机:实现对象的智能化功能不可以用设备来定义系统,如手机嵌入式系统类型发展工控机SCM-MCU计算机应用系统,四 嵌入式系统的发展道路,两种模式对学科发展的影响,五 嵌入式系统相关学科与领域,六 嵌入式系统开发需要开发工具和环境 由于其本身不具备自主开发能力,即使设计完成以后,用户通常也是不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。开发时往往有主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。,嵌入式系统与PC之间的区别,嵌入式系统一般是专用系统,而PC是通用计算平台嵌入式系统的资源比PC少得多嵌入式系统软件故障带来的后果比PC机大得多嵌入式系统一般采用实时操作系统嵌入式系统大都有成本、功耗的要求嵌入式系统得到多种微处理体系的支持嵌入式系统需要专用的开发工具,七 典型嵌入式系统基本组成硬件,八 典型嵌入式系统基本组成软件,处理器,存储器,输入,输出,操作系统,应用程序,软件结构,硬件结构,嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器微处理器、存储器及外设器件和IO端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。,操作系统,几个定义,一操作系统是控制和管理计算机硬件和软件资源、合理组织计算机工作流程以及方便用户的程序的集合(见计算机操作系统第二版 汤子赢 第3页二 操作系统是应用程序(作业,任务,进程等)返回的虚拟硬件平台。,多任务的实时操作系统(RTOS)商用型已经十分成熟,并为用户提供了强有力的开发和调试工具。但商用嵌入式实时系统价格昂贵而且都针对特定的硬件平台。比如VXWORKS,QNX,PSOS,还用常见于PDA的 Win CE和Palm OS。免费型则是源代码公开的免费软件,可以根据自己的需要进行取舍,但是应用起来稍困难一些。目前源码开放(C代码)的嵌入式系统有C/OS和Linux系列,操作系统目标,1 提供一个计算机用户与计算机硬件系统之间的接口,使计算机系统更易使用2 有效控制和管理计算机系统中的各种硬件和软件资源,使之得到更有效的利用3 合理地组织计算机系统的工作流程,以改善系统性能(响应时间,系统吞吐量),RTOS与通用计算机OS的区别,实时性。响应速度快,几微秒,执行时间确定、可预测代码尺寸小。10KB到100KB,节省内存空间,降低成本应用程序开发较难需要专用开发工具:仿真器、编译器、调试器等,商用RTOS市场分布,典型实时操作系统分析,VxWorks WindRiver产品VxWorks是目前嵌入式系统领域中使用最广泛、市场占有率最高的系统。它支持多种处理器,如x86、i960、Sun Sparc、Motorola MC68xxx、MIPS RX000、POWER PC。微内核结构(8K),微秒级中断响应、多处理器支持Tornado集成开发环境,Palm OS,3Com公司出品,PDA操作系统的主流它有开放的操作系统应用程序接口(API),开发商可以根据需要自行开发所需要的应用程序,Win CE,Microsoft 产品,非实时系统;多线程、完整优先权、多任务的操作系统模块化设计,从PDA到专用的工业控制器,可对用户电子设备进行定制操作系统的基本内核需要至少200K的ROMWin CE 3.0 为实时RTOS,势头强劲,QNX,实时的、可扩充的RTOS微内核结构(12KB),内核仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,运行速度快分布式,较强的网络功能开发性,支持多种CPU支持多种总线及外设 QNX6.1,Lynx OS,Lynx Real-time Systems的LynxOS是一个分布式、嵌入式、可规模扩展的实时操作系统,支持线程概念,提供256个全局用户线程优先级;提供传统的、非实时系统的服务特征;包括基于调用需求的虚拟内存,一个基于Motif的用户图形界面,与工业标准兼容的网络系统以及应用开发工具,免费操作系统,Linux内核小、功能强大、运行稳定、系统健壮、效率高;开放源码的操作系统,易于定制剪裁,有价格优势支持x86等数十种CPU芯片;有大量的且不断增加的开发工具,这些工具为嵌入式系统的开发提供了良好的开发环境;沿用了Unix的发展方式,遵循国际标准,可以方便地获得众多第三方软硬件厂商的支持;网络功能强大,它提供了对十兆、百兆、千兆以太网、无线网络、令牌网、光纤网、卫星等多种联网方式的全面支持,COS-,C/OS简单易学,提供了嵌入式系统的基本功能,其核心代码短小精悍,如果针对硬件进行优化,还可以获得更高的执行效率。可移植性好(Portable)可裁剪(Scalable)占先式(Preemptive)多任务(Mulittasking)执行时间可确定性,各商业操作系统的市场占有率,嵌入式系统开发工具,考虑这样一个问题:如果将下图中的操作系统抽去,会发生什么问题?,应用软件,操作系统,硬件,基于AVR单片机的实例,采集器系统代码让我们来分析一下这个系统(不要关注细节):1、这是一个采集系统的C代码,完成以下几个功能:A 采集多路数据(collection)B A/D转换(采用查询while(ADCSR&0 x10)!=0 x10))C 与上位机串行通信(采用中断#pragma interrupt_handler Uart_Rx_Handler:12#pragma interrupt_handler Uart_Udre_Handler:13#pragma interrupt_handler Uart_Tx_Handler:14)D 显示输出(Display)E 按键输入(if(PIND&0 x70)!=0 x70)/判断是否有键按下),这是一个单任务的操作系统带应用程序这是一个典型的前后台系统(见UCOS的有关内容)这是一个无限循环的系统从操作系统的概念来说这个操作系统就是一句话,w,H,I,L,E,(1),针对while(1)的几个问题,1、有没有其他的语句代替它?2、While与If的区别?3、While(1)与while(true)、while(4)有区别吗?4、While(条件)有什么作用?如上面的代码中有while(ADCSR&0 x10)!=0 x10)5、在程序中允许出现While(1)吗?6、有 While(1)的地方程序是否永远在其内部运行?,前面的采集器程序存在明显的不足和隐含安全漏洞,该设备已经用在很多的电厂、水厂等安全性非常高的场合,目前主要用于监测,如果用在控制,后果不堪设想。这里存在的问题我将在后面的内容中逐步说明。,#includeSbit LED_pin=p15;Bit LED_state_G;Void LED_FLASH_Init(void);Void LED_FLASH_Change_State(void);Void DELAY_LOOP_Wait(const unsigned int);Void main(void)LED_FALSH_Init();while(1)Void LED_FLASH_Change_State();DELAY_LOOP_Wait(1000);,从一个简单程序说起,子函数,Void LED_FLASH_Init(void)LED_state_G=0;Void LED_FLASH_Change_State(void)if(LED_state_G=1)LED_state_G=0;LED_PIN=0;ELSE LED_state_G=1;LED_PIN=1 DELAY_LOOP_Wait(const unsigned int delay)unsigned int x,y;for(x=0;x=delay;x+)for y=0;y=120;y+),分析,这是一个超级循环架构,这是许多嵌入式系统的核心,无论是UCOS还是UCLINUX都是如此,在后面的讲解中我们将看到这个现象;在这之前是初始化,