文章目录
- 第一讲 嵌入式系统概述
- 一、嵌入式系统的定义:
- 二、嵌入式系统的特点:
- 三、嵌入式系统图:
- 第二讲 ARM微处理器体系结构
- RISC和CISC在构架上的不同:
- 三级流水线:`取指`、`译码`和`执行`
- 五级流水线`IF`、`ID`、`EX`、`MEM`和`WB`
- Cortex-A9的流水线:八级流水线
- Cortex-A9架构的处理器状态
- Cortex-A9内核的工作模式(九种):
- 第三讲 ARM的指令系统及汇编程序设计
- ARM指令集的种类
- 寻址方式(8种)
- 第四讲:
- 第五讲时钟管理单元
- 时钟模块(五个)
- 分频
- 中断状态:4个
- 中断类型(共160个)
- GIC中断分组表:
- 一、DMA结构
- 二、DMA控制器(DMAC)
- 看门狗定时器计数值的计算
- 第九讲 UART接口和ADC转换器
- A/D转换器的基本原理:
- A/D转换器的主要技术指标
- I2C总线
- SPI总线
第一讲 嵌入式系统概述
一、嵌入式系统的定义:
以应用为中心、以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。(功课本是体力工作)
二、嵌入式系统的特点:
- 软硬件可裁剪;
- 对功能、可靠性、成本、体积、功耗要求严格;
- 代码短小精悍,可固化;
- 实时性;
- 弱交互性;
- 需要专门的开发环境和开发工具;
三、嵌入式系统图:
嵌入式应用软件
和嵌入式操作系统
和是整个系统的控制核心- 嵌入式系统软件基本上可以分为
应用层
、操作系统(OS)层
和硬件设备驱动层
。
第二讲 ARM微处理器体系结构
RISC和CISC在构架上的不同:
- RISC构架的指令格式和长度通常是固定的;CISC构架下的指令长度通常是可变的;
- RISC在结构设计上是一个载入/存储的构架,只有载入和存储指令可以访问存储器,数据处理指令只对寄存器的内容进行操作。为了加速程序的运算,RISC会设定多组寄存器,并且指定特殊用途的寄存器。
- CISC架构则允许数据处理指令对存储器进行操作,对寄存器的要求相对不高。
三级流水线:取指
、译码
和执行
- (1) 在第1个周期,PC指向指令1,此时指令1进入三级流水线的取指阶段。
- (2) 在第2个周期,PC指向指令2,此时指令1进入三级流水线的译码阶段,同时取出指令2。
- (3) 在第3个周期,PC指向指令3,此时指令1进入三级流水线的执行阶段,指令2进入译码阶段,取出指令3。
- (4) 在第4个周期,PC指向指令4,指令1执行完成,指令2和指令3流水线推进一级,同时开始指令4的取指处理
五级流水线IF
、ID
、EX
、MEM
和WB
Cortex-A9的流水线:八级流水线
- 超标量:配置多个指令译码电路和执行部件,能同时执行多条指令。
- 超标量执行:超标量CPU采用多条流水线结构。
Cortex-A9架构的处理器状态
Cortex-A9架构的处理器状态(四种):指令集状态
、执行状态
、安全状态
和调试状态
。
- 指令集状态:共4种指令集状态,分别是
ARM状态
、Thumb状态
、Jazelle状态和ThumbEE状态
Cortex-A9内核的工作模式(九种):
其中除用户模式和系统模式外的都属于异常模式
- 用户模式、系统模式
- 快速中断模式、外部中断模式
- 管理模式、超级管理模式、监视模式
- 预取指令中止异常
- 未定义指令模式
第三讲 ARM的指令系统及汇编程序设计
ARM指令集的种类
- 数据处理和杂项指令
MOV, ADD, SUB等 - 分支指令
B, BL, BLX, BX - 异常中断指令
SWI, BKPT - 存储器访问指令
LDR, STR - 程序状态寄存器处理指令
MRS, MSR - 协处理器指令
寻址方式(8种)
1.立即数寻址
2.寄存器寻址
,3.多寄存器寻址
,
4.相对寻址
,5.寄存器间接寻址
,6.寄存器移位寻址
,7.基址、变址寻址
,8.堆栈寻址
第四讲:
第五讲时钟管理单元
时钟模块(五个)
- CPU时钟模块
- DMC时钟模块(动漫城)
- LEFTBUS时钟模块
- RIGHTBUS时钟模块
- 其他时钟模块
分频
设置某位分频值为 4,那么,分频时,原来频率假设为1000 MHz,则该频率就被分为 1000 / ( 1 + 4 ) = 200 MHz 1000/(1 + 4) = 200\text{MHz} 1000/(1 + 4) = 200MHz。
中断状态:4个
- (1) 未激活(Inactive)
中断尚未激活或未挂起; - (2) 挂起(Pending)
中断已经产生,正等待目标CPU响应; - (3) 激活(Active)
CPU已经应答(Acknowledge)来自GIC的中断,该中断正在被CPU处理但尚未完成; - (4) 激活并挂起(Active&Pending)
CPU正在处理该中断,此时GIC又收到来自该中断源的更高优先级的中断。
中断类型(共160个)
【或者问“Exynos 4412中断源共有3种”】
- (1) 软件生成的中断(SGIs):
是通过向软件生成中断寄存器写入SGI中断号生成的。SGI一般被用作核间中断,用于核间通信。16个 - (2) 私有外设中断(PPI):
由一个单独的处理器私有的外设生成。16个 - (3) 共享外设中断(SPI):
由一个可以被中断控制器路由到多个处理器的外设生成。128个
GIC中断分组表:
GIC将ID0~ID1019分为以下几组:
(1) 16个SGI中断号(ID0~ID15),一般被用来作为核间中断 IPI(Inter-Processor Interrupt);
(2) 16个PPI中断号被分配为ID16~ID31;
(3) SPI的中断号被分配为ID32~ID1019,Exynos 4412仅使用了前128个(ID32~ID159)。
一、DMA结构
1.共3种:
- 单总线、I/O分离的DMA结构
- 单总线、I/O集成的DMA结构
- I/O总线的DMA结构
2.单总线、I/O分离的DMA结构的特点:
- 优点:结构简单、配置代价较小、价格便宜;
- 缺点:存储器和I/O模块之间经过DMA数据交换的路径是:
MEMORY (I/O)----SYSTEM BUS----DMA----SYSTEMBUS----I/O(MEMORY)
,传送一个字需要消耗两个总线周期,传输效率比较低
3.单总线、I/O集成的DMA结构的特点:
- 优点:DMA逻辑集成为I/O模块的一部分,存储器和I/O模块之间经DMA数据交换路径简化为
MEMORY(I/O)----SYSTEM BUS----I/O(MEMORY)
,传送一个字节只需要一个总线周期,节省了总线周期
4.I/O总线的DMA结构的特点:
- 优点:通过I/O总线连接I/O外设与DMA模块连接,I/O外设与DMA控制器都可以做成与总线的标准接口,满足了嵌入式微处理器结构可扩展的要求
二、DMA控制器(DMAC)
-
地址寄存器
:包括源地址和目的地址寄存器。
在进行DMA操作之前,在CPU控制下将源地址和目的地址分别装入DMAC的源地址和目的地址寄存器;
在进入DMA操作后,由这些地址寄存器提供出源地址和目的地址,并在传送数据的同时,由硬件以加1或减1来修改地址寄存器的值。 -
控制/状态寄存器
:选择DMAC的操作类型、工作方式、传送方向和有关参数。
通过CPU在DMA操作之前向控制寄存器写入相应的控制字来实现的。
状态寄存器用于寄存DMA传送前后的状态。
DMA传送结束后,CPU通过对该寄存器执行输入指令即可读入状态字,了解所需的状态和结果 -
字节计数器
:用于控制传送数据块的长度。
在进入DMA操作之前,CPU将数据块长度(字节数)装入字节计数器中。
进入DMA操作后,每传送一个字节数据,由硬件自动修改计数器的值(减);当计数器溢出时,便使DMA方式的数据传送结束。
看门狗定时器计数值的计算
-
(1)输入到计数器的时钟周期
t W a t c h D o g = 1 ( P C L K / ( 预 分 频 值 + 1 ) / 分 频 值 ) t_{WatchDog} = \dfrac{1}{( PCLK / (预分频值 + 1) / 分频值)} tWatchDog=(PCLK/(预分频值 + 1)/分频值)1
其中:
预分频器 Prescaler的预分频值
:取值范围为0~254
分频因子 Division factor的分频值
:取值为16、32、64、128(分别对应函数值0,1,2,3),由用户在WTCON(看门狗时钟控制寄存器)中设置。 -
(2)已知看门狗的定时周期T,求WTCNT初值
T = 计 数 值 ( W T C N T 初 值 − W T C N T 当 前 值 ) × t W a t c h D o g T = 计数值(WTCNT初值 - WTCNT当前值) \times t_{WatchDog} T = 计数值(WTCNT初值− WTCNT当前值) ×tWatchDog
WTCNT为看门狗计数寄存器,用来设置计数多少个时钟周期,乘以时钟周期则是定时的总时间。
算的时候,WTCNT当前值就是0,WTCNT初值其实就是 t W a t c h D o g t_{WatchDog} tWatchDog的倒数。 -
(3)wdt_operate(1,1,128,1,199,625,625)七个值
- 是否Reset,是1
- 是否中断,是1
- 分频值对应的函数值
- 是否使能,是1
- 预分频值
- 看门狗数据寄存器WTDAT:同WTCNT初值
- 看门狗计数寄存器WTCNT
例:假设PCLK为16MHz,实现1s内不对看门狗实现喂狗操作,看门狗就会复位系统。
解:预分频值设为199,分频值设为128,T=1s则
t
W
a
t
c
h
D
o
g
=
1
(
16
M
/
(
99
+
1
)
/
128
)
=
1
625
t_{WatchDog} = \dfrac{1}{( 16M / (99 + 1) / 128)}=\dfrac{1}{625}
tWatchDog=(16M/(99 + 1)/128)1=6251
T
=
计
数
值
(
W
T
C
N
T
初
值
−
W
T
C
N
T
当
前
值
)
×
t
W
a
t
c
h
D
o
g
=
1
s
T = 计数值(WTCNT初值 - WTCNT当前值) \times t_{WatchDog}=1s
T = 计数值(WTCNT初值− WTCNT当前值) ×tWatchDog=1s
W
T
C
N
T
初
值
=
625
WTCNT初值=625
WTCNT初值=625
wdt_operate(1,1,3,1,199,625,625)
第九讲 UART接口和ADC转换器
A/D转换器的基本原理:
模/数转换一般分为采样
、保持
、量化
和编码
liangbian四个步骤。(财报量变)
A/D转换器的主要技术指标
分辨率
,相对精度
,转换速度
。(分享转)
I2C总线
双向,二线制,同步,串行
SPI总线
全双工,4线制