日期:2014-05-16  浏览次数:20596 次

寄存器映射方法
写按键驱动时,用到GPIO7组寄存器,首先我要配置IO config寄存器,控制IO口的复用关系,

然后配置GPIO7寄存器的控制相应位的读写状态等,

但是,应为在系统下编写驱动,往寄存器里写数据之前,首先要进行地址转换(映射),

请教地址转换的方法?






------解决方案--------------------
访问前调用ioremap();退出前调用iounmap();

------解决方案--------------------
根据体系结构的不同IO寄存器的访问方式不同:
1)如果是IO和MEM独立编址,例如X86,对IO寄存器的访问在内核直接采用inb方式;
2)如果是IO和MEM统一编址,例如ARM等RISC处理器,在内核里采用ioremap重新映射,然后用writeb等方式。
在核外X86也可以直接访问IO和MEM,具体方法不记得了。
如果采用Ioremap和writeb等方式可以进行内核访问的寄存器,也可以采用mmap方式直接映射给核外用户。