GPIO的驱动注册表

来源:互联网 发布:王石田朴珺 知乎 编辑:程序博客网 时间:2024/05/21 08:02

一个驱动至少包括: 这里我们建立驱动的名字为:FlowLED
.cpp    .def    MakeFile   sources (驱动里面写)   
.reg    .bib (在对应的下面修改)
               
             创建Makefile和Sources和.def文件
 这三个文件主要是来控制编译的:

Makefile 只需要这样一行(所有流式驱动都一样): !INCLUDE $(_MAKEENVROOT)/makefile.def
         作用:负责帮助开发人员简化代码的编译、链接等构建工作。
         (参考)http://www.cnblogs.com/AndyGe/archive/2009/12/02/1615433.html

 

sources  也是一个文本文件,它为子目录中的源代码设置了不少宏定义
RELEASETYPE=PLATFORM
TARGETNAME=FlowLED(指定要生成动态库的名称(FlowLED)就是与你建立驱动文件夹里面函数的名字一样,记住不是文件夹哦,)
DLLENTRY=DllEntry   (指定动态库的入口函数)
DEFFILE=$(TARGETNAME).def  (它指定模块定义文件(.def)的名称,这里指定了模块定义文件的名称为FlowLED.def)
TARGETLIBS= /
    $(_COMMONSDKROOT)/lib/$(_CPUINDPATH)/coredll.lib /

MSC_WARNING_LEVEL = $(MSC_WARNING_LEVEL) /W3 /WX

INCLUDES= /
    $(_TARGETPLATROOT)/src/inc; /
    $(_COMMONOAKROOT)/inc; /
    $(_PUBLICROOT)/common/oak/inc;$(_PUBLICROOT)/common/sdk/inc;$(_PUBLICROOT)/common/ddk/inc; /
    ../../inc
 //一下一般用第一个就足够了。    
SOURCES= /
 FlowLED.cpp (请在这写上你所有源文件的名字,它们将会被编译)
TARGETTYPE=DYNLINK (指定要生成的是一个动态库)

 

.def文件  这里应该是FlowLED.def
.def文件定义了DLL的导出函数列表。文件定义需要输出的函数,这些函数能够被其它代码用动态加载的方法调用
 这里包括的内容如下:
LIBRARY FlowLED

  EXPORTS
   LED_Init
   LED_Deinit
   LED_Open
   LED_Close
   LED_Read
   LED_Write
   LED_Seek
   LED_IOControl
   LED_PowerDown
   LED_PowerUp

 

                     注册表的设置

   系统启动时启动设备管理程序,设备管理程序读取HKEY_LOCAL_MACHINE/Drivers/BuiltIn键的
内容并加载已列出的流接口驱动程序。因此注册表对于驱动的加载有着关键作用。

1。在F:/WINCE500/PLATFORM/S3C2440/Src/Drivers目录下面的dir文件下,添加你新增设的驱动,
DIRS=/
        FlowLED/ (这个是我们新添加的,写的那个驱动久添加那个驱动)  
 DRVLIB/
 ceddk/
 ·····
2。在F:/WINCE500/PLATFORM/S3C2440/Files下修改两个注册信息。
第一个是:platform.reg,  在最后天添加:
;FlowLED
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/FlowLED]
"Prefix"="LED"
"Dll"="FlowLED.dll"
"FriendlyName"="FlowLED"
"Index"=dword:0
"Order"=dword:0

详细解释:
     "Prefix"="LED" :表示流接口的前缀,我们以后可以通过Creatfile 函数来实现对这
个流接口的操作(LED就是.def文件下的相对应,也就是说都是流接口端)。
     "Dll"="FlowLED.dll":指的是“FlowLED(文件名)”设备调用的驱动程序 DLL。
     "FriendlyName"="FlowLED":就是驱动的名字。

第二个是:platform.bib下面添加一句话:FLowLED.dll   $(_FLATRELEASEDIR)/FlowLED.dll  NK SH
FLowLED.dll(驱动动态库文件)   $(_FLATRELEASEDIR)/FlowLED.dll(驱动动态库文件)   NK  SH
意思:内核映像(NK.nb0或NK.bin文件)中的FLowLED.dll模块来自该目录下的FLowLED.dll文件,
      SH指明文件属性:  S为系统文件   H指明为:隐藏文件


Order为0的时候表示存在多个前缀为LED的驱动的时候,该驱动最先加载。
index为1的时候表示设备驱动名从LED1,开始,
比如:
hFile=CreateFile(TEXT("LED0:"),GENERIC_READ | GENERIC_WRITE,0, NULL,OPEN_EXISTING,0,0);
这里是从0开始的。
 

原创粉丝点击