核心内容:
这次学习最后采用的开发环境如下:
-
Windows : win10 64位 1809版本(Host计算机和测试计算机上相同)
-
Visual Studio Community 2017 : 版本15.9.4
-
SDK : 10.0.17763.132
-
WDK : 10.0.17763.132
之前一个朋友开发了一个单板,使用USB2.0的接口,一直以来,他提供的驱动都是基于XP系统的。到win10出来之后,也没有升级。既没有win10的驱动,也没有64位的驱动。所以要用他的单板,我就得去装一个XP的虚拟机,然后把他的软件拷到虚拟机下才能使用。不过因此也算学习了怎么使用VM,算是附带福利。
所以在准备学习驱动开发时,就确定了目标是开发用于win10的驱动。
几年前偶然的机会接触过一个叫windriver的公司的讲座,其他的都忘记得差不多了,唯一记得的就是据说用他们的工具可以更方便开发驱动程序,并且好像是PCI(PCIe)、和USB的更是简单。但是一直也没有去自己实践一下,所以后来有人问起,我自己都模糊了,连公司名说出去,人家都说是Wind River还是 Win Driver啊? 我其实自己也晕乎着。我想应该是后者,因为里面怎么也有一个Driver的字眼啊。
这次重新学习驱动开发,初步看了些资料,也粗糙的翻看过一些书籍,发现点脉络,最后决定就选择使用VS2017平台作为开发环境。驱动简单来说,是跟操作系统直接关联的。所以linux下的驱动,和windows下的驱动决然不同。就是都是windows驱动,也随着windows版本而在变化。对于早期我差不多知道windriver的那个时候,应该是还用98或者ME系统,那时驱动的文件格式是vdx文件,驱动用的就是VxD(具体什么意思,我也不知道);到后来使用xp系统,使用的是WDM模型;后来vista以后,就是用WDF架构。对于WDM模型,开发驱动使用的是DDK,对于WDF,用的是WDK。
DDK是Driver Developer Kit 的缩写,WDK是Windows Driver Kit的缩写,具体差别在哪里,对我这个门外汉来说,也是天书般的,就先不去管他了。但是现在在Microsoft或者CSDN上,资料最多的是关于WDK的,因此就决定选用WDK开发。选用WDK还有一个原因,是Visual Studio Community 2017成为免费软件。WDK可以集成到VS2017中使用。