问个带I2C操作的字符设备驱动问题
一个设备IC驱动既有I2C串口操作,又有并口操作。
要如何组织其驱动架构?
1.如果像driver/i2c/ships/下的文件那样写,那么它的并口操作又如何完成?
2.如果把它写一个字符设备,如何把I2C操作嵌入到这个字符设备中?在内核模块里有I2C导出的符号吗?它如何探测它的地址之类的?
谢谢!
目前的思路是把它写成一个字符设备驱动,当中嵌入I2C操作,但是这个I2C操作不知如何完成,请高手指点下。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
字符设备,在操作读写的时候,驱动实现改为操作I2C设备
是既有并口操作也有I2C操作,I2C操作要先
i2c_add_driver(&my_driver)
platform_driver_register(&my_i2c_driver) 等等的。
兄弟,我的目标就是要在字符设备里实现I2C操作,但是不知如何下手啊,在内核里也没有找到相关的代码可以参
考的,你有没有相关的代码是这样操作的?给参考下。。谢谢啊!
同时也这个设备也有一个8位并口操作的。
你这个设备, 硬件上I2C和并口是否独立? 你可以做成两个驱动阿。
软件上, 好像你要先驱动I2C,然后驱动并口, 是吗
是独立的。我有想做成两个独立的驱动,但是在字符模块里有I2C的一些初始化操作。这样的话,在应用程序里只要打开一个文件描述就可以了。如果是两个,我怕同步会有问题。
所以想问下如何把I2C模块中的读写导出到字符模块中去。
thx
两个模块通信
在I2C模块里通过EXPORT_SYMBOL()宏,把对I2C的读写导出到另一个模块。但是读写函数涉及到struct i2c_client 这个结构,而这个结构是在I2C里模块里注册的。所以只有在I2C模块里再对这个读写进行一次封装,只把基地址和数据传送。希望这个方法可以用,唯一担心的就是,字符模块能不能访问I2C模块里注册的资源?