这几天又抽空玩了玩我的ut200,问题解决大半了,走了不少歪路,以后全部完成后会写个类似经验总结之类的文档,方便下其他想了解v4l机制的兄弟。
在调试的过程中发现了个v4l中tuner-simple.c的小bug,不过此问题只会在调试的时候才会出现,后果就是module直接oops,HOHO,tuner_dbg这个宏的问题。
另外其他想写电视卡驱动的兄弟,要注意下v4l中i2c的机制,主要几个关键文件是 tuner-core.c tuner-simple.c
还有i2c_driver的加载放在了 linux/include/media/v4l2-i2c-drv-legacy.h中。
这次对i2c这块代码算了解了,呵呵。
教训:不要贸然进入代码编写阶段,还是需要熟悉v4l整个架构。理清楚层次结构很重要,比如知道/dev/video这个接口给用户提供哪些功能,这些功能在v4l中又是如何实现,代码参考 linux/driver/medio/video/videodev.c
最下层又是如何和硬件通讯,这个就是你的driver提供,比如usb,然后你再把这上层和下层的中间层找出来,搞清楚它们是如何连接在一起的,这样整个架构就了然于胸。
其实中间层的东西太多,比如i2c_driver,i2c_client,i2c_adapter,然后i2c如何使tuner运转等等
ps.由于没有搞到datasheet,只能直接使用抓取的usb包。多次联系10moons都被礼貌拒绝了~
联系trident也被拦了下来,呵呵,上次frank说的资料是tm6000的cpu,在此还是感谢frank热心的帮助。
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=1283763