Upload
shanta
View
147
Download
0
Embed Size (px)
DESCRIPTION
第 4 章 基于 ARM 的硬件结构设计. 大连理工大学 丁男. 章节介绍. 4.1 概述 4.1.1 嵌入式系统的设计步骤 4.1.2 设计层次和设计架构 4.2 微处理器系统的硬件设计 4.2.1 微处理器芯片选型的一般原则 4.2.2 多路时钟电路的设计 4.2.3 系统复位电路的设计 4.2.4 电源管理 4.3 存储系统的设计 4.3.1 存储系统设计的原理与特点 4.3.2 存储系统的组成结构. 4.1.1 嵌入式系统的设计原则和步骤. - PowerPoint PPT Presentation
Citation preview
第 4 章 基于 ARM 的硬件结构设计
1
大连理工大学 丁男
章节介绍4.1概述4.1.1 嵌入式系统的设计步骤4.1.2 设计层次和设计架构
4.2 微处理器系统的硬件设计4.2.1 微处理器芯片选型的一般原则4.2.2 多路时钟电路的设计4.2.3 系统复位电路的设计
4.2.4 电源管理 4.3 存储系统的设计 4.3.1 存储系统设计的原理与特点 4.3.2 存储系统的组成结构
2
4.1.1 嵌入式系统的设计原则和步骤 嵌入式系统设计的重要特点是技术多样化,即实现同一个嵌入式系统可以有许多不同的设计方案选择,而不同的设计方案就意味使用不同的设计和生产技术。 嵌入式系统设计一般步骤: 1 )需求分析 2 )体系结构设计 3 )硬件 / 软件设计 4 )系统集成和系统测试 注意:各个阶段之间往往要求不断的反复和修改,直至完成最终设计目标。
3
嵌入式系统设计过程
4
嵌入式系统设计过程
5
1 、需求分析阶段包括
① 分析用户的需求
② 确定硬件软件
③ 检查需求分析的结果
④ 确定项目的约束条件
⑤ 概要设计
6
2 、体系结构设计• 设计目的—描述系统的功能如何实现。• 决定因素—
①系统是硬实时系统还是软实时系统;② 操作系统是否需要嵌入;③ 物理系统的成本、尺寸和耗电量是否是产品成功的关键
因素;④ 选择处理器和相关硬件;⑤ 其他。
7
3 、硬件 / 软件设计
( 1 )设计目的:决定哪些用硬件实现,哪些用软件实现。( 2 )硬件设计: ①设计硬件子系统( top-down方法)分成模块;设计框图。 ②定义硬件接口( 3 )软件设计 设计软件子系统:软件总体设计、模块设计。 定义软件接口:模块接口、函数接口。( 4 )检查设计
8
4 、系统集成与测试 系统集成
把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进设计过程中的错误。
系统测试
对设计好的系统进行测试,看其是否满足给定的要求。
9
5 、嵌入式操作系统选型原则
10
当进行设计信息电器、数字医疗设备等嵌入式产品时,嵌入式操作系统的选择至关重要。 一般而言,在选择嵌入式操作系统时,可以遵循以下原则: 就是“做加法还是做减法”的问题
当进行设计信息电器、数字医疗设备等嵌入式产品时,嵌入式操作系统的选择至关重要。 一般而言,在选择嵌入式操作系统时,可以遵循以下原则: 就是“做加法还是做减法”的问题
6 、嵌入式软件开发工具“工欲善其事,必先利其器” 嵌入式软件开发工具的集成度和可用性将直接关系到嵌入式系统的开发效率。 ARM的开发工具包括有编译器、、汇编器、连接器、调试器、操作系统、函数库、评估板、 JTAG调试器、在线仿真器等。
根据不同的阶段,嵌入式软件开发工具可以分为:– 需求分析工具( Requirement Analysis Tools)– 软件设计工具 (Software Design Tools)– 编码、调试工具 (Coding Tools)– 测试工具 (Testing Tools)– 配置管理工具、维护工具等
11
7 、嵌入式系统开发环境和开发过程 建立交叉开发环境是进行嵌入式软件开发的第一步,主要功能是把在宿主机上编写的高级语言程序编译成可以在目标机上运行的二进制代码。 目前常用的交叉开发环境主要有开放和商业两种类型。•开放的交叉开发环境的典型代表是 GNU工具链、目前已经能够支持 x86、 ARM、 MIPS、 PowerPC等多种处理器。•商 业 的 交 叉 开 发 环 境 则 主 要 有 Metrowerks CodeWarrior 、 ARMSoftware Development Toolkit、 Embedded Visual C++等。
12
1 )嵌入式软件的交叉开发环境
• 交叉开发环境是指用于嵌入式软件开发的所有工具软件的集合,一般包括:– 文本编辑器– 交叉编译器– 交叉调试器– 仿真器– 下载器等
• 交叉开发环境由宿主机和目标机组成,宿主机与目标机之间在物理连接的基础上建立起逻辑连接。
13
用于 ARM的交叉开发结构图
14交叉开发环境
目标机硬件
目标机应用系统 — 应用软件
— 应用中间件 — 目标机
调试代理
宿主机硬件
宿主机OS
运行库
宿主机开发环境 — 编辑 — 编译 — 连接 — 调试
运行平台 Target 开发平台 Host
2 )嵌入式软件生成阶段
15
三个过程 源代码程序的编写 编译成各个目标模
块 链接成可供下载调
试或固化的目标程序(映像文件)
编辑器编辑器 交叉编译器
交叉编译器
交叉链接器
交叉链接器
源程序源程序 目标模块
目标模块 可供调
试 / 固化
可供调试 / 固
化
库文件库文件
映像文件是计算机上的一个可执行文件,在执行之前被加载到计算机存储器中。扩展名常为 *.bin
3 )嵌入式软件实现阶段的开发过程• 嵌入式软件的开发进入实现阶段,可分为三个步骤:生成、
调试和固化运行。– 软件的生成主要是在宿主机上进行,利用各种工具完成对应用程序的编辑、交叉编译和链接工作,生成可供调试或固化的目标程序。
– 调试是通过交叉调试器完成软件的调试工作。调试完成后还需进行必要的测试工作。
– 固化运行是先用一定的工具将应用程序固化到目标机上,然后启动目标机,在没有任何工具干预的情况下应用程序能自动地启动运行。
16
嵌入式软件的调试
• 在嵌入式软件开发中,调试 --采用的是在宿主机和目标机之间进行的远程调试( Remote Debug) 。
– 调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式系统中。
– 调试器和被调试进程通过串口或者网络进行通信。
17
远程调试器的功能
调试器的功能:
• 可以控制、访问被调试的进程,
• 读取被调试进程的当前状态,并能够改变被调试进程的运行
状态。
• 查看和修改目标机上内存单元、寄存器以及被调试进程中的
变量值等各种调试功能。
18
嵌入式软件的固化运行
19
阶段 调试环境 固化环境
编译 目标文件需要调试信息 目标文件不需要调试信息
链接应用系统目标代码不需要 Boot 模块,此模块已由目标板上的监控器程序实现。
应用系统目标代码必须以 Boot模块作为入口模块。
定位 程序的所有代码段、数据段都依次被定位到调试空间的 RAM 中。
程序的各逻辑段按照其不同的属性分 别 定 位 到 非 易 失 性 存 储 空 间( ROM )或 RAM 中。
下载宿主机上的调试器读入被调试文件,并将其下载到目标机上的调试空间中,目标机掉电后所有信息全部丢失。
在宿主机上利用固化工具将可固化的应用程序写入目标机的非易失性存储器中,目标机掉电后信息不丢失。
运行被调试程序在目标监控器的控制下运行,并与后者共享某些资源,如 CPU资源、 RAM 资源以及通信设备(如串口、网口等)资源。
程序在真实的目标硬件环境上运行
ARM实验平台与 PC机连接关系框图
20
4 )交叉编译、交叉调试方法
• 交叉编译:把在宿主机上编写的高级语言程序编译成可以运行在目标机上的代码,即在宿主机上能够编译生成另一种 CPU(嵌入式微处理器)上的二进制程序。
• 交叉调试器是指调试程序和被调试运行在不同机器上的调试器,能够通过某种方式控制目标机上被调试程序的运行方式。
21
ROM Monitor调试方式
22
调试器
Windows 或其它桌面操作系统
PC 机等硬件
嵌入式硬件
监控程序 (ROM Monitor)
被调试程序
宿主机 目标机
逻辑上的连接
物理上的连接
JTAG调试方式• 嵌入式系统的开发中,最常使用的一种调试方法。• JTAG可以实现的功能有:读取 / 修改地址空间任意值;设置断点位置;通过内置于CPU内的ATP接口实现CPU寄存器读取 / 修改,控制CPU运行/停止;下载程序写入Flash芯片等。
• 优点:不占用目标机的资源,调试环境和最终的程序运行环境基本一致,支持硬件断点,具有时序分析等。
• 缺点:调试的实时性不如ICE方式强,不支持非干扰调试查询,CPU必须支持JTAG功能。
23
JTAG 下载器(连接器)JTAG 下载器(连接器)
ARM JTAG Emulator仿真器 ( 也称调试器)
24
实时在线仿真系统 ICE
• ICE(In Circuit Emulator)是一种用于替代目标机上的 CPU设备,主要应用在硬件的实时开发调试中。
• ICE上的 CPU是一种特殊的 CPU,它可以执行目标机 CPU的指令,能够将内部的信号输出到被控制的目标机。
• ICE可以完成一些特殊调试功能,如同时支持软件断点和硬件断点的设置;实时跟踪目标程序的运行,并可实现选择性的跟踪等。
• ICE的主要缺点是售价较贵。
25
26
实时在线仿真器
5 )嵌入式软件的测试• 测试工具:能够用来辅助测试的工具,主要用来支持测试人员的工作,本身不能直接用来进行测试。测试工具一般都是通用工具,测试人员应根据实际情况对它们进行适当调整。
• 嵌入式软件测试中经常用到的测试工具有:
– 内存分析工具
– 性能分析工具
– 覆盖分析工具
– 缺陷跟踪工具等
27
8 、嵌入式系统设计人员的 3 个层次
第 1 层次以 CAD软件和 ICE为主要工具的设计方法。 第 2 层次以 EDA工具软件和 EOS为开发平台的设计方法。 第 3 层次以 IP内核库为设计基础,用软硬件协同设计技术
的设计方法。
这 3 个层次各有各的应用范围。初级应用设计人员会以第 1 种方法为主;富有经验的设计人员会以第 2 种方法为主;很专业的设计人员会用第 3 种方法进行简单单片系统的设计和应用。
28
4.1.2嵌入式系统设计的层次和设计架构
1 、嵌入式系统设计的层次和设计原则
– 层次分为系统级和应用级
– 设计原则具体分为:复用原则;模块化原则;标准化原则(地址总线;数据总线;控制总线);电源、网络标号的使用 网络标号的使用反映用途,例如 :RXD,TXD等。
29
2 、嵌入式系统硬件系统的设计架构
包含三部分:
(1)、微处理器的选型、时钟及复位电路的设计
(2)、存储系统 ROM/RAM的设计
(3)、系统外围设备接口电路的设计
其中系统外围设备接口硬件部分包括有通用接口设计、人机交互接口设计和网络接口设计。
30
4.2 微处理器系统的硬件设计 在现阶段,嵌入式系统设计仍处于一种手工阶段。微处理
器系统的硬件一般包括有微处理器、时钟电路、复位电路和电源管理等几部分。
微处理器是根据不同应用的场合来进行选型。 时钟管理为各个外围模块提供时钟。在不使用某个单元
时刻关闭其时钟以降低功耗。这些时钟均来自核内部的可控频率的时钟源 PLL。
复位电路一般有硬件复位( RESET引脚)、 Watchdog
软件复位等方式。31
4.2.1 微处理器芯片选型的一般原则( 1 ) ARM内核 功能上的选择,如果希望使用 WinCE或Linux等操作系统以减少软件开发时间,就需要选择 ARM7T以上带有 MMU功能的 ARM芯片。
( 2 )系统时钟控制器 系统时钟决定了 ARM芯片的处理速度: ARM7芯片系统时钟为 20MHZ~ 133MHZ,
ARM9的系统时钟为 100MHZ~ 233MHZ,
ARM10最高可以达到 700MHZ。( 3 )扩展资源的选择,包括: 内存储器容量、 USB接口、 GPIO(引脚 ) 数量、 IIS(集
成音频接口)、 LCD控制器、 PWM输出、 ADC和DAC、 UART和 IrDA等。 32
4.2.2 多路时钟电路的设计• 时钟发生器为处理器提供时钟信号。它可以是独立的芯片
( 80186处理器),也可以集成在处理其内部(嵌入式处理器)。
• 一般芯片功耗与使用时钟频率成平方关系。• 主要功能:
– 维持日历时间; – 任务有限等待的计时; – 软定时器的定时管理; – 维持系统时间片轮转调度。
33
1 、硬件时钟设备
大多数嵌入式系统有两种时钟源:实时时钟( real time clock, RTC);定时器 / 计数器。• 实时时钟:
– 一般靠电池供电,即使系统断电,也可以维持日期和时间。
– 实时时钟独立于操作系统,所以也被称为硬件时钟,为整个系统提供一个计时标准。
• 定时器 / 计数器:– 实时内核需要一个定时器作为系统时钟(或称 OS时钟),并由实时内核控制系统时钟工作。
– 一般情况下,系统时钟的最小粒度是由应用和操作系统的特点决定的。
34
2 、多路时钟电路的设计• 在嵌入式处理器上通常使用频率较低的基准时钟源,然后通 过锁相倍频电路进行分频器进行分频,获得多时钟源来提供给系
统使用。 PS:在 8 位单片机中时钟电路产生的频率可直接作为单片机 的主频工作。 • 多路时钟方式一般用于 32位及以上处理器中不同的功能部件电
路使用不同频率的时钟频率工作。主要是通过主时钟分频或倍频来形成的。有的系统是采用两套或以上石英晶振来实现。
35
日历时钟电路的设计日历时钟 32.768KHz,可以通过两种方式实现。• 其一是通过对主时钟进行分频方式来实现,• 其二是由外部 32.768KHz晶体振荡器直接产生32.768KHz 日历时钟信号。
处理器的日历时钟一直工作,即使系统进入省电状态的时候也同样工作。
集成在处理器内部,系统不需要外接日历时钟芯片和相关的电路。
36
时钟源选择• S3C2410的时钟可以选用晶振 (XTAL),也可以使用外部时
钟( EXTCLK),由系统复位时,在复位信号上升沿对引脚OM3、 OM2所测的状态来确定。其对应关系如下表所示。
37
时钟和电源管理功能• 通过两个锁相环 MPLL、 UPLL产生系统所需要的不同频率
的时钟。
• 提供四种时钟: 为 CPU产生 FCLK时钟 为高速总线 AHB产生 HCLK时钟 为外设总线 APB产生 PCLK时钟 为 USB ( Host and Device)产生 UCLK时钟
( 48MHz)。38
电路结构• 主要由 5 部分组成:时钟源、 MPLL、 UPLL、时钟控制器、
电源控制器等。
39
晶振、外部时钟
MPLLCLK
HCLK
PCLK
FCLKUCLK
晶振电路和外部时钟
40
4.2.3 系统复位电路的设计
• 系统复位电路的设计也是设计中一个必要的环节。
• 比如在 微处理器 S3C44B0X中,首先把外部复位信号也作为一个中断来处理。
在系统复位的时候,程序( PC)指针被设置成 0 ,使程序跳转到 0x00000000开始运行。
此空间对应的是 Bank0,系统的 1MB的线性 Flash和处理器的 Bank0相连接。
41
系统复位电路图
42
系统复位后初始化内容• 建立中断向量表( vector table)
– 始终在 0 地址处开始。– 初始化存储器系统– Memory access interface: type, timing, etc.
• 初始化堆栈– 为指定的模式分别设置 SP,注意模式改变次序
• 初始化有特殊要求的端口、设备• 初始化应用程序执行环境 , 全局变量区,动态存储器分配区• 改变处理器模式 , 包括中断使能控制• 呼叫应用程序 , 跳转至主函数入口
43
• 嵌入式系统中各个单元的电压范围有如下几种: 1.35V(部分微处理器); 3.3V(外部接口芯片); ㈯ 5.0V;㈯ 12V(外部设备) • 操作系统是通过电源管理器来进行系统的电源管理,提高整
个系统的电源效率,并为每一个外围设备模块提供电源管理。• 通过电源管理不仅可以减少目标设备上的电源损耗,而且可
以在系统重启、运行、空闲和挂起的电源状态下保存 RAM
中的文件系统。
44
4.2.4 电源管理器
4.3 存储系统的分析与设计
4.3.1 存储系统设计的原理与特点• 基于嵌入式微处理器 / 控制器的专用嵌入式系统而言,它们
的存储器系统与通用计算机系统的设计方法有所不同。• 主要体现在以下几个方面 :
(1)嵌入式系统由于体积的限制,尽量使用存储密度比较大的存储芯片。
(2)嵌入式系统由于功耗的限制,在设计嵌入式系统的存储系统时需要考虑功耗问题。
45
(3)出于成本考虑,大多数嵌入式系统的存储器容量与软件的大小相匹配。
(4)如果嵌入式处理器中没有存储器,就进行扩充。(5)嵌入式系统的存储子系统通常设置成模块结构,包括 ROM
子系统、 RAM子系统,每个子系统占用一定的存储空间。
嵌入式系统的存储器通常与系统主板设计在一起的 . 原因是 : 一方面嵌入式系统的内存通常是固定大小的;另一方面一体系结构可以提高系统的可靠性。
46
4.3.1 存储系统设计的原理与特点4.3.1 存储系统设计的原理与特点
4.3.2 存储系统的组成结构
• ARM架构处理器的存储器寻址空间最大为4GB。
• ARM架构处理器还允许外接 U 盘、 SD等存储卡,用来扩大存储空间。
47
ARM存储结构
48
多级存储器系统寄存器组
—— 访问时间约为几个 ns 。片上 RAM
—— 与片外 RAM 比速度快、功耗小、 容量小。读写时间约为几个 ns 。片上 Cache
——8—32KB, 访问时间约为十几个 ns 。主存储器
—— 一般为几兆字节— 1GB 的动态存 储器,访问时间约 50ns 。
CPUCPU
寄存器组寄存器组
片上 RAM片上 RAM
片上 Cache片上 Cache
主存储器主存储器
辅存辅存
4.3.3 存储器系统的设计
49
1 、程序存储器连接电路
S3C44B0X 与 FLASH的连接( Half Word方式)
50
51
2 、数据存储器的设计
52
3 、 S3C2410 核心板的设计S3C2410
ARM 处理器
NANDFLASH 64MB 存贮
器
SD RAM32M