Chinaunix首页 | 论坛 | 博客
  • 博客访问: 179220
  • 博文数量: 27
  • 博客积分: 705
  • 博客等级: 上士
  • 技术积分: 311
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-10 15:10
文章分类

全部博文(27)

文章存档

2012年(13)

2011年(14)

分类: BSD

2012-08-09 20:04:17

    对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射。如果系统结构支持独立的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了。

阅读(3277) | 评论(0) | 转发(0) |
0

上一篇:udev

下一篇:c 语言中的函数整理

给主人留下些什么吧!~~