上一课:
【小黑嵌入式系统第二课】嵌入式系统的概述(二)——外围设备、处理器、ARM、操作系统
下一课:
【小黑嵌入式系统第四课】嵌入式系统硬件平台(二)——I/O设备、通信设备(UART&USB&蓝牙)、其他(电源&时钟&复位&中断)
嵌入式系统的硬件除了核心部件——嵌入式处理器,还包括存储器系统、外围接口部件以及连接各种设备的总线系统。
其中,存储器是嵌入式系统存放数据和程序的功能部件;
而外围设备决定了应用于不同领域的嵌入式系统的独特功能。

嵌入式系统的硬件是 以嵌入式处理器为中心,由存储器、I/O单元电路、通信模块、其它外部设备 等必要的辅助接口组成。
在实际应用中,嵌入式系统硬件配置非常精简,除了微处理器和基本的外围电路以外,其余的电路可以根据需要和成本进行裁剪、定制。
通常,嵌入式系统还包括人机交互界面,用于系统与人的交互。人机界面常常使用键盘、液晶屏、触摸屏等部件,以方便与人的交互操作。
存储器是构成嵌入式系统硬件的必要组成部分。在嵌入式系统中使用的存储器可以只是内部存储器,也可以包含外部存储器。
嵌入式处理器工作时必须有附属电路支持。在设计其硬件电路时,常常将它们与嵌入式处理器设计成一个模块,形成处理器子系统。
嵌入式处理器在功能上与通用处理器的区别之一在于嵌入式处理器上集成了大量的I/O电路。用户在开发时,根据系统需求选择某款嵌入式处理器,而不是让嵌入式处理器另外选择配合外围的大量I/O电路。

**总线(Bus)**是计算机各种功能部件之间传输信息的公共通信干线,它是由导线组成的传输线束。根据所传输的信息种类,计算机的总线可以划分为 数据总线、地址总线和控制总线 ,分别用来传输数据、数据地址和控制信号。
所有微机系统的总线结构,不外乎有“冯·诺伊曼”和“哈佛”两种。
冯·诺伊曼总线结构将程序存储器和数据存储器合在一起管理,采用同一套地址和数据总线对它们进行寻址。因此总线就特别繁忙,成为提高运行速度的“瓶颈”。但在使用上非常灵活。

哈佛总线结构采用两套总线分别控制程序存储器和数据存储器,分别读取程序代码和存取数据。
☆ 降低了总线繁忙程度和指令执行的时间。
☆ 哈佛结构使得指令的执行时间相等,提高了控制性能。

改进型哈佛总线结构 虽然也使用两个不同的存储器:程序存储器和数据存储器,但合并了两个存储器的地址总线,数据总线也进行了合并,即原哈佛结构需要4条不同的总线,改进后需要两条总线。
☆ 使用两个独立的存储器模块,分别存储程序指令和数据,每个存储模块都不允许指令和数据并存,以便实现并行处理;
☆ 具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则用来完成程序存储模块或数据存储模块与CPU之间的数据传输;
☆ 两条总线由程序存储器和数据存储器分时共用。 
数据总线的宽度又称为计算机的“位数”,是计算机系统一个最重要的参数。原因是数据总线的宽度表明了计算机系统能够一次(单指令)处理的数据的范围,代表了计算机系统处理数据的能力。
如:MCS-51单片机的数据总线宽度为8位,ARM Cortex-M3的数据总线宽度为32位。
决定了CPU每次能够从程序存储器取出多少位的指令,或者说一条指令中能够含有多少信息。因此程序总线的宽度在很大程度上决定了计算机系统指令集的效率。
数据地址总线配合数据总线,对数据存储器进行寻址。其宽度决定了CPU能够寻址的数据存储器的多少。
程序地址总线配合程序总线,对程序存储器进行寻址。程序地址总线的宽度决定了微处理器理论上能够含有的程序存储器的多少。
以上概念主要描述的是并行通信总线,对于串行通信总线,则情况会有较多区别。
不管怎样,总线是各种功能部件之间传输信息的公共通道,总线上所接的功能部件一定是可以多于2个的。
总线握手协议的作用是控制每个总线周期中数据传送的开始和结束,从而实现两个设备间协调和配合,保证数据传送的正确和可靠。
这是因为总线上连接有多个通信设备,它们之间若随意在总线上传送数据必然会导致冲突。
最简单的握手使用两根用来进行握手的电线enq(表示查询)和ack(表示应答),并使用专用的电线来传输数据。
握手信号线必须以某种方式的信号变化来表明整个总线传输周期的开始和结束,以及在整个周期内每个子周期(若有)的开始和结束。
总线握手协议中的基本构件是 四周期握手协议 。

