> 技术文档 > Linux 内核不能直接访问物理地址,必须通过虚拟地址访问。

Linux 内核不能直接访问物理地址,必须通过虚拟地址访问。


芯片寄存器是物理地址,为什么要映射成虚拟地址

Linux 启动时开启了 MMU(内存管理单元),所有地址访问都是虚拟地址。
虽然底层是物理内存/寄存器,但内核访问时都是通过虚拟地址间接访问的。

项目内容谁定义寄存器地址?硬件设计人员软件能改吗?不能,只能遵循手册使用软件怎么用这些地址?通过 ioremap 等方式映射后访问为什么不能直接访问?需要通过 MMU 映射进虚拟地址空间