文章目录
- 基本计算平台
- 硬件组件
- 软件组件
- CPU总线
- 总线结构和协议
- 四周期握手协议—最常见的总线协议
- 典型的总线组件
- 时序图
- 总线读、写
- 总线读
- 总线写
- 读操作的等待状态
- 突发传输(Burst Transfer)
- 分离式传输(非链接传输)
- 状态机
- 小数据束
- DMA(直接存储器访问)
- 总线主控器(Bus mastership)
- DMA控制器
- DMA操作
- 系统总线配置
- 桥的状态图
- ARM AMBA 总线
- 存储设备
- RAM(Random-access memory)
- 存储器系统结构
- PC机上的内存
- 存储器系统和存储器控制器
- 通道与块
- 计算平台的设计
- 平台选择
- 知识产权(Intellectual property IP)
- 开发环境
- 宿主机/目标机设计方法
- 基于主机的开发工具
- Watchdog timer(看门狗定时器)
- 调试技术
- 断点
- ARM设置断点
- 断点处理的动作
- LED灯
- 内部仿真器 (ICE)
- JTAG仿真器
- 逻辑分析器(Logic analyzers)
- 系统层的性能分析
- 带宽与性能
- 带宽与数据的传输
- 总线的带宽
- 突发传输的带宽
- 内存的带宽问题---内存的长宽比(64M)
- 内存的访问时间
- 练习题
基本计算平台
- 微处理器、I/O设备和存储器
- CPU总线连接设备
- 提供实现嵌入式应用的环境
- 硬件和软件
硬件组件
- CPU:提供基本的计算能力
- RAM:用于存储程序和数据
- ROM:保存引导程序和一些永久的数据
- DMA:控制器提供直接内存访问功能
- 计时器:被OS用于各种目的
- 高速总线:高速设备与其它设备通讯
- 低速总线:连接较简单的设备
软件组件
- 层次图:描述系统不同软件组件之间的关系
- 硬件开发商提供一系列基本的软件平台组件
- HAL:硬件基本抽象
- 平台软件提供核心功能和应用;
- 底层功能依赖于架构——中断矢量表
CPU总线
- 总线(bus)是CPU与存储器、设备通讯的机制
- 共享通讯介质
- 总线是:
- 一束电线
- 通讯协议
- 协议通常通过状态机来说明
- 异步逻辑行为
- 多种总线的目的:
- 将设备分配到不同总线,可以减少负载,提高总线的利用率
- 低速总线相对于高速总线简单成本低,同时低速设备连接到高速总线不能提高性能
- 数据传输
- 组件之间的数据传输
- CPU与存储器之间
- CPU与I/O设备之间
- 存储器与存储器之间
- 存储器与I/O设备之间
- 采用的方式
- 基本:CPU执行相关指令
- 直接存储器存取(DMA)
总线结构和协议
- 总线包括:数据、地址、时钟和控制信号
- CPU是总线主控器,启动所有传输
- DMA允许其它设备暂时为总线主控器,传输数据无CPU参与
四周期握手协议—最常见的总线协议
- 设备1提出请求
- 设备2响应该请求
- 一旦数据传送完成,设备2发出接收完数据的信号
- 设备1结束请求
典型的总线组件
- :时钟,用于同步总线组件
- :总线的读或写
- :地址总线,一束信号线
- :数据总线,一束信号线
- :数据就绪
时序图
- 时序图表示
总线上信号如何随时间变化
- 稳态:示波器可测出
- 变化态
- 时序图有时又叫时序约束
- 事件发生时间差:A为高电平,至少10ns,B才会变为稳态
- 事件顺序:B在C之前达到稳态
总线读、写
总线读
- 时钟信号上升沿,设置地址使能信号,地址线上设置所需地址值;表示读
- 在第一个时钟周期后,外设将相应地址的数据传送至数据线,
数据准备线使能
; - CPU读取数据,在第二个时钟周期末,撤去地址线上的地址,外设清除数据线上的数据值。
总线写
- 时钟信号上升沿,设置地址使能信号,地址线上设置所需值;表示写
- 在第一个时钟周期后,CPU 将数据传送至数据线,
数据准备线使能
; - 外设向相应
地址的存储单元写数据
,在第二个时钟周期末,撤去地址线上的地址,并清除数据线上的数据。
读操作的等待状态
- 总线连接速度比它慢的设备
- 等待状态通常用于将慢速、廉价的存储器连到总线上
- 等待状态:数据可以被读取的最早时间与真正被读取的时间之间的周期
突发传输(Burst Transfer)
- 收到一个地址,
传输一个数据序列
- 增加一根线路:Burst,
低电平有效
分离式传输(非链接传输)
- 请求和响应是分开的
- 第一个操作是请求传输
- 然后总线可以做其它操作
- 等数据准备好后,传输随后开始
状态机
- 状态机是对时序图的一个有用的补充
- 关注控制信号的转换
小数据束
- 一些总线的数据束比CPU的字小。使用较少的数据线可以降低芯片成本
- 如何形成数据或地址
- 通过CPU总线逻辑把它们组合成地址或数据
DMA(直接存储器访问)
- 标准总线操作,数据的读与写需CPU参与,有些则
无需CPU的参与
,如DMA - Direct memory access (DMA) 无需CPU的加入来完成数据的传输
- CPU 设置传输
- DMA 直接完成设备与主存的读写操作
- 需要一个DMA控制单元
总线主控器(Bus mastership)
- 总线主控器是能够启动自己总线传输的设备
缺省时,CPU是总线主控器,并初始化传输
- DMA可以成为总线主控器来完成传输
- DMA 成为总线主控器时,CPU不能使用总线
- 通过四周期握手协议获得总线主控器
- 总线请求(Bus request):是CPU的输入信号,通过它DMA控制器请求总线所有权
- 总线授权(Bus grant):信号表示总线已经授权给DMA
DMA控制器
- CPU通过DMA控制器的寄存器来控制DMA
- 起始地址寄存器:指明传输从何处开始
- 长度寄存器:指明将要传输的字的数目
- 状态寄存器:用于CPU操作DMA控制器
DMA操作
- CPU 设置 DMA寄存器,如开始地址,要读写的长度
- DMA 状态寄存器允许CPU操作DMA控制器
- 一旦DMA成为总线主控制器,它就自动传输
- 可以连续传输直到传输完成
- 也可以使用几个总线周期
系统总线配置
- 多条总线允许并行:
- 慢的设备连到一个总线上.
- 快的设备连到另一个总线上
- 通过桥(bridge)将它们连接起来.
- 速度接近,通过状态机连接
- 速度相差大,需要寄存器暂存数据
- 使用多总线和桥的原因:
- 越高速的总线通常提供越宽的数据连接
- 高速总线通常要更昂贵的电路和连接器。使用较慢、较便宜的总线可以降低设备成本
桥允许总线独立操作
,这样在I/O操作中可以提供某些并行性
桥的状态图
- 上半部分从快速总线到低速总线写入
- 下半部分从低速总线读取,并写入快速总线
ARM AMBA 总线
- ARM为单芯片系统创建一个独立的总线规格说明:AMBA
- AMBA有两类总线:
- AHB 高性能总线.
- APB 低速总线.
- AHB 支持流水线技术、突发传输、分离事件和多总线主控制器.
- 连接到APB上的所有设备都是隶属设备.
- 不执行流水线操作
- 简化总线逻辑
- 类型:
- DRAM:动态随机存储器.
- SRAM:静态随机存储器.
- Flash:闪存,为ROM,但允许芯片在标准系统内部再编程.
- 存储器的变化:
- 基本结构简单.
- 二维阵列,行地址和列地址
RAM(Random-access memory)
RAM可以被读和写。它们被称为随机存取是因为它们可以按照任意顺序访问。
动态RAM,DRAM,密度大、定期刷新
- SDRAM: 同步 DRAM.
- EDO DRAM: 扩展数据输出.
- FPM DRAM: 快速页面模式.
- DDR DRAM: 双倍数据速率.
SRAM(Static RAM )快速、密度小,消耗更多的能量.
SDRAM 读操作:
- SDRAM 使用RAS 和 CAS信号将地址分成两部分,从而选择正确的行和列
存储器系统结构
PC机上的内存
- SIMM(Single In-line Memory Modules): 单列直插内存模块.
- DIMM (Double In-line Memory Modules) :双列直插内存模块.
- 都是一块小电路板,插入到标准的内存插槽中
- 为其提供所需的存储空间
存储器系统和存储器控制器
- 存储器芯片复杂的结构
- 存储器控制器连接CPU和存储器
- 存储器控制器屏蔽了内存单元的详细时序
通道与块
- 包含多个不同组件
- 控制器管理这些组件
- 调度问题
- 提供存储器并行性
- 通道:连接到一组存储器组件
- 支持多通道
- 块(Bank)是独立的存储阵列.
- 创建一个可行的嵌入式系统
- 平台及组成
- 有效的利用平台
平台选择
- 硬件的选择,包含元素:
- CPU;
- bus;
- memory;
- I/O 设备: 网络,传感器, 激励器 etc.
- 软件体系结构的基本任务——划分
- 按照操作的主要方式和设备的功能划分
- 功能是在I/O设备中实现
- 简单、不昂贵的设备,需要更多的软件实现
- 更复杂、更昂贵的设备上可以自动执行更多的功能
- 利于实现、测试和修改
- 硬件与软件的相关性:
- 软件没有硬件是无法运行的;
- 需要什么样的硬件取决于软件的需求:
- 速度;
- 内存.
知识产权(Intellectual property IP)
- 硬件的设计、源或者目标代码、网表etc.
- 应用在设计的所有层上:
- 硬件设计的原理图.
- 驱动和运行时库.
- 软件开发环境.
- IP的来源
- 购买厂家的IP
- 在线开发者团队购买
开发环境
宿主机/目标机设计方法
- 用主机系统(通常是PC机,宿主机)为目标机开发软件
- 主机的工作
- 将程序装载到目标机上
- 启动或停止目标机的程序
- 检测内存和CPU的寄存器
基于主机的开发工具
- 交叉编译器(Cross compiler):
- 交叉编译:在一类机器上运行,却为另一类机器生成代码
- 交叉调试:
- 在主机上显示目标机的状态,允许主机控制目标机.
Watchdog timer(看门狗定时器)
- 看门狗定时器监控软件的正确运行
- 看门狗被系统时钟周期性的复位
- 若看门狗没有被复位,则将产生一个复位信号给CPU
调试技术
断点
- 一个断点允许用户停止执行、检查系统的状态并可以改变状态
- 断点的实现:用监控程序的子例程调用简单的替换断点处的指令。
ARM设置断点
断点处理的动作
- 保存寄存器
- 允许用户检查CPU的状态
- 返回前,必须恢复系统的状态
- 删除断点,原先的指令被简单的恢复
- 若断点保留,原来的指令被恢复的同时会将一个新的临时断点放在下一条指令处。
LED灯
- 在调式中的重要性。
- 在串行端口,LED指示系统的状态。
内部仿真器 (ICE)
- 专用的硬件工具,帮助调试软件
- 微处理器的一个特殊版本
- 当它停止时,其内部寄存器的内容可以被读出
JTAG仿真器
- JTAG 仿真器也称为 JTAG 调试器,是通过 ARM 芯片的 JTAG 边界扫描口进行调试的设备。
- JTAG 仿真器比较便宜,连接比较方便,无需目标存储器,不占用目标系统的任何端口,而这些是驻留监控软件所必需的。
- JTAG 调试的目标程序是在目标板上执行,仿真更接近于目标硬件。
- 使用集成开发环境配合 JTAG 仿真器进行开发是目前采用最多的一种调试方式。
逻辑分析器(Logic analyzers)
- 可以看成是一组低成本的示波器:
- 同时采样多个信号
- 把信号上的值纪录,并在显示器上显示
- 2种模式:
- 状态模式:面向过程问题中的调试,系统自带时钟,每个时钟周期采用一个信号
- 定时模式:采用内部时钟,频率高,每个时钟阶段抽取多个样本
- 依赖于系统的各个元素
- CPU.
- Cache.
- 总线.
- 内存.
- I/O 设备.
带宽与性能
- 带宽:数据传输的速率
- 带宽应用到下面的部件:
- 内存.
- Bus.
- CPU .
- 系统的不同部件应用到不同的时钟频率上.
- 不同的部件有不同的带宽 (bus, memory).
带宽与数据的传输
- 视频一帧: 320 x 240 x 3 = 230,400 bytes.
- 在 1/30 秒=0.033 秒通过一帧.
- 若传输速度 , 则0.23 秒每帧.
- 太慢.
- 增加带宽:
- 增加总线的宽度.
- 增加总线时钟的频率.
总线的带宽
- T: 总线的周期数.
- P: 总线时钟周期time/bus_cycle.
- 总的传输时间:
- t = TP.
- W:基本总线宽度,字节单位.
- N:传送的字节数
- D: 传输W字节宽的数据消耗D个时钟周期.
- 额外消耗:O=O1 + O2
突发传输的带宽
- T: 总线的周期数.
- P: 总线时钟周期time/bus_cycle.
- 总的传输时间:
- t = TP.
- W:基本总线宽度,字节单位.
- N:传送的字节数
- B: 一次突发传送连续执行了B次传输.
- D: 传输W字节宽的数据消耗D个时钟周期.
- 额外消耗:O=O1 + O2
内存的带宽问题—内存的长宽比(64M)
- 存储器类型可改变存储器带宽
- 改变数据类型来适应存储器
- 相同尺寸的存储器具有不同的长宽比
- 64M存储器
- 存储器没有非常宽的长宽比
- 并行数块芯片获得更宽的存储器
内存的访问时间
- 数据类型与存储器宽度不匹配.
- 传输一个24位的标准像素:
- 24位的带宽的存储器允许一次读写一个完整的像素值
- 8位的带宽存储器则要访问3次
- 32位的存储器?
- 两种选择:浪费空间或者像素打包
- 为写入4个单元的突发写操作绘制一个时序图
- 绘制时序图
a.设备成为总线主控的过程。
b.设备将总线控制权返回给CPU的过程
- 给你一个内存系统,其中系统开销记为O(O=2),单字传输时间为1(无等待状态)。你将使用这个内存系统执行1024个单元的传输,尝试给出传输总需时钟周期总数T与单次突发传输字节大小B(1<=B<=8)的函数关系,并画出函数曲线。
T = (BD + O) * (1024 / B)
- 单字传输时间为1,单字传输开销为O = 1,一次突发传输开销为 O = 3, 总的传输量为两字节。
故两次单字传输时间为:T = 2*2 = 4
一次突发传输时间为:T = ( 2 * 1 + 3 ) * ( 2 / 2 ) = 5
因此选择两次单字传输更为快捷。