文章目录
- 一、物理地址空间
- 二、外围设备寄存器
- 三、外围设备寄存器物理地址 映射到 虚拟地址空间
一、物理地址空间
" 物理地址空间 “ 是 CPU 处理器 在 ” 总线 " 上 访问内存的地址 ,
RISC 处理器 只能访问 物理地址空间 , 系统的 外围设备 与 物理内存 都使用 统一的物理地址空间 访问 ;
RISC 全称 " Reduced Instruction Set Computer " , 精简指令集计算机 ;
分配给 " 外围设备 " 的 物理地址 , 又称为 " 设备内存 " ;
ARM64 架构的系统中 , 物理地址空间 分为
类 :
- ① 正常内存 : Normal Memory , 指的是 随机存取存储器 RAM 和 只读存储器 ROM ;
- ② 设备内存 : Device Memory , 指的是 分配给 " 外围设备寄存器 " 的 物理地址 ;
ARM64 架构 , 参考 【Linux 内核 内存管理】Linux 内核内存布局 ④ ( ARM64 架构体系内存分布 | 内核启动源码 start_kernel | 内存初始化 mm_init | mem_init ) 博客 , 物理地址最大支持
位 ;
二、外围设备寄存器
CPU 处理器 访问 " 外围设备 “ 是通过 ” 外围设备控制器 " 的 " 寄存器 " 实现的 ;
处理器芯片 中的 寄存器 分为
大类 :
- 控制寄存器
- 状态寄存器
- 数据寄存器
外围设备寄存器 有
种 编址方式 :
- ① I/O 映射方式 , I/O-Mapped
- ② 内存映射方式 , Memory-Mapped
外围设备寄存器 一般是 连续编址 的 ,
三、外围设备寄存器物理地址 映射到 虚拟地址空间
用户空间 的 应用进程 , 访问 " 外围设备寄存器 " 只能通过 " 虚拟地址 " 实现 ,
Linux 内核 提供了 相关 API 函数 , 将 " 外围设备寄存器 “ 对应的 ” 物理地址 “ 映射到了 ” 虚拟地址空间 " 中 ;