除x86外,ARM均只有内存空间,没有IO空间(区别在于不同的地址线)
IO端口:
当一个寄存器或设备内存位于IO空间时,称其为IO端口
IO内存:
当一个寄存器或设备内存位于IO空间时,称其为IO内存
怎么访问IO内存:
申请 struct resource *request_mem_region(unsigned long start,unsigned long len,char * name)
/proc/iomem 中可以看到IO内存的使用情况;为什么硬件地址还需要申请呢?因为这是表示我这个驱动要用这几个硬件
地址(如寄存器地址),其它驱动程序不要再来抢了。
映射 void *ioremap(unsigned long phys_addr,unsigned long size) 返回虚拟地址
访问 unsigned ioread8(void *addr) 使用虚拟地址
释放 void iounmap(void *addr) void release_mem_region(unsigned long start, unsigned long len)两步