开发板完整的AD驱动程序为什么没有file_operations结构?
这是一个简单的驱动,request_irq(IRQ_ADC_DONE, adcdone_int_handler, SA_INTERRUPT,
"ADC", NULL) 注册了驱动的中断处理函数,read函数通过中断处理函数唤醒执行。这个也只有一个read,实现上并不需要提供给上层什么操作了,所以就没有必要了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
file_operations 是vfs的一部分。由于unix/linux对一般文件和设备文件一视同仁。
所以用户可以通过vfs访问设备。作为设备驱动,需要提供vfs访问设备的代码。
驱动需要向vfs注册回调函数。
这个驱动显然没有实现用户进程访问设备。
内核自己偷着用~
对于这个case,应用程序并不需要来read它,实际上是没有提供给应用程序读它的接口,她只是通过DPRINTK("AIN[%d] = 0x%04x, %d\n", ain, ret, ADCCON & 0x80 ? 1:0);把读到的值打印出来而已。你可以对它进行改造,提供给应用程序一个接口。
linux下面AD的驱动,是不是也是用read之类的系统调用来接口的?
一般来说AD又算什么设备?字符?还是别的
中断本身就是异步的,硬件产生的,你想用程序主动产生中断,恐怕不行,呵呵。
不过,系统调用倒是可以认为是主动中断,呵呵
这段程序的目的是为其它驱动模块提供接口的如touchscreen或别的需要从ADC中读取数据的模块,不是要作成一个独立的字符设备驱动,肯定是会提供相应fops喽。 所以,你应该grep下看谁在调s3c2410_adc_read,同时注意s3c2410_adc_read返回值是ret & 0x3ff, 显然最高分辨率是10位滴。