打印
[ZLG-ARM]

linux

[复制链接]
1637|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
new_arm|  楼主 | 2007-5-6 10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
周工:
我买了你们的smartarm2200,现在在做linux部分的实验。
我就对adc的实验其中 adc_open函数的:
        outl(inl(PINSEL1) | (0x01 << (temp + 22)), PINSEL1);
        filp->private_data = (void *)(num);
        local_irq_restore(flag);

其中filp->private_data 这么这样赋值呢?其中(void *)(num)是指向那里呢

还有:
adc_read函数中:temp = (int)filp->private_data;
怎么temp是把指针的值赋给它呢?

这问题已经困扰很久了,盼周工解析。

相关帖子

沙发
new_arm|  楼主 | 2007-5-7 09:29 | 只看该作者

re

怎么没人回?

使用特权

评论回复
板凳
new_arm|  楼主 | 2007-5-8 09:59 | 只看该作者

re

急a!!!!!!!!!!!!!!

使用特权

评论回复
地板
andante| | 2007-5-8 15:05 | 只看该作者

个人理解

 adc_open函数的:
        outl(inl(PINSEL1) | (0x01 << (temp + 22)), PINSEL1);
        filp->private_data = (void *)(num);
        local_irq_restore(flag);

1)其中filp->private_data 这么这样赋值呢?其中(void *)(num)是指向那里呢
  filp->private_data = (void *)(num);    
  // (void *)应为强制类型转换,类型为void *。
  // filp->private_data 相关情况,可参考《Linux设备驱动程序设计》第二版。

2)还有:
adc_read函数中:temp = (int)filp->private_data;
怎么temp是把指针的值赋给它呢?
  // outl(inl(PINSEL1) | (0x01 << (temp + 22)), PINSEL1);
  // 这里需用到fil->private_data (为啥,偶就不知道了)。
  // 所以使用临时变量temp。并temp = (int)filp->private_data;

使用特权

评论回复
5
new_arm|  楼主 | 2007-5-8 15:39 | 只看该作者

re

终于有热心人回答了。谢谢!

但是
adc_read函数中:temp = (int)filp->private_data;
怎么temp是把指针的值赋给它呢?“filp->private_data”是地址阿。不是变量值。然后就用temp的值去控制i/o?


老周的技术支持呢?

使用特权

评论回复
6
andante| | 2007-5-8 16:08 | 只看该作者

参考《Linux设备驱动程序设计》第二版

adc_read函数中:temp = (int)filp->private_data;

// (int)flip->private_data  -->  temp
// filp->private_data的,偶也不大清楚了,还是参考下《Linux设备驱动程序设计》第二版,然后自行理解。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

16

帖子

0

粉丝