ARM体系结构中拜访IO需运用驱动模块,可在模块初始化中运用 request_mem_region()函数请求IO内存,然后经过ioremap()函数对取得的IO内存进行重映射.
如操控s3c2410的LED显现,运用GPF口,可用如下代码段进行拜访
#define GPF 0x56000000
…
static void * GPF_BASE; //一定要界说成void *型
…
if(request_mem_region(GPF,16,”GPF”)!=NULL) //16为从地址GPF开端的16个字节
{
GPF_BASE=ioremap(GPF,16);
writel(0x5500,GPF_BASE); //GPFCON=0x5500
writel(0xf0,GPF_BASE+8); //GPFUP=0xf0
writel(0x70,GPF_BASE+4);//GPFDAT=0x70
}
…
内核中一般并不运用ioremap()函数,而是直接经过宏来将物理地址转化为虚拟地址.但物理地址到虚拟地址的转化不行少.