嵌入式系统与结构 —基于ARM的体系结构和应用开发 微电子学院 李 康
Ⅰ 课程开设目的 了解与熟悉嵌入式系统的开发与编程 了解基于ARM 7/9的嵌入式SOC结构与特点 了解高性能嵌入式系统的发展趋势
Ⅱ 课程安排 一. 嵌入式系统简介 二. 嵌入式系统开发流程 三. 嵌入式系统的编程与调试 四. 基于ARM 7/9的嵌入式处理器结构 五. 嵌入式处理器结构发展趋势 六. 网络处理器
参考教材 《嵌入式技术与系统—Intel Xscale 结构与开 发》,陈章龙,唐志强,涂时亮,北航出版社; 辅助参考: 《ARM Architecture Reference Manual (2nd Edition)》, ARM 公司 《嵌入式系统开发原理与实践》,陈文智等编著, 清华大学出版社
嵌入式系统组成与特点; 嵌入式系统软/硬件组成; 嵌入式系统开发流程 一. 嵌入式系统简介 嵌入式系统组成与特点; 嵌入式系统软/硬件组成; 嵌入式系统开发流程
1.1 嵌入式系统组成与特点 1 计算机系统的分类 台式计算机 PC(Desktop Computing) 服务器 (Servers) 嵌入式计算机(Embedded Computers)
PC 应用
服务器应用 工作站、文件服务器,数据库应用、Web服务器等。 SUN 890 服务器 IBM 系列服务器
嵌入式应用— 航空、航天
嵌入式应用— 军事、通信
嵌入式应用— 消费类电子
1.1 嵌入式系统组成与特点 1 嵌入式系统的定义 IEEE(国际电气和电子工程师协会)定义△: 用于控制、监视或者辅助操作机器和设备的装置 一般定义△: 以应用为中心,以计算机技术为基础,软硬件可裁减,适应应用系统对功能、可靠性、成本、体积功耗等严格要求的专用计算机系统。
1.1 嵌入式系统组成与特点 2 嵌入式应用系统的特点 功耗因素 体积限制 环境条件 工作于嵌入式环境 完整的计算机系统 围绕任务进行设计 所用资源少 需要较长系统生命期 2 嵌入式应用系统的特点 应用于特定目的专用系统 工作于嵌入式环境 完整的计算机系统 功耗因素 体积限制 环境条件 实时性要求 Memory 系统 RTOS 专用开发工具
1.2 嵌入式系统硬件组成
嵌入式系统组成结构
硬件结构组成—典型的片上系统SOC 片上总线 LPC2200 SOC的功能框图;SC440BX功能框图
嵌入式SOC举例—S3C44BOX LPC2200 SOC的功能框图;SC440BX功能框图
嵌入式SOC举例—LPC2210/LPC2220
嵌入式SOC举例—PXA255
商用嵌入式处理器核 MIPS MPS 32,MPS 64 MIPS技术公司 (斯坦福大学) PowerPC PowerPC 405 IBM 包括有Microprocessor,MCU, DSP三类。典型Microprocessor如下: MIPS MPS 32,MPS 64 MIPS技术公司 (斯坦福大学) PowerPC PowerPC 405 IBM SPARC e系列为嵌入式 SUN(Berkerley 大学) ARM ARM7~11系列 ARM公司(剑桥大学)
嵌入式系统外设接口 1. 存储器 2. 通信接口 3. I/O设备: RAM、SRAM DRAM Flash、EEPROM、MashROM HDD、CD-ROM 2. 通信接口 RS-232、IrDA、SPI、I2C、CAN、Bluetooth、Ethernet、IEEE1394、GPIO 3. I/O设备: LED、CRT、LCD等
BootLoader 在PC机上,BIOS完成处理器和硬件的初始化。对嵌入式系统而言,有时需要自己编制这些工作程序,即开机程序。 LPC2200 SOC的功能框图;SC440BX功能框图
SOC的片上调试接口 OCD(On Chip Debugging)是CPU芯片提供的一种调试功能(片上调试),是为了能够在片外调试SOC内部处理器核的一种手段。
1.3 嵌入式系统软件组成
嵌入式系统软件组成
软件层次结构
软件层次结构 HAL:定义统一的软硬件接口标准 BSP:实现对OS的支持,提供访问硬件设备寄存器的函数包 设备驱动程序:提供对各种外围设备的软件驱动支持
实时操作系统(RTOS) 多任务管理 I/O资源管理 中断管理 存储管理 1. 多线程/多进程方式,提供调度机制来对多任务管理; 2. 调度算法包括: FCFS 先来先服务 、Round Robin 轮询、Priority 优先级。 多任务管理 存储管理 I/O资源管理 中断管理 动态内存管理技术; 高端应用在硬件配合下采用页表进行虚拟存储管理。 提供I/O驱动 中断方式处理器外部事件和I/O请求。
典型的嵌入式操作系统介绍 END μc/OS-II: Vxworks: WinCE: 中小型系统使用。支持最多64个任务,真正的实时OS。用ANSI C开发 Vxworks: 基本微内核,由400多个目标模块组成。用于航空、航天、军事等高端实时要求极高的领域 WinCE: 多线程,完整优先权,多任务OS,但不是硬实时系统。高度模块化。 END
典型的嵌入式操作系统介绍 END Win mobile: Linux OS/μcLinux: Symbian OS: 2008-6-24为实现基金会的组建,诺基亚公司宣布,将全额收购目前爱立信、松下、三星、西门子和索尼爱立信公司所持所有Symbian公司股份,使Symbian Limited成为诺基亚全资子公司。然后,他们将把所有Symbian和S60的软件知识产权贡献给Symbian基金会。与此同时,索尼爱立信和摩托罗拉将向基金会提供UIQ系统技术,NTT DoCoMo向基金会提供MOAP技术资产。Symbian基金会将把这些技术整合为一个完整平台,使用通用的UI架构,并从基金会开始运作的第一天起全免费向所有基金会成员提供该系统授权。基金会成员未来将继续对该开放平台进行后续开发,并公布部分组件的源代码。 END
嵌入式系统开发工具 嵌入式软件的固化 嵌入式软件的调试 1.4 嵌入式系统开发流程 嵌入式系统开发工具 嵌入式软件的固化 嵌入式软件的调试
嵌入式系统开发的特点和技术挑战 跨平台开发,需要交叉软件集成开发环境(IDE) 需要进行软硬件协同设计 代码需要固化 采用基于任务的设计方法 嵌入式应用软件是实现系统各种功能的关键一步。好的应用软件能够使同样的硬件平台发挥更好,更高效的完成系统功能。 高性能、复杂的嵌入式应用软件需要RTOS的支持。但是简单的应用开发不一定都需要操作系统支持。
嵌入式系统开发的特点和技术挑战 技术挑战 功耗、体积与性能的均衡 系统实时性要求高 软件稳定性、系统可靠性及抗干扰能力 Time-to-Market 系统可测性设计和系统设计优化是关键 嵌入式应用软件是实现系统各种功能的关键一步。好的应用软件能够使同样的硬件平台发挥更好,更高效的完成系统功能。 高性能、复杂的嵌入式应用软件需要RTOS的支持。但是简单的应用开发不一定都需要操作系统支持。
1.4.1 嵌入式系统开发环境和工具
“工欲善其事,必先利其器” 嵌入式软件开发工具的集成度和可用性将直接关系到嵌入式系统的开发效率。
1. 嵌入式软件交叉开发环境 交叉开发环境是指用于嵌入式软件开发的所有工具软件的集合,一般包括: 1. 嵌入式软件交叉开发环境 交叉开发环境是指用于嵌入式软件开发的所有工具软件的集合,一般包括: 文本编辑器 交叉编译器 交叉调试器 仿真器 下载器等 交叉开发环境由宿主机和目标机组成,宿主机与目标机之间在物理连接的基础上建立起逻辑连接。
运行平台 开发平台 DownLoad Host Target 交叉开发环境 — 编辑 — 应用软件 — 编译 — 应用中间件 — 连接 宿主机开发环境 目标机应用系统 — 编辑 调 — 应用软件 运 试 — 编译 行 — 应用中间件 代 — 连接 库 — 目标机 理 OS — 调试 目标机硬件 宿主机 OS DownLoad 嵌入式应用软件是实现系统各种功能的关键一步。好的应用软件能够使同样的硬件平台发挥更好,更高效的完成系统功能。 高性能、复杂的嵌入式应用软件需要RTOS的支持。但是简单的应用开发不一定都需要操作系统支持。 宿主机硬件 交叉开发环境
1. 嵌入式软件交叉开发环境 物理连接 物理连接是指宿主机与目标机通过物理线路连接在一起,连接方式主要有三种: 串口 以太口 1. 嵌入式软件交叉开发环境 物理连接 物理连接是指宿主机与目标机通过物理线路连接在一起,连接方式主要有三种: 串口 以太口 OCD(On Chip Debug)方式,如JTAG、BDM等
逻辑连接 1. 嵌入式软件交叉开发环境 物理连接是逻辑连接的基础。 1. 嵌入式软件交叉开发环境 逻辑连接 物理连接是逻辑连接的基础。 逻辑连接指宿主机与目标机间按某种通信协议建立起来的通信连接,目前逐步形成了一些通信协议的标准。
需求分析(Requirement Analysis) 2. 嵌入式软件开发工具的分类 需求分析(Requirement Analysis) 设计(Software Design) 编码(Coding) 测试(Test) 发布、维护(Release) 嵌入式软件开发阶段
2. 嵌入式软件开发工具的分类 根据不同的阶段,嵌入式软件开发工具可以分为: 2. 嵌入式软件开发工具的分类 根据不同的阶段,嵌入式软件开发工具可以分为: 需求分析工具(Requirement Analysis Tools) 软件设计工具(Software Design Tools) 编码、调试工具(Coding Tools) 测试工具(Testing Tools) 配置管理工具、维护工具等
主要嵌入式软件开发工具产品 Requirement Analysis Software Design Coding Test Release Phases TAU ObjectGeode Rational Rose RealTime Rhapsody Tornado pRISM+ Spectra Win CE Platform Builder CodeWarrior Xray Debugger Logiscope CodeTEST LambdaTOOL 主要嵌入式软件开发工具产品
3. 嵌入式软件实现阶段的开发过程 设计完成后,嵌入式软件的开发进入实现阶段,可分为三个步骤:生成、调试和固化运行。 软件的生成主要是在宿主机上进行,利用各种工具完成对应用程序的编辑、交叉编译和链接工作,生成可供调试或固化的目标程序。 调试是通过交叉调试器完成软件的调试工作。调试完成后还需进行必要的测试工作。 固化运行是先用一定的工具将应用程序固化到目标机上,然后启动目标机,在没有任何工具干预的情况下应用程序能自动地启动运行。
1.4.2 嵌入式软件的编辑 常用的嵌入式软件编辑工具
ARM处理器集成开发环境(IDE) Visual Studio 2005 Tornado 2.0 ADS 1.2 RealView GNU
把在宿主机上编写的高级语言程序编译成可以运行在目标机上的代码,即在宿主机上能够编译生成另一种CPU(嵌入式微处理器)上的二进制程序。 交叉编译 把在宿主机上编写的高级语言程序编译成可以运行在目标机上的代码,即在宿主机上能够编译生成另一种CPU(嵌入式微处理器)上的二进制程序。
1.4.3 嵌入式软件调试 嵌入式软件调试的基本原理
嵌入式软件调试的基本方式 交叉调试方式 Simulator方式(非交叉) Rom Monitor In Circuit Emulator On Chip Debugging Simulator方式(非交叉)
1. ROM Monitor 调试方式 应用举例 : 从应用来讲,并不局限于嵌入式系统。 ROM监控器是一小程序,驻留在嵌入系统ROM中,通过 串行的或网络的连接和运行在工作站上的调试软件通 信。这是一种便宜的方式,当然也是最低端的技术。 它除了要求一个通信端口和少量的内存空间外,不需 要其它任何专门的硬件。 应用举例 : Trace32 工具; Angel工具(Angel Debug Protocol) 从应用来讲,并不局限于嵌入式系统。 Trace32 具体参见pdf。
宿主机 目标机 调试器 Windows或其它桌面操作系统 PC机等硬件 监控程序(ROM Monitor) 被调试程序 逻辑上的连接 嵌入式 硬件 物理上的连接 ROM Monitor调试方式
ROM Monitor能配合调试器完成: ROM Monitor 程序映像下载 对目标机系统内存的读写 对寄存器的读写 设置和清除不同类型的断点 单步执行指令 复位系统 …等调试功能
ROM Monitor调试过程 (1)启动目标机,监控器掌握对目标机的控制,等待和调试器建立连接; (2)启动调试器,并和监控器建立起通信连接; (3)使用调试器将应用程序下载到目标机上的RAM空间中; (4)使用调试器进行调试,发出各种调试命令,监控器解释并执行这些命令,通过目标机上的各种异常来获取对目标机的控制,将命令执行结果回传给调试器; (5)如果程序有问题,在调试器的帮助下定位错误;修改之后再重新编译链接并下载程序,开始新的调试,如此反复直至程序正确运行为止。
ROM Monitor 优点 提高调试程序的效率 ,缩短开发周期,降低成本 简单、方便 可扩展性强,可支持许多高级调试功能 成本低廉,不需专门的调试硬件支持 几乎所有的交叉调试器都支持这种方式
ROM Monitor 缺点 当ROM Monitor占用CPU时,应用程序不响应外部的中断,因此不便调试有时间特性的程序。 ROM Monitor要占用目标机一定数量的资源,如CPU、RAM、ROM和通信设备等资源。 调试环境不同于实际目标环境。
2. ICE 调试模式 ICE(In-Circuit Emulator)是一种用于替代目标机上CPU的设备,即在线仿真器。 ICE上的Memory也可以被映射到用户的程序空间,这样即使目标机不存在的情形下也可以进行代码的调试。
ICE的调试结构 目标平台 连接ICE和目标机时,一般是将目标机的CPU取下,而将ICE的CPU引出线接到目标机的CPU插槽。 用ICE进行调试时,在Host端运行的调试器通过ICE来控制目标机上运行的程序。 宿主开 发平台 目标平台 ICE
ICE优缺点 适用于: 缺点: 调试实时的应用系统 价格太昂贵,不利于团队开发 调试设备驱动程序 对硬件进行功能和性能的测试 所仿CPU有限 实时性能分析 缺点: 价格太昂贵,不利于团队开发 所仿CPU有限
3. OCD调试方式 OCD(On Chip Debugging)是CPU芯片提供的一种调试功能(片上调试),可以认为是一种廉价的ICE功能:OCD的价格只有ICE的20%,但提供了ICE 80%的功能。
OCD调试结 构 调试器 Windows或其它桌面操作系统 PC机等硬件 被调试程序 OCD接口 嵌入式硬件 宿主机 目标机 逻辑上的连接 物理连接 仿真器 针形连接器 并口、串口或网络接口 为特定处理器而建造 OCD调试结 构
OCD优点 不占用目标机的资源 调试环境和最终的程序运行环境基本一致 支持软硬断点、Trace功能 精确计量程序的执行时间 提供时序分析功能
OCD缺点 调试的实时性不如ICE 不支持非干扰调试查询 CPU必需具有OCD功能
OCD的几种商用实现 BDM(Background Debugging Mode)(Motorala) JTAG(Joint Test Access Group)(ARM) OnCE(On Chip Emulation)
各种OCD仿真器实例
OCD连接
4. Simulator 交叉开发方式存在如下缺点: 硬件支持 必须有目标机或评估板 易使用性 普通编程人员不熟悉 廉价性 成本高 硬件支持 必须有目标机或评估板 易使用性 普通编程人员不熟悉 廉价性 成本高 可移植性、可扩展性 不高 团队开发 较难 开发周期 较长
软件仿真器 软件仿真器,在宿主机上创建一个虚拟的目标 机环境,再将应用系统下载到这个虚拟目标机 上运行/调试。 软件仿真的对象 仿真处理器 仿真外设 仿真环境 软件仿真的级别 指令级仿真开发 API级仿真开发
应用仿真开发环境示意图
结合了仿真的软件开发过程
软件仿真器优点 最大好处就是可以不用真正的目标机。可以在目标机环境并不存在的条件下开发目标机上的应用系统,并且在调试时可以利用Host资源提供更详细的错误诊断信息。
软件仿真器缺点 缺点 continued 适用范围 和实际运行环境差别很大 对时间特性没有严格要求、没有特殊外设、只需要验证逻辑正确的应用程序 缺点 和实际运行环境差别很大 设备模拟的局限性较大 实时特性较差 对Host的资源要求较高 continued
嵌入式软件生成阶段 三个过程 源代码程序的编写 编译成各个目标模块 链接成可供下载调试或固化的目标程序 库文件 源程序 目标模块 可供调试/固化 下一页:交叉编译概念 编辑器 交叉编译器 交叉链接器
小 结
硬件抽象层(HAL)的概念 微软公司首先提出将操作系统底层与硬件相关的部分单独设计成硬件抽象层HAL(Hardware Abstraction Layer)的思想。 硬件抽象层的引入大大推动了嵌入式操作系统的通用程度,为嵌入式操作系统的广泛应用提供了可能
具有HAL的嵌入式系统结构 硬件抽象服务: HAL通过硬件抽象层接口向OS以及应用程序提供对硬件进行抽象后的服务。 OS可移植性: 当操作系统或应用程序使用硬件抽象层API进行设计时,只要硬件抽象层API能够在下层硬件平台上实现,那么操作系统和应用程序的代码就可以移植。 引入HAL后的嵌入式系统结构
HAL引入后的V开发模式 传统开发的瀑布模式
通用HAL的结构框图 LINUX 的通用 HAL结构示意
板级支持包BSP概述 是硬件抽象层的一种实现,是现有的大多数商用嵌入式操作系统实现可移植性所采用的一种方案 。 是一种封闭的专用硬件抽象层。 BSP形式的硬件抽象层与BSP所向上支持的嵌入式操作系统是紧密相关的。