710 likes | 884 Views
学习情境一 嵌入式系统概述 (续). 五、嵌入式实时系统. 实时系统 (Real Time System) 是一个能够 在指定或确定的时间内完成系统功能及对外部或内部事件 在同步或异步时间内 做出响应的系统 。 实时系统 是能同时满足以下要求的系统: 逻辑正确性: 产生正确的输出 时间正确性: 在恰当的时间或时限之前产生输出 。 失败所需付的高代价!. 五、嵌入式实时系统. 嵌入式系统的最大的特点: 关于反应:对外部发生的事件的反应。 周期性事件 :(例如 旋转式喷灌机) 非周期性事件 :(例如关闭按钮)
E N D
五、嵌入式实时系统 实时系统(Real Time System)是一个能够在指定或确定的时间内完成系统功能及对外部或内部事件在同步或异步时间内做出响应的系统。 实时系统是能同时满足以下要求的系统: 逻辑正确性:产生正确的输出 时间正确性:在恰当的时间或时限之前产生输出 。 失败所需付的高代价!
五、嵌入式实时系统 嵌入式系统的最大的特点: 关于反应:对外部发生的事件的反应。 周期性事件:(例如 旋转式喷灌机) 非周期性事件:(例如关闭按钮) 有关实时: 实时是系统正确的一部分 【硬时限: 超过它,系统的反应是无效的; 一般包括最小和最大两个反应时间;】 【软时限:错过这个最后期限并不意味着毁灭;反应的时间和系统的现实意义成反比(该快没快,该慢没慢!)】 实例: 一列火车进入一个城市区域的过程; 路口路障,什么时间拦住? ------满足需求是关键! 总之:Real Time != “Real Fast” -----并非越快越好!
(1)实时性 实时系统所产生的结果在时间上有着严格的要求,只有符合时间要求的结果才认为是正确的。在实时系统中每个任务都有一个截止期限,任务必须在这个截止期限之内完成以此保证系统所产生的结果在时间上的正确性。 (2)可靠性 可靠性一方面指系统的正确性即系统所产生的结果在返回值和运行费时上都是正确的,另一方面它指系统的健壮性,也就是说虽然系统出现了错误或外部环境与预先假定的外部环境不符合,但系统仍然可以处于可预测状态,它仍可以安全地带错运行和平缓地降级。 (3)并行性 一般来说一个实时系统常常有多个外部输入端口,因此就要求系统具有并行处理的能力以便能同时响应来自不同端口的输入信号。 对于实时系统来说它应具备以下几个重要的特性:
(4)可预测性 实时系统的实际行为必须处在一定的限度内,而这个限度可以由系统的定义而获得,这意味着系统对来自外部输入的反映必须全部是可预测的。即使在最坏的条件下,系统也要严格遵守时间的约束。因此在出现过载时系统必须能以一种可预测的方式来降级它的性能。 (5)多路性 实时系统的多路性表现在对多个不同的现场信息进行采集以及对多个对象和多个执行机构实行控制。 (6)独立性 每个用户向实时系统提出服务请求,相互间是独立的,在实时控制系统中对信息的采集和对象控制也是相互独立的。
实时系统根据确定性可以分为以下两类 (1)硬实时系统 (2)软实时系统
硬实时系统 硬实时指系统对系统响应时间有严格的要求,如果系统响应时间不能满足就会引起系统崩溃或致命的错误。 必须遇上一个硬时限。【硬时限: 超过它,系统的反应是无效的】 如果任何硬时限在任何时候被错过了,那么这个系统是不合适的。需要具体的方法来确认遇上时限。 硬时限: 超过它,系统的反应是无效的; 一般包括最小和最大两个反应时间; 硬实时系统:一个实时系统,其时限都是硬时限。 举例: 核电站的控制 飞行的控制
软实时系统 软实时指系统对系统响应时间有要求,但是如果系统响应时间不能满足,它并不会导致系统出现致命的错误或崩溃。 软时限:错过这个最后期限并不意味着毁灭; 反应的时间和系统的现实意义成反比. (该快没快,该慢没慢!) 一个软时限可能偶然地错过。 软实时系统:一个实时系统,其一些时限是软时限。 举例: 电话交换 多媒体应用
典型的嵌入式系统的限制: • Small Size, Low Weight – Handheld electronics – Transportation applications weight costs money • Low Power – Battery power for 8+ hours (laptops often last only 2 hours) – Limited cooling may limit power even if AC power available • Harsh environment – Heat, vibration, shock – Power fluctuations, RF interference, lightning – Water, corrosion, physical abuse • Safety critical operation – Must function correctly – Must not function incorrectly • Extreme cost sensitivity – $.05 adds up over 1,000,000 units
嵌入式系统设计涉及的全局观 A complex set of tradeoffs: • Optimize for more than just speed • Consider more than just the computer • Take into account more than just initial product design Multi-Discipline • Electronic Hardware • Software • Mechanical Hardware • Control Algorithms • Humans • Society/Institutions MultiPhase • Requirements • Design • Manufacturing • Deployment • Logistics • Retirement MultiObjective • Dependability • Affordability • Safety • Security • Scalability • Timeliness x x
对于严格的应用健壮性考虑 •Loss of Arianne rocket in June, 1996 – Lost a $400 million scientific payload •Efforts to reduce system costs led to the failure – Reuse of Inertial Reference System software from Ariane 4 – Improperly handled exception caused by variable overflow during – new flight profile (that wasn't simulated because of cost/schedule) – 64bit float converted to 16bit int assumed not to overflow •Exception caused dual hardware shutdown (software doesn't fail!) •What really happened? – The narrow view: it was a software bug fix it – The broad view: the loss was caused by a lack of system robustness in an exceptional (unanticipated) situation Many embedded systems must be robust
交叉编译 开发时往往有主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。
由于目标机本身不具备自主开发能力,即使设计完成以后,用户通常也是不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。由于目标机本身不具备自主开发能力,即使设计完成以后,用户通常也是不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。 什么是交叉编译呢,简单地说,就是在一个平台上生成另一个平台上的可执行代码。 因为目的平台上往往不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征。 有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。
所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。 同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。 举例来说: 我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。
ARM处理器当前产品系列: ARM处理器当前有5个产品系列: ARM7、ARM9、ARM9E、ARM10E、ARM11和SecureCore。 ARM7 Family ARM720TARM7EJ-SARM7DIARM7TDMIARM7TDMI-SARM9 Family ARM920TARM922TARM940TARM9E Family ARM926EJ-SARM946EARM946E-SARM966E-S
ARM10 Family ARM1020EARM1022EARM1026EJ-S ARM11 Family ARM11 Family Other Cores StrongARM MicroprocessorXScale Microarchitecture
ARM芯片选择的一般原则 从应用的角度,对在选择ARM芯片时所应考虑的主要因素做一详细的说明。 (1)ARM芯核如果希望使用WinCE或Linux等操作系统以减少软件开发时间,就需要选择ARM720T以上带有MMU(Memory Management Unit)功能的ARM芯片.(2)系统时钟控制器 系统时钟决定了ARM芯片的处理速度。ARM7的处理速度为0.9MIPS/MHz,常见的ARM7芯片系统主时钟为20MHz-133MHz;ARM9的处理速度为1.1MIPS/MHz,常见的ARM9的系统主时钟为100MHz-233MHz;ARM10最高可以达到700MHz 。
(3) 内部存储器容量 在不需要大容量存储器时,可以考虑选用有内置存储器的ARM芯片。 (4) USB接口 许多ARM芯片内置有USB控制器,有些芯片甚至同时有USB Host和USB Slave控制器。 (5) GPIO数量 在某些芯片供应商提供的说明书中,往往申明的是最大可能的GPIO数量,但是有许多引脚是和地址线、数据线、串口线等引脚复用的。这样在系统设计时需要计算实际可以使用的GPIO数量。 (6) 中断控制器ARM内核只提供快速中断(FIQ)和标准中断(IRQ)两个中断向量。但各个半导体厂家在设计芯片时加入了自己不同的中断控制器,以便支持诸如串行口、外部中断、时钟中断等硬件中断。外部中断控制是选择芯片必须考虑的重要因素,合理的外部中断设计可以很大程度的减少任务调度的工作量。
(7) LCD控制器 有些ARM芯片内置LCD控制器,有的甚至内置64K彩色TFT LCD控制器。在设计PDA和手持式显示记录设备时,选用内置LCD控制器的ARM芯片较为适宜。 (8扩展总线 大部分ARM芯片具有外部SDRAM和SRAM扩展接口,不同的ARM芯片可以扩展的芯片数量即片选线数量不同,外部数据总线有8位、16位或32位。某些特殊应用的ARM芯片如德国Micronas的PUC3030A没有外部扩展功能。 (9)DSP协处理器 (10)封装: 主要的封装有QFP、TQFP、PQFP、LQFP、BGA、LBGA等形式,BGA封装具有芯片面积小的特点,可以减少PCB板的面积,但是需要专用的焊接设备,无法手工焊接。另外一般BGA封装的ARM芯片无法用双面板完成PCB布线,需要多层PCB板布线。
输入输出接口 CPU与外部设备及存储器的连接和数据交换都需要通过接口设备来实现,而前级被称为I/O接口,而后者则被称为存储器接口。存储器通常在CPU的同步控制下,作为接口电路比较简单。而I/O设备品种繁多,其相应的接口电路也各不相同,因此,习惯上说到接口只是I/O接口。 并行接口: 串行接口: USB接口: PCMCIA和CF: 红外线接口: ISA总线: PCI总线: SPI总线: PC104总线: CAN总线:
冯·诺依曼体系结构模型 几个重要概念 存储器 指令寄存器 程序 控制器 指令0 指令1 总线 指令2 指令3 指令4 数据通道 数据 输出 输入 中央处理器 数据0 数据1 数据2
冯·诺依曼体系的特点 1)数据与指令都存储在同一存储区中,取指令与取数据利用同一数据总线。 2)被早期大多数计算机所采用 3)ARM7——冯诺依曼体系 结构简单,但速度较慢。取指不能同时取数据。
哈佛体系结构 程序存储器 总线 指令寄存器 指令0 控制器 指令1 指令2 总线 数据存储器 数据通道 输出 输入 数据0 中央处理器 数据1 数据2
哈佛体系结构的特点 1)程序存储器与数据存储器分开。 2)提供了较大的存储器带宽,各自有自己的总线。 3)适合于数字信号处理. 4)大多数DSP都是哈佛结构. 5)ARM9是哈佛结构 取指和取数在同一周期进行。提高速度。改进的哈佛体系结构分成三个存储区:程序、数据、程序和数据共用。
CISC和RISC RISC和 CISC是目前设计制造微处理器的两种典型技术,虽然它们都是试图在体系结构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效的目的,但采用的方法不同,因此,在很多方面差异很大, ARM7冯诺依曼体系 ARM9哈佛体系结构
七 嵌入式系统的目标 • 为什么嵌入式系统千差万别呢? 四大类: • General Computing – Applications similar to desktop computing, but in an embedded package – Video games, set top boxes, wearable computers, automatic tellers • Control Systems – Closed loop feedback control of real time system – Vehicle engines, chemical processes, nuclear power, flight control • Signal Processing – Computations involving large data streams – Radar, Sonar, video compression • Communication & Networking – Switching and information transmission – Telephone system, Internet
嵌入式系统需要具备什么知识? •Hardware – I/O, memory, busses, devices, control logic, interfacing hardware to software •Software – Lots of C and assembly, device drivers, low level OS issues, scheduling, – Concurrency •Software/Hardware interactions – Where is the best place to put functionality hardware or software?(边界) – What are the costs: • performance, • memory requirements (RAM and/or ROM) •Integration of hardware and software courses – Programming, logic design, architecture, – Algorithms, mathematics and common sense •Application-level techniques– signal processing, control theory
相关工作领域: . Automotive systems – perhaps designing and developing “drive-by-wire” systems • Telecommunications • Consumer electronics – cellular phones, MP3 devices, integrated cellular/walkman/PDA/kitchen sink – Set-top boxes and HDTV – Home appliances – Internet appliances • your washer will be on the internet more than you are! • Defense and weapon systems • Process control – gasoline processing, chemical refinement • Automated manufacturing – Supervisory Control and Data Acquisition (SCADA) • Space applications – Satellite communications
中国目前年产手机2.5亿部,市场拥有手机3亿部中国目前年产手机2.5亿部,市场拥有手机3亿部 • 据有关资料显示,嵌入式产品市场约1000亿美元 • 以嵌入式产品为核心的数码产品的设计、生产、批发、零售、售前、售后服务需要大批经过严格训练的人才 • 根据对全国人才市场的估计,国内急需的嵌入式类型人才数百万人。 • 新加坡、香港、日本和欧美等国家,地区需要大量嵌入式人才和技术的输出。
九 我们的实验平台 - 2410-S开发平台 开发平台硬件资源 开发平台外部连接 开发平台硬件架构 处理器资源占用情况 开发平台软件资源
开发平台硬件资源 S3C2410核心板 2410-S主板 168管脚扩展卡 PCMCIA/USB扩展模块
开发平台硬件资源 - S3C2410核心板 S3C2410处理器 64M SDRAM 64M NAND FLASH 200管脚精密插座
开发平台硬件资源 - 2410-S主板 基本系统:电源、复位、RTC时钟等 以太网:双100M自适应AX88796 USB:4个USB 1.1 HOST,1个USB 1.1 DEVICE接口 UART:2个RS232串口,1个RS485/IrDA接口 LCD:5寸256色STN LCD或8寸16bit TFT LCD,预留24bit LCD接口 触摸屏:使用ADS7843或者直接使用2410内部ADC 音频:使用UDA1341 PS/2和17键小键盘:使用ATMEGA8单片机扩展2个PS2接口和扫描键盘 LED: 8只小数码管,使用ZLG7290驱动 ADC:板载3个电位器和选择跳线,同时设有模拟电压输入专用接口 CAN:使用MCP2510和TJA1050实现1个CAN 接口
开发平台硬件资源 - 2410-S主板 IDE/CF卡插座:可连接笔记本硬盘和CF卡 PCMCIA:由CPLD实现PCMCIA控制 SD卡插座 IC卡:由ATMEGA8单片机扩展 168管脚插槽:包含所有总线信号和未使用资源 DAC:使用两个10位DAC MAX504扩展2路模拟输出 DC/STEP电机
开发平台硬件资源 - 168管脚扩展卡 GPRS/GPS FPGA CAN总线
开发平台硬件资源 - PCMCIA/USB扩展模块 PCMCIA:无线以太网等 USB:蓝牙、摄像头等
开发平台硬件架构: 可参考实验指导书
开发平台外部连接 - 框图 以太网 RS232 USB CAN RS485
软件资源: 提供Linux、WINCE、UCOS-II以及VxWorks操作系统 *移植完好的Microwindows、QT图形用户界面 ARM交叉编译连接工具 *ADS、Bootloader 、 GDB、 Cygwin、 DGBServer 提供了所有硬件驱动程序及实验程序源代码!
嵌入式系统的调试方式 • 片上方式(包括JTAG方式和BDM方式): • (1)实时在线仿真系统方式(ICE) • (2)在线调试器方式(ICD) • 监控调试方式: • (3)监控器方式 • 其他: • (4)源程序模拟器方式 • (5)高级语言编译器。
(3)监控器方式(Monitor方式) 采用该方式时,主机和目标板通过某种接口(通常是串口)连接,主机上提供调试界面,被调试程序下载到目标板上运行。监控程序是一段运行于目标机上的可执行程序,主要负责监控目标机上被调试程序的运行情况,与宿主机端的调试器一起完成对应用程序的调试。监控程序包含基本功能的启动代码,并完成必要的硬件初始化,等待宿主机的命令。被调试程序通过监控程序下载到目标机,就可以开始进行调试。监控器方式操作简单易行,功能强大,不需要专门的调试硬件,适用面广,能提高调试的效率。正因为以上原因,监控器方式广泛应用于嵌入式系统的开发之中。 监控器调试主要用于调试运行在目标机操作系统上的应用程序,不适宜用来调试目标操作系统。有的微处理器需要在目标板工作正常的前提下,事先烧制监控程序,而且功能有限,特别是硬件调试能力较差。
监控器方式也称为Monitor方式:即在目标操作系统和调试器内分别添加一些功能模块,两者相互通信来实现调试功能。(调试器的大部分驻留在主机中,余下部分驻留在目标系统中,留在目标系统中的称为调试代理,或monitor)监控器方式也称为Monitor方式:即在目标操作系统和调试器内分别添加一些功能模块,两者相互通信来实现调试功能。(调试器的大部分驻留在主机中,余下部分驻留在目标系统中,留在目标系统中的称为调试代理,或monitor) • 调试器与目标操作系统通过指定的通信端口并依据远程调试协议(如:Angel)来实现通信。
(4)源程序模拟器(Simulator)方式 源程序模拟器是在通常广泛使用的人机接口完备的工作平台上,如小型机和PC通过软件手段模拟执行某种嵌入式处理器内核编写的源程序测试工具。简单的模拟器可以通过指令解释方式逐条执行源程序,分配虚拟存储空间和外设,供程序员检查;高级的模拟器可以利用计算机的外部接口模拟出处理器的I/O.电气信号。模拟器软件独立于处理器硬件,一般与编译器集成在同一个环境中,是一种有效的源程序检验和测试工具。 值得注意的是,模拟器毕竟是以一种处理器模拟另一种处理器的运行,在指令执行时间、中断响应、定时器等方面很可能与实际处理器有相当的差别。无法和ICE一样仿真嵌入式系统在应用系统中的实际执行情况。在嵌入式系统的调试中,调试工具和待调试的嵌入式软件都在主机上运行,通过软件手段模拟执行为某种嵌入式处理器编写的源程序。
(5)高级语言编译器 C语言作为一种通用的高级语言,大幅提高了嵌入式系统工程的工作效率,充分发挥出嵌入式处理器日益提高的性能,缩短产品进入市场时间。另外,C语言便于移植和修改,使产品的升级和继承更迅速。更重要的是,采用C语言编写的程序易于在不同的开发者之间进行交流,从而促进了嵌入式系统开发的产业化。 新型的微控制器指令速度不断提高,存储器空间也相应加大,已经达到甚至超过了目前的通用计算机中的微处理器,为嵌入式系统工程采用过去一直不敢问津的C++语言创造了条件。针对嵌入式应用制订的可减小代码尺寸的EC++标准保留了C++的主要优点,提供对C++的向上兼容性,并满足嵌入式系统设计的一些特殊要求。 C++和EC++引入嵌入式系统,使得嵌入式开发和个人计算机、小型机等之间在开发上的差别正在逐渐消除。 Java语言本来就是为设备独立的嵌入式系统设计的,以提高程序继承性的语言。但目前基于Java的嵌入式开发工具代码生成长度要比嵌入式C编译工具差10倍以上。
二、技能要求:嵌入式系统交叉开发环境的搭建二、技能要求:嵌入式系统交叉开发环境的搭建 1.交叉开发环境 通用计算机具有完善的开发软、硬件资源,可以直接在计算机上开发。嵌入式系统通常是一个资源受限的系统,本身不具备自主开发能力。比如:在嵌入式平台上编写软件比较困难,其上也无法运行编译器。况且,在软件开发的初期阶段,可能还没有具体的目标机硬件设备,即使有,也只是硬件电路,根本没有操作系统支持。目前采用的解决办法是:首先,在通用的PC机上编写好程序,然后,通过交叉编译器在PC机上生成在目标平台上可运行的二进制代码,最后在下载到目标平台的特定位置上运行。
简化后的交叉开发环境图示: • 所谓交叉开发环境,就是指编译、链接和调试嵌入式应用软件的环境,他与运行嵌入式应用软件的环境有所不同,通常采用“宿主机+目标机”模式。如图所示: