2025-02-23
在Linux
内核中,一般使用ioremap
将物理地址映射到内核虚拟地址空间,使内核能够通过指针访问设备的内存或寄存器。主要用于访问设备的内存映射I/O
区域。
void __iomem *ioremap(resource_size_t phys_addr, unsigned long size);
参数
phys_addr
:要映射的物理地址。size
:映射区域的大小。返回值
NULL
#include <linux/io.h>
int main(void) {
void __iomem *regs = ioremap(0x10000000, 0x1000);
if (!regs) {
pr_err("ioremap failed\n");
return -ENOMEM;
}
// 通过regs访问硬件寄存器
iowrite32(0x12345678, regs + 0x10);
// 释放映射。
iounmap(regs);
}
ioremap
是Linux
内核中用于访问设备内存的重要函数,通过将物理地址映射到虚拟地址空间,使内核能够安全地操作硬件资源。