映射函数
#include <linux/io.h>
static inlive void __iomem *ioremap(phys_addr_t offset, unsigned long size);
参数:
offset:要映射的物理内存区的起始地址。
size:物理地址的范围。
#define iounmap(cookie) __iounmap(cookie)
参数:
cookie:虚拟地址的指针。
函数原型:
void __iounmap(volatile void __ iomem *io_addr);
参数:
io_addr:虚拟地址的指针。
虚拟地址的读写操作
#include <linux/io.h>
#define ioread8(p) ({unsigned int _v = __raw_readb(p);__v;})
#define ioread16(p) ({ unsigned int __v = le16_to_cpu(__raw_readw(p)); __v; })
#define ioread32(p) ({ unsigned int __v = le32_to_cpu(__raw_readl(p)); __v; })
#define iowrite8(v,p)__raw_writeb(v, p)
#define iowrite16(v,p)__raw_writew(cpu_to_le16(v), p)
#define iowrite32(v,p)__raw_writel(cpu_to_le32(v), p)