微处理器总线在握手基础上为CPU和系统其它部分建立通信。基本的总线操作包括读和写。

总线行为经常用时序图来说明,时序图表示了总线上的信号如何随时间变化。

在许多系统中,总线上也可执行突发数据传输。


关于DMA的文章:【物联网】DMA传输原理与实现详解(超详细)
某些数据传输可能并不需要CPU介入,如I/O设备和存储器之间的数据交换。要实现这类操作,就要求有CPU以外的设备单元能够控制总线上的操作。

DMA控制器、CPU都可以发起总线数据传输,它们被称为总线主设备,总线上的其它设备则称为总线从设备。
总线在一段时间内只能由一个主设备控制使用,若多个总线主设备同时需要使用总线,此时需要“仲裁”,由仲裁器决定哪一个使用。

ARM AMBA(Advanced Microcontroller Bus Architecture)总线系统

存储设备更加详细文章:【物联网】ROM、RAM和FLASH的区别
存储器用来存放计算机工作所必须的数据和程序,在嵌入式系统中普遍使用。
嵌入式微处理器在运行时,大部分总线周期都是用于对存储器的读/写访问。存储器系统性能的好坏将在很大程度上影响嵌入式系统的性能。
为了追求存储器的高性能,一方面要从存储单元的设计、制造上研究改进(Flash、NVRAM) ;另一方面从存储器系统的结构上探索、优化(3D堆叠,多通道)。
存储器子系统设计的首要目标是使存储器在工作速度上很好地与处理器匹配,并满足各种存取需要。



寄存器组是最高一级的存储器。
高速缓冲存储器(Cache):
第二级存储器是高速缓冲存储器(Cache)。
内存:
第三级是内存。
外存:
最低一级存储器是大容量的外存。
随机存取存储器(Random Access Memory,RAM)能够随时在任一地址读出或写入内容。
RAM分类:

异步SRAM上的读操作方法:
异步SRAM上的写操作方法:
将地址送到地址线上
让CE’=0,启用SRAM
让R/W’=0
数据送到数据线上
让R/W’=1,在R/W’上升沿数据被写入存储器。
存储芯片读取时间应小于CPU从发出地址到要求数据稳定的时间间隔;存储芯片从片选有效到输出稳定的时间应小于系统自片选有效到CPU要求数据稳定的时间间隔,或提供外部电路,以产生READY信号,迫使CPU插入等待时钟Tw (时序匹配) 。若内存速度过慢,CPU插入大量等待时钟Tw ,则内存拖慢了整体处理速度(速度匹配)。
例如, Intel 2114-2的读取时间最大为200 ns,而CPU要求的从地址有效到数据稳定的时间间隔为150 ns,则不能使用2114-2,可选用比它快的芯片。如果出于价格因素,一定要用2114-2,则需要设计READY产生电路,以便插入Tw。
动态随机存储器(Dynamic RAM,DRAM)的存储单元电路以小电容(几pF~几十pF)为基础,大容量的DRAM存储单元一般为1T1C(1晶体管1电容)结构,电路简单、集成度高。
但DRAM即使不掉电也会因小电容放电而丢失信息,需要定时刷新(每行几us~十几us的刷新周期),因此在工作时必须配合DRAM控制器。
DRAM有很多类型,主要是接口方面的不同,内部存储单元基础则差别不大。(最老式的)异步接口的有FPM DRAM、EDO DRAM,同步接口的有SDR SDRAM、DDR~DDR6 SDRAM。这些产品均有在产及应用。

对DRAM的操作除了一般的读写之外,还有刷新等必需的操作。有了DRAM控制器可以极大地释放CPU直接操作DRAM的负担,同时实现高可靠性。
EDO DRAM读时序:

只读存储器(Read-Only Memory,ROM)中的内容一经写入,在工作过程中就只能读出不能重写,即使掉电,写入的内容也不会丢失。
可编程ROM(Programmable ROM),为一般的术语。
紫外线可擦可编程ROM(UV Erasable Programmable ROM, UV_EPROM)

电可擦可编程ROM(Electrical Erasable Programmable ROM, EEPROM)
快闪存储器、闪存(Flash Memory)是一种电可擦可编程ROM存储器,现今被广泛使用于内存和外存。
Flash的特点:
闪存与 EEPROM的区别:
Flash与各种存储器技术的比较:

Flash的分类:
Flash的操作包括读出和写入:
Flash的编程:
Flash的嵌入式应用: