writel
是一个 Linux 内核中的函数,用于将数据写入指定的内存地址
#include <linux/io.h>
readl
和 writel
函数时,需要将物理地址转换为内核虚拟地址。可以使用 ioremap
函数将物理地址映射到内核虚拟地址空间:#include <linux/io.h>
#include <linux/slab.h>
unsigned long phys_addr = 0x12345678; // 物理地址
void __iomem *virt_addr; // 内核虚拟地址
virt_addr = ioremap(phys_addr, PAGE_SIZE);
if (!virt_addr) {
printk(KERN_ERR "ioremap failed\n");
return -ENOMEM;
}
writel
函数将数据写入内存地址:uint32_t data = 0x12345678; // 要写入的数据
writel(data, virt_addr);
iounmap
函数释放映射的内核虚拟地址:iounmap(virt_addr);
这是一个简单的示例,展示了如何使用 writel
函数在内存中操作数据。请注意,这里的代码是针对 x86 架构的,如果你使用的是其他架构(如 ARM),可能需要使用不同的函数和寄存器。