在Linux系统下,不能直接通过使用寄存器的名称来操作寄存器,但是可以建立自定义寄存器和实际地址的映射关系,操作方法如下:
1、定义寄存器名称:
volatile unsigned long *gpfcon; //定义GPF控制寄存器
volatile unsigned long *gpfdat; //定义GPF数据寄存器
2、建立寄存器和实际地址的对应关系:
gpfcon = (volatile unsigned long *)ioremap(0x56000050, 16); //建立寄存器和实际地址的映射
gpfdat = gpfcon + 1;
3、操作寄存器
*gpfcon &= ~((0x3<<(0*2)) | (0x3<<(2*2))); //设置IO口
regval = *gpfdat; //读取寄存器的数据