您的位置:逆风者 VC++ 正文
原作者:火车采集器(http://www.locoy.com) 添加时间:2007-09-01 原文发表:2007-08-31 人气:605

本文章共2135字,分2页,当前第1页,快速翻页:
 

初试驱动---OV511 摄像头驱动开发

作者:胡峰令


下载源代码
逆风编程精品
 

本篇适合没有接触过驱动或者初学驱动的朋友。运行本程序以及源代码都请先看 ReadMe.txt 文件。

  在本文中阐述的驱动是用windriver做出来的,没有采用DDK或DriverStudio,可能看起来并不像是一个”很正式“的驱动,而且本文中的驱动程序不可以用于DirectShow接口。对于DDK和DriverStudio我也了解了一些内容,在刚开始的时候我是满怀激情的想用DDK或DriverStudio的,很快我的激情之火就被无情的熄灭了,对于一个完全没有接触过驱动开发的人来说(在这之前我都不知道系统是如何找到某个设备驱动的),我个人觉得DDK或DriverStudio有点难了,当你对DDK或DriverStudio有些了解的时候,当你有了想编一点代码的欲望时候,你会发现结果是多么的残酷,要么运行出错,要么黑屏重启,最后你无处下手,特别是编一个硬件设备不是自己做的,对于一些产商命令都不熟悉的时候,对于初学者来说,DDK或DriverStudio显得特别难,刚开始我就是这个样子。但在我个人看来在了解了一些驱动的知识后,在用DDK或DriverStudio遇到困难的时候,不妨试试windriver,你会兴奋的发现这个工具居然不用做什么工作就可以和你的硬件通信了,这时候你会对windriver有更好把握,因为对象始终是同一个设备,共同之处还是有的。
  虽然在用windriver时,你只是开发了一个看起来只是开发了一个位于应用层的软件,其实它相当于把一部分驱动程序功能提到应用程序来做了(注意:只是一部分),当然这需要windriver的api支持(所以会影响速度),其实我想这也就是windriver的开发思路吧。而且我想如果在windriver下做通的话,再用DDK或DriverStudio难度也会下降不少吧,特别是对于USB驱动来说,搞清楚URB后应该就比较容易了。好了,不多说了,下面就步入正题吧。

1、准备--知己知彼,百战不殆

  对于像我这样的驱动文盲来说,了解一些驱动相关的知识是必需的。我们应该对驱动有个概念性的把握,像驱动是什么,驱动的作用是什么,硬件是如何找到对应的驱动的,应用程序又是如何与硬件通信的,驱动最终产生文件是什么,开发驱动都有什么方式等。在这个过程中,我们可以随便找些驱动开发的书看看,积累一些概念性的知识。

2、工具--欲先攻其事,必先利其器
  说到开发,当然需要一个开发工具了,在这里VC是离不开的,但开发驱动,必需还有另外一个工具要我们选择。其实也就是用什么方式来产生驱动的框架,就象VC下的应用程序可以自动产生一个初始的框架一样。在这里,我们有三种方式可以选择:

  • 从DDK自带的例子(此时许包含DDK的编译工具),如usbintel出发编写,这种方式编出来的驱动质量应该是最好的,但同时难度也是最大的;
  • 用DriverStudio(此时许包含DDK的编译工具),其实DriverStudio就是对DDK进行了封装,其难度虽然有所下降,但对于我这样的初学者还是困难重重,有个比喻打的很好,DriverStudio与DDK的关系,就像VC与SDK的关系;
  • 用windriver,正如前面所说,windriver其实带了一个它自身的驱动(普通模式下),所以它可以直接与你的硬件通信,当然你需要对你的硬件进行一些设置,如一些产商命令的发送,也就是是一些寄存器的设置。然而,硬件往往都有很多的寄存器,所以要自己手动一个个设置显得很繁琐,如果你的硬件已经有现成的驱动(如摄像头),我们就可以借助像bushound工具跟踪驱动加载的整个过程,然后自己写个程序将结果转换为代码,再加上自己需要的特殊设置就可以了,我就是这样的做的,不过这样的代码风格可能显得很差。由于在这个过程中你需要对产商命令加以了解,所以看硬件的datasheet是必需的,这也是我选择ov511 芯片的摄像头的原因,它的datasheet是公开的。
     
    本文章更多内容1 - 2 - 下一页>>
相关文章

定制编辑框的上下文菜单
ATL布幔之下的秘密(5)
如何在NT下获取进程的路径
如何更改其它程序 ListView 控件中某个 Ite
利用辅助线程更新用户界面UI
一个简单的读写注册表实例
COM 组件设计与应用(十)——IDispatch 接
MFC程序员的WTL指南: Part II - WTL 界面基
用VC 制作QQ自动登陆软件
用udp协议通讯示例
关于SendMessage
COM 组件注册方法
枚举声明,模板函数特化
系统托盘编程完全指南(一)
点对点视频会议程序:VideoNet
乱砍设计模式之二:STATE 模式——履胡之肠
ATL 实现定制的 IE 浏览器栏、工具栏和桌面
对“仅通过崩溃地址找出源代码的出错行”一
COM插件模型浅谈
Windows 2000驱动程序的设计

相关评论


本文章所属分类:首页 VC++

  热门关键字: