您试图做的是访问所谓的 IO内存 。我只能鼓励您阅读 Linux设备驱动程序 (LDD)书,更具体地说,请阅读第9章。
要“分配”此类区域,您需要致电
struct resource *request_mem_region(unsigned long start, unsigned long len, char *name)
。在您的驱动程序可以访问它之前,您必须为其分配一个虚拟地址,这可以通过以下方式完成:
void *ioremap(unsigned long phys_addr, unsigned long size)
为了确保您的驱动程序随后可以在不同的体系结构/平台上运行,请确保对此类区域使用某些访问器功能(ioread8 / 16/32或iowrite8 /
16/32及其所有变体)。



