免费注册 查看新帖 |

Chinaunix

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

如果知道 IO的基地址 应如何进行都取数据,直接读的话怎么只能读出0而正常情况读出非0 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-27 12:04 |只看该作者 |倒序浏览
本帖最后由 EVOzhe 于 2012-08-27 12:07 编辑

请问:当我知道了串口1的基地址,写了一个简单的小驱动我直接用(unsigned char *)去赋值然后读取为什么只能读出0?
        而正常情况下它的值是动态改变的(非0)? 难道单独拿出来用不行么?如果我要这么用的话,我该在使用前做什么操作?
        要初始化什么东西么?
  1. unsigned long * __iomem membase = (unsigned long*)0xf1012100;

  2. int __init text_init(void)
  3. {
  4.         int err = 0;
  5. while(1)
  6. {
  7.         printk("value = %ld\n",*membase);
  8. }
  9.         return err;
  10. }
  11.         
复制代码
这样直接读的话只能都出0来,请问高手在这之前我该如何操作才能得到跟使用 linux 串口驱动那样读出串口的值

论坛徽章:
0
2 [报告]
发表于 2012-08-27 14:38 |只看该作者
回复 1# EVOzhe


    要先做IOREMAP吧

论坛徽章:
0
3 [报告]
发表于 2012-08-28 09:30 |只看该作者
回复 2# zt868


    我用实时的内核调试工具观察的那个地址,这个地址是不是已经ioremap了。?

论坛徽章:
0
4 [报告]
发表于 2012-08-28 10:31 |只看该作者
使用volatile关键字,这个地址是串口的实地址么?注意这个串口的寄存器是可读可写的,还是只读的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP