840 likes | 940 Views
嵌入式开发. 什么是嵌入式系统?. 继桌面计算机系统之后,在IT技术应用领域中最重要的莫过于嵌入式系统。 计算机的诞生——1946年 微处理器诞生——20世纪70年代 从微型计算机到自动化控制。把微型机嵌入到一个对象体系(例如汽车、火箭等)中,可以很方便地实现这个对象体系的智能化控制。. 这种用途的计算机系统在一定程度上改变了通用计算机系统的形态和功能。 为了区别于原有的通用计算机系统,人们把嵌入到对象体系中,为实现对象体系智能化控制的计算机系统,称做嵌入式计算机系统,简称嵌入式系统。. 嵌入式系统定义. 根据 IEEE (国际电气和电子工程师协会)的定义:
E N D
什么是嵌入式系统? • 继桌面计算机系统之后,在IT技术应用领域中最重要的莫过于嵌入式系统。 • 计算机的诞生——1946年 • 微处理器诞生——20世纪70年代 • 从微型计算机到自动化控制。把微型机嵌入到一个对象体系(例如汽车、火箭等)中,可以很方便地实现这个对象体系的智能化控制。
这种用途的计算机系统在一定程度上改变了通用计算机系统的形态和功能。这种用途的计算机系统在一定程度上改变了通用计算机系统的形态和功能。 • 为了区别于原有的通用计算机系统,人们把嵌入到对象体系中,为实现对象体系智能化控制的计算机系统,称做嵌入式计算机系统,简称嵌入式系统。
嵌入式系统定义 • 根据IEEE(国际电气和电子工程师协会)的定义: • 嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”(原文为devices used to control, monitor, or assist the operation of equipment, machinery or plants)。 • 可以看出此定义是从应用上考虑的,嵌入式系统是软件和硬件的综合体,还可以涵盖机电等附属装置。
一般定义 • 普遍认同的嵌入式系统定义为:以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
嵌入式系统定义要素 • 专用计算机系统 • 以应用为中心 • 以计算机技术为基础 • 软件硬件可裁剪 • 适应应用系统对功能、可靠性、成本、体积、功耗严格要求 • 知识集成应用系统 • 技术密集资金密集 • 高度分散不可垄断 • 面向应用不断创新
军事国防 消费电子 军事电子 工业 信息家电 工控设备 智能玩具 嵌入式应用 智能仪表 通信设备 汽车电子 移动存贮 网络设备 电子商务 网络 嵌入式系统应用
一些典型的嵌入式系统应用实例 • 家用方面:数字电视、信息家电、智能玩具、手持通讯、存储设备(机顶盒、掌上电脑、DVD、MP3、数码相机、数字电视、WebTV、网络冰箱、网络空调、家庭网关、智能家用电器、嵌入式视频服务器、车载导航器系统等)
家庭智能管理系统 • 社区建筑的水、电、煤气表的远程自动抄表,安全防火、防盗系统,远程点菜器等。
汽车电子产品 • 据报道,汽车上的电子产品价值已超过汽车价格50%,已非传统意义上的机械行业 • (18个嵌入式控制模块) • CAN总线网络
马达 控制器 车灯 嵌入式系统示例——汽车控制系统 后车门控制系统 前车门控制系统 尾灯控制系统 发动器控制系统 所有的控制系统都是一个完整的嵌入式系统 座椅控制系统
医疗市场 • 心脏除颤器 • 心脏起搏器 • 患者信息和监视系统 • 理疗控制系统 • 电磁成像系统等
工业控制 • 工业设备是机电产品中最大一类 • 过去在工业过程控制、数字机床、电力系统、电网安全、电网设备监测、石油化工系统等方面,大部分低端型设备主要采用是8位单片机。 • 随着技术发展,目前许多设备除了进行实时控制,还须将设备状态,传感器的信息等在显示屏上实时显示。 • 8位单片机是无法满足这些要求,目前32位、64位的处理器逐渐替代了8位、16位处理器,成为工业控制设备的核心 • 汽车加油站 • 数控系统
军事方面 阿富汗参加反恐作战的“赫耳墨斯”价值4万美元,可携带2架摄像机,发挥了很好作用。
军事工业产品 • 数字化单兵信息装备 • 夜视扫描、全球定位、指挥通信 • 21世纪部队旅及旅以下作战指挥系统(FBCB2) • FBCB2系统将向作战的士兵和指挥官、战斗支援部队以及战斗服务支援部队提供在行进中、近实时的事态感知以及指挥和控制信息,使他们在屏幕上就能分辨出友方部队和敌方部队。 • C4ISR系统(指挥、控制、通讯、电脑、情报、监视、侦察) • 国家级C4ISR系统包括2个以上的海岸指挥作战中心
机器人 • 最早的机器人技术是50年代MIT提出的数控技术。 • “索杰纳”火星车就是一个价值10亿美金的技术高密集移动机器人,采用的是美国风河公司的Vxworks嵌入式操作系统,带有机械手,可以采集火星上的各种地况,并且通过摄像头把火星上的图像发回地面指挥中心。这台火星车在火星上自主工作了3个月。
以索尼的机器狗为代表的智能机器宠物,可以仅仅使用8位的AVR,51单片机或者16位的DSP来控制舵机,进行图像处理。以索尼的机器狗为代表的智能机器宠物,可以仅仅使用8位的AVR,51单片机或者16位的DSP来控制舵机,进行图像处理。 • Windows CE等32位嵌入式操作系统的盛行,使得操控一个机器人只需要在手持PDA上获取远程机器人的信息,并且通过无线通讯控制机器人的运行。
机器人控制器 图:卡耐基梅隆大学和瑞士EPFL研制的机器人控制器 (采用卡西欧PDA和Windows CE)
基于RTLinux的仿人机器人 • 高 48 cm重: 6 kg灵活性:20 DOF • 操作系统: RT-Linux接口形式: USB 1.0 (12Mbps) • 响应周期: 1ms能源: DC24V x 6.2A (150W) • 制造:富士通
微小型仿生机器人技术-仿生机器鱼 • 针对台海区域发展局势,研究可侦察和干扰、航道布雷封锁、敌舰攻击等低成本、隐蔽好的水下仿生机器鱼具有十分重要军事科学意义,不仅对水下航行器(袖珍潜艇)传统螺旋桨推进机构革新具有现实意义,而且在仿生机理、新型机构、智能控制等方面具有理论研究价值。
国外 • 美国C.S.DRAPA实验室在1999年实验的VCUUV仿黄鳍金枪鱼机器人 ,长度2.4米,速度1.2米/秒,速度身长比0.5。 • Triantafyllou M.S.为主的研究小组先后设计研究了1.2米长的机器金枪鱼和0.8米长的机器狗鱼 ,分别用于效率研究和机动性研究。
应用程序开发 • 应用程序开发处于软件开发的最上层,并不关心底层的驱动、核心、启动等问题。 • 嵌入式应用程序开发非常接近于PC上的应用程序开发。
应用程序开发要求 • 具备计算机基础知识 • 具备C语言编程基础 • 了解Linux基本操作
应用程序开发主要内容 • 熟悉嵌入式Linux内核 • 掌握Linux系统调用 • 掌握进程间通信 • 掌握Linux下网络开发 • 掌握Linux下GUI开发 • 掌握Linux文件系统
嵌入式软件交叉开发模型 • 一个平台上生成另一个平台上的可执行代码。 • 平台,实际上包含两个概念: • 体系结构(Architecture)例如:x86 → ARM • 操作系统(Operating System)例如:Windows → Linux
PC是开发主机、嵌入式系统是目标板。 • 在开发主机上安装开发工具,编辑、编译目标板的操作系统引导程序(BootLoader)、内核和文件系统,然后在目标板上运行。
交叉开发的原因 • 嵌入式系统的特殊性 • 对系统的功能、可靠性、成本、体积、功耗等有严格的要求 • 嵌入式硬件设计的限制 • 存储空间限制 • 处理器限制
目标板与主机之间的连接 • 1、串口 • 2、以太网接口 • 3、USB接口 • 4、JTAG接口
JTAG • JTAG(JOINT TEST ACTION GROUP) • IEEE 1149.1标准就是由JTAG这个组织最初提出的,这个标准IEEE 1149.1一般也被称为JTAG调试标准。
JTAG调试接口由测试访问端口TAP(Test Access Port)控制器、旁路(Bypass)寄存器、指令寄存器、数据寄存器以及与JTAG接口兼容的ARM架构处理器组成。 • 处理器的每个引脚都有一个移位寄存单元,称为边界扫描单元BSC(Boundary Scan Cell),它将JTAG电路与处理器核逻辑电路联系起来,同时,隔离了处理器核逻辑电路与芯片引脚。
JTAG控制寄存器 • TAP:测试访问端口TAP对嵌入在ARM处理器核内部的测试功能电路进行访问控制,是一个同步状态机。通过测试模式选择TMS和时钟信号TCK来控制其状态转移,实现IEEE 1149.1标准所确定的测试逻辑电路的工作时序。 • 指令寄存器:指令寄存器是串行移位控制寄存器,通过它可以串行输入执行各种操作的指令。
数据寄存器组: • 器件ID寄存器 • 旁路寄存器 • 边界扫描寄存器
测试访问端口TAP控制器是一个16状态的有限状态机,为JTAG提供逻辑控制,控制进入JTAG结构中各种寄存器内数据的扫描和操作。测试访问端口TAP控制器是一个16状态的有限状态机,为JTAG提供逻辑控制,控制进入JTAG结构中各种寄存器内数据的扫描和操作。 • 在TCK信号同步时钟上升沿的TMS引脚的逻辑电平决定转移的过程。 • 由TDI引脚输入到其间的扫描信号有2个状态变化路径:用于指令转移至指令寄存器或用于数据转移至相应的数据寄存器。
常用仿真器 • J-Link • U-Link • Wiggler • .......
JLink USB口~JTAG口
wiggler 并口~JTAG口
工具链 • 每一个软件,在编译的过程中,都要经过一系列的处理,才能从源代码变成可执行的目标代码。这一系列处理包括:预编译,高级语言编译,汇编,连接及重定位。这一套流程里面用到的每个工具和相关的库组成的集合,就称为工具链(tool chain)。
以GNU的开发工具GCC为例,它就包括了预编译器cpp,c编译器gcc,汇编器as,和连接器ld等。在GNU自己对工具链定义中,还加进了一套额外的用于处理二进制包的工具包binutils,整个工具链应该是GCC+binutils+Glibc,不过大家会发现binutils其实与Glibc无关,它是可以被独立安装的,所以GNU工具链也可以狭义地被理解为GCC+Glibc。以GNU的开发工具GCC为例,它就包括了预编译器cpp,c编译器gcc,汇编器as,和连接器ld等。在GNU自己对工具链定义中,还加进了一套额外的用于处理二进制包的工具包binutils,整个工具链应该是GCC+binutils+Glibc,不过大家会发现binutils其实与Glibc无关,它是可以被独立安装的,所以GNU工具链也可以狭义地被理解为GCC+Glibc。
交叉编译器 • 在GNU中,一般在普通工具链名称的前面加上特定的前缀,以表示是什么类型的工具链。例如x86-arm的工具链,预编译器是arm-linux-cpp,c编译器arm-linux-gcc等。