CPU对IO端口(外设)的编址方式:
统一编址(把外设的寄存器当作一个内存地址来读写,从而以访问内存相同的方式来操作外设)
独立编址(使用专用的CPU指令来访问某种特定外设)
在系统运行时,外设的I/O内存资源的物理地址是已知的,由硬件的设计决定。但是驱动程序并不能直接通过物理地址访问I/O内存资源,而必须将它们映射到核心虚地址空间内(通过页表)
使用:
1、这里我们先定义了一些寄存器,这里使用的地址均是物理地址:
-
#define GPD0CON 0x114000a0
-
#define TIMER_BASE 0x139D0000
-
#define TCFG0 0x0000
-
#define TCFG1 0x0004
-
#define TCON 0x0008
-
#define TCNTB0 0x000C
-
#define TCMPB0 0x0010
2、为了使用内存映射,我们需先定义指针用来保存内存映射后的地址:
-
static unsigned int *gpd0con;
-
static void *timer_base;