Chinaunix首页 | 论坛 | 博客
  • 博客访问: 708607
  • 博文数量: 118
  • 博客积分: 1437
  • 博客等级: 上尉
  • 技术积分: 1155
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-22 20:23
文章分类

全部博文(118)

文章存档

2022年(32)

2017年(3)

2014年(4)

2013年(1)

2011年(2)

2010年(16)

2009年(60)

我的朋友

分类: LINUX

2009-09-10 22:27:52

      没编过驱动,最近用到AD,想把板子的AD用起来,偷懒在网上载了个AD驱动,编译就遇到了一些问题(见移植AD驱动遇到的错误及解决)。
     目前,又出现了新的问题。就是AD驱动ioremap后的ADCCON,一直不能用iowrite32修改,ioread32读出来的始终是默认值3FC4。折腾了好几天,也没找到原因,发现触摸屏驱动里的正常。索性,编译了一个没有触摸屏的内核,问题依然存在。
     今天,再次尝试,我将触摸屏驱动中的ioreamp函数注销掉。编译了一个带触摸屏驱动的内核,竟然可以修改,不知所以然。
     本以为程序可以用了,但发现中断中wake_up(
&adcdev.wait)函数不能正常工作,不可以唤醒interruptible_sleep_on(&adcdev.wait)。

总结下遇到的两个问题,希望有人可以指点。

什么情况下寄存器的值不可以用iowrite32()修改?

 1. 刚才自己已经排除了一种情况,两次ioremap(),虽然得到两个ADCCON映射的虚拟地址,但iowrite32写两个虚拟地址,都可以成功修改ADCCON.     
      grep了内核,发现只有static struct resource s3c_adc_resource[] 中出现了ADCCON的地址。不清楚板子初始化什么时候用到了这个结构,有可能是这个结构的问题。

2. wake_up()的问题,目前一点思路没有。









阅读(1006) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~