免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3865 | 回复: 2
打印 上一主题 下一主题

【求助】linux下读写gpio端口 控制寄存器的方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-13 22:42 |只看该作者 |倒序浏览
我用的是s3c2410的开发板,linux操作系统,我知道在arm下读写io要用/dev/port,但是 相应io的控制寄存器如何读写,是否也是用port文件,同样的方法?

下面直接读取的方法应该不行吧:
    先用gpio(1-5)试试,这其中对应的引脚是GPG0、GPG1、GPG8、GPG9和GPG10,我是在linux下做开关量的采集。
    控制寄存器 设置为: GPGCON &=(0xFFC0FFF0);0、1、8、9、10都设为输入状态
    GPGUP也要设置 GPGUP=0x0;
    这样设置就可以直接从 GPGDAT读数据。
    在linux下设置的话,我直接在函数里写:
    unsigned int *GPGCON=0x56000060; //0x56000060是GPGCON的地址
    unsigned int *GPGUP=0x56000068;  //0x56000068是GPGUP的地址
    &GPGCON &=(0xFFC0FFF0);
    &GPGUP =0x0;

是不是在linux下的物理地址都是映射为虚拟地址,是不是要读相应的虚拟地址,那是如何映射的?

希望得到指点,谢谢!

论坛徽章:
0
2 [报告]
发表于 2008-06-14 20:11 |只看该作者
用ioremap,好象是这个函数,具体忘记了。
得到虚拟地址后,*GPGCON=0x56000060,这种写法也不合理,要注意“内存屏障”。

论坛徽章:
0
3 [报告]
发表于 2008-06-14 20:22 |只看该作者
能再讲的稍微详细一点吗,谢谢了啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP