驱动中读写硬件寄存器的方式

1.驱动中读写硬件寄存器的方式
比如想控制某寄存器。先查找datasheet中该寄存器的物理地址。
然后调用ioremap()函数。该函数返回一个虚拟地址。内核空间
可以直接访问它。
比如我们要访问s3c2410平台上的I2S寄存器, 查看datasheet 知道IIS物理地址为0x55000000,
我们把它定义为宏S3C2410_PA_IIS,如下:
#define S3C2410_PA_IIS    (0x55000000)
若要在内核空间(iis驱动)中访问这段I/O寄存器(IIS)资源需要先建立到内核地址空间的映射:
our_card->regs = ioremap(S3C2410_PA_IIS, 0x100); 
if (our_card->regs == NULL) {
         err = -ENXIO;
         goto exit_err;
}
创建好了之后,我们就可以通过readl(our_card->regs )或writel(value, our_card->regs)等IO接口函数去访问它。

你可能感兴趣的:(ARM嵌入式相关)