对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射。如果系统结构支持独立的io地址空间,并且是端口映射,就必须使用汇编语言完成实际对设备的控制,因为c语言并没有提供真正的端口的概念。
    如果是内存映射,那么就方便多了,比如像寄存器A(假设地址为0x48000000)写入数据0x01,那么就可以这样设置。
                  #define   A   *(volatile unsigned long*)0x48000000
                  A =0x01;
分析:(volatile unsigned long*)0x48000000的意思是把0x48000000强制转换成volatile unsigned long类型的指针,崭记为P,那么就是#define A *P,即A为P指针指向位置的内容了。这样就可以通过内存寻址方式访问寄存器A了。

09-22 07:29