WINCE的第一个驱动程序是什么呢?有的说是GPIO,有的说是LED,也有的说是SimpleDriver,我个人也是同意后者的。
因此这里就以SimpleDriver为例讲解如何开始自己的第一个驱动程序。
首先,要认识到一个驱动有哪些开发模型。这个相信大家都知道,比如本机驱动,分层驱动,流接口驱动等等,这些都闭着眼睛都知道,可是真正的实现呢?具体什么情况用什么模型呢?
关于分层驱动,介绍饿时最多的,尤其是网上和教科书还有一些所谓的论文,真正在产品中用这种方法的又有几个呢?不是分层驱动不好,只是要看具体情况,这个主要看个人喜好,个人能力还有就是在PUBLIC目录下是否有驱动的MDD。
因此,对于一个外设来说,尤其是一片子来说,个人认为单体驱动和流接口驱动用的更实际点,尤其涉及数据的传输,个人认为流接口驱动更容易一些。以上仅代表个人观点,欢迎拍砖。
其次,对于一个驱动我们要认清楚里面到底有哪些文件,他们的作用又是干什么的呢?下面以SimpleDriver为例,进行第一个简单流接口驱动的讲解。
1.Makefile文件
这里的Makefile文件请不要和其他环境下(GCC,VS2005)的Makefile文件弄混,它是BSP里面的Makefile。Windows CE中的Makefile比较特别,它包含对所有项目都通用的配置信息。
其内容很简单,只有一句话:
!INCLUDE $(_MAKEENVROOT)\makefile.def
当build.exe查找dirs和source文件之后,它就会设置一个内部环境变量。这个环境变量可以被Nmake.exe传递给编译器、连接器或其他工具。
2.source文件
source也是一个文本文件,它为子目录中的源代码设置了不少宏定义。
TARGETNAME=SimpleDriver
RELEASETYPE=PLATFORM
TARGETTYPE=DYNLINK
TARGETLIBS=$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib
DEFFILE=$(TARGETNAME).def
DLLENTRY=DllEntry
SOURCES=SimpleDriver.c