寄存器
- 什么是寄存器?什么是寄存器映射?
- 什么是存储器映射和存储器重映射?
- 为什么存储器要重映射?
存储器映射
存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址 的过程就称为存储器映射。==如果给存储器再分配一个地址就叫存储器重映射。
存储器区域功能划分
在这 4GB的地址空间中,ARM已经粗线条的平均分成了 8个块,每块 512MB,每个 块也都规定了用途
Boock0用来设 计成内部 FLASH,Block1用来设计成内部 RAM,Block2用来设计成片上的外设。
寄存器外设
在存储器 Block2这块区域,设计的是片上外设,它们以四个字节为一个单元,共 32bit,每一个单元对应不同的功能,当我们控制这些单元时就可以驱动外设工作。我们可 以找到每个单元的起始地址,然后通过 C语言指针的操作方式来访问这些单元,如果每次 都是通过这种地址的方式来访问,不仅不好记忆还容易出错,这时我们可以根据每个单元
功能的不同,以功能为名给这个内存单元取一个别名,这个别名就是我们经常说的寄存器, 这个给已经分配好地址的有特定功能的内存单元取别名的过程就叫==寄存器映射==。
外设地址映射
片上外设区分为四条总线,根据外设速度的不同,不同总线挂载着不同的外设,APB 挂载低速外设,AHB挂载高速外设。相应总线的最低地址我们称为该总线的基地址,总线 基地址也是挂载在该总线上的首个外设的地址。其中 APB1总线的地址最低,片上外设从 这里开始,也叫外设基地址。
外设基地址
总线上挂载着各种外设,这些外设也有自己的地址范围,特定外设的首个地址称为 “XX外设基地址”,也叫 XX外设的边界地址8。
外设寄存器
在 XX外设的地址范围内,分布着的就是该外设的寄存器。以 GPIO 外设为例,GPIO 是通用输入输出端口的简称,简单来说就是 STM32可控制的引脚,基本功能是控制引脚输 出高电平或者低电平。
寄存器说明
名称
偏移地址
是指本寄存器相对于这个外设的基地址的偏移。寄存器位表
功能说明
详细介绍寄存器每一位的功能。
存储器block2上设计的是片上外设,以四个字节为一个单元,每个单元负责不同功能。根据每个单元功能的不同,以功能为名给内存单元取别名,别名即为寄存器。给分配好地址的有特定功能的内存单元取名的过程为寄存器映射。
寄存器是特定功能的内存单元的别称,方便我们使用该内存单元。寄存器映射是给内存单元取别名的过程。
存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址 的过程就称为存储器映射,如果给存储器再分配一个地址就叫存储器重映射。
存储器映射是指厂商或用户给存储器分配空间的过程,存储器重映射是指在存 储器映射的基础上,给存储器再分配地 址的过程
存储器重映射就是为了快速响应中断或者快速完成某个任务,将同一地址段映射到不同速度的两个存储块,然后将低速存储块中的代码段复制到高速存储块中,对低速存储块的访问将被重映射为对高速存储块的访问。
存储器映射是在复位之前由CPU自动完成的,存储器重映射是在复位之后由系统程序完成的。通常的顺序是:上电->存储器映射->复位->存储器重映射->系统初始化->启动OS。