O’Reilly的LDD 书中指出,访问IO口必须先用request_region注册,再用reiomap映射。 但我看了几个开发板的通过IO口驱动LED的源码,好像都是直接对IO地址进行访问的,请问这是怎么回事? linux驱动中write_gpio_bit()可以对io内存进行访问,而ARM体系中IO内存和IO端口(外设)是统一编址的,照这样理解,访问外设和IO内存是同样的原理啊,为什么还需要iomap映射地址呢?对2410的某一个io口操作,实质操作的是寄存器(0x56000000+offset),这个位于SFR中的地址是物理地址吧?为什么可以不经过映射就可以访问呢? 还有request_region,request_mem_region,reiomap应该怎么用?
初学ARM LINUX,高手勿见笑! |