04_ARM硬件基础
- 课程目标:了解我们常用硬件接口,并且编程控制
- 重点难点:对各个接口原理的掌握
- 考核目标:各个接口的作用,实现原理及特性
1. 硬件基础概述
1.1. 为什么我们要去研究硬件
因为要去使用他,驱动它
1.2. 我们要研究什么
- 硬件原理及构造
- 地址
- 寄存器
- 协议
- 时长/频率
1.3. 我们怎么研究
- ARM手册
- 芯片手册
- 外设芯片手册
1.4. ARM Cortex-A8 - S5PV210的硬件
- 分类
- CPU核心
- 中断
- NEON/SIMD
- Cache
- 系统外围
- RTC:实时时钟
- PLL:锁相环
- PWM Timer:脉冲宽度调制
- WatchDig Timer:看门狗
- DMA:直接存储访问
- keyboard
- ADC
- 连接
- USB Host/OTG
- UART
- IIC
- SPI
- Modem IF:通信调制
- GPIO
- Audio IF:音频
- Storage IF:存储
- 多媒体
- Camera IF/MIPI CSI
- Coder/Decoder
- 2D/3D Graphics Engine
- TV out/HDMI
- JPEG Codec
- LCD Controller
- 存储接口
- SRAM/SROM
- OneNand
- SLC/MLC Nand
- DDR
- 电源管理
- Clock Gating
- Power Gating
- Frequency Scaling
- CPU核心
2. SIMD & NEON
SlMD:(Single Instruction Multiple Data,单指令多数据流)
NEON技术可加速多媒体和信号处理算法(如视频编码/解码、2D/3D图形、游戏、音频和语音处理、
图像处理技术、电话和声音合成),其性能至少为ARMv5性能的3倍,为ARMv6SMD性能的2倍
3. Cache (具体参考 《计算机组成原理》)
3.1. 为什么需要Cache
我们现在采用的存储器结构多为体交叉存储器体系
-
I/O 向主存请求的级别高于CPU访存
-
主存速度跟不上CPU发展
-
主存一般都是片外,频繁进出速度慢,能耗高
-
Cache 工作原理
程序访问的局部性原理,采用了SRAM命中率
大小比例:4:1000,128K 32M
3.2. Sample:AMBA高速缓存控制器
3.3. 内存层级
制作成本高,不可能做太大
- L0:寄存器
- L1:一级高速缓存(SRAM),一般64KB
- L2:二级高速缓存(SRAM),一般1M
- L3:三级高速缓存(SRAM)
- L4:主存(DRAM)
- L5:本地二级存储(本地磁盘)
- L6:远程二级存储(分布式文件系统,web服务器)
3.4. 缓存控制器 Cache Controller
- 搬运规则
- 直接映射缓存
- 联合缓存
https://www.bilibili.com/video/BV1px411E7ma?p=48&time=2m44s
3.5. 直接映射缓存 Direct Mapped Cache
3.6. 联合缓存 Set-associative Cache
3.7. 缓存结构总结
4. MMU (具体参考 《操作系统》)
MMU
:memory manage unit 存储管理单元
4.1. 计算机在访问主存的时候出问题了
- PM物理内存不够用
- 进程隔绝
- 虚拟内存:将硬盘里一部分空间虚拟成内存,来达到扩展内存的目的
4.2. 虚拟存储器
4.2.1. 作用
- 1、允许多道程序之间有效而安全的共享存储器
- 2、消除一个小而受限的主存容量对程序设计造成的影响
4.2.2. 虚拟地址、物理地址、页、缺页
-
要解决两个问题
- 保护、锁
- 分割 -> 完成内存地址映射 转移
-
虚拟地址:进程当中的虚拟地址
-
物理地址:真实的内存地址
-
页:
4.2.3. 页保护及锁定机制
4.2.4. 地址转换过程
4.2.5. 分段
4.3. 页的存放和查找
4.3.1. 页表
4.3.2. 页表寄存器
4.4. 缺页
1、如果不缺页直接读物理地址
2、如果缺页,则把控制权交给 操作系统,操作系统一般是从磁盘地址去
4.5. 加快地址转换TLB
- 处理TLB缺失
4.6. 集成虚拟存储器
- SRAM -> Cache
- DDRAM -> 内存
- ROM -> Nand Flash
5. 中断体系结构
5.1. ARM异常及中断基本概念
5.1.1. 什么是异常?什么是中断?
中断是特殊的异常
5.1.2. ARM异常种类对应的处理器模式
ARM体系结构中存在7种异常处理。异常发生时,处理器会把PC指向一个特殊地址,这个地址放在存储器种一个特定表中,成为向量表。
地址 | 异常 | 进入模式 | 模式 |
---|---|---|---|
0x00000000 | 复位 | 管理模式 | 复位电平有效时,产生复位异常,程序跳转到复位处理程序处执行 |
0x00000004 | 未定义指令 | 未定义模式 | 碰到不能处理的指令时,产生未定义指令异常 |
0x00000008 | 软件中断 | 管理模式 | 执行SWI指令产生,用于用户模式下的程序调用特权操作指令 |
0x0000000c | 预存指令 | 中止模式 | 处理器预取指令的地址不存在,或该地址不允许当前指令访问,产生指令预取中止异常 |
0x00000010 | 数据操作 | 中止模式 | 处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常 |
0x00000014 | 未使用 | 未使用 | 未使用 |
0x00000018 | IRQ | IRQ | 外部中断请求有效,且CPSR中的I位为0时,产生IRQ异常 |
0x0000001c | FIQ | FIQ | 快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常 |
5.1.3. 异常发生时候CPU处理步骤
1、保存当前执行位置
2、保存当前执行状态
3、寻找中断入口,即向量表地址
4、执行中断处理程序
5、中断返回,继续执行
- 几种异常
- 复位异常
- 未定义指令异常
- 软中断异常
- 预取异常
- 数据异常
- 外部中断异常
- 快速中断异常
5.1.4. ARM异常优先级
Highest | 1 | Reset |
2 | Data Abort | |
3 | FIQ | |
4 | IRQ | |
5 | Prefetch Abort | |
Lowest | 6 | SW Undefined instruction |