| WINCE6关于流驱动的增加和删除的说明增加流驱动增加驱动文件 打开操作系统工程,选择                              (中文)或者 (英文)。在此窗口中依次展开AM335_SK_OS->C:\WINCE600->PLATFORM->AM33x_SK_BSP->SRC然后在SRC下的DRIVERS文件夹上点击右键,选择ADD->New Sources Subproject。 这里将弹出如图对话框   其对应的项目类型分别为          WCEApplication                                 WINCE应用程序          WCEConsole Application                  WINCE控制台应用程序          WCE Dynamic-Link Library                WINCE的动态链接库          WCE Static Library                               WINCE的静态链接库          WCE TUX Dynamic-Link Library        WINCE基于TUX的动态链接库 在这里我选择的是动态链接库。          在项目名称中输入LED (也可以使用您自己的名字设定,但是尽量使用三个字母并且避开诸如USB、DRV这种可能被系统占用的名称) ,然后将弹出一个对话框,这里我们选择第二项,一个示例工程,这样系统将自动为我们创建文件。      下一步,选择加入当前文件夹 。点击完成。 加入完成后在DRIVERS下有一个LED工程文件夹 。          在本节中,我们将在已经创建的文件基础上建立一个用于控制LED的驱动,在335x系列开发板中,LED属于GPIO操作,因此LED本来不需要驱动,直接使用GPIO驱动即可,这里为了演示流驱动的建立方法,加入了LED的操作。您可以根据自己的需要建立驱动。4.2.1.添加输出接口          在工程资源管理器中双击LED.def文件 。该文件默认为空文件,在里面加入如下代码: LIBRARY LED_DRV   EXPORTS    LED_Init    LED_Deinit    LED_Open LED_Close LED_Read         LED_Write LED_IOControl 其中LED_DRV可以自定义,但是EXPORTS后面的代码也就是用于输出函数的接口则必须使用这种写法。 而这里我用于验证流驱动,因此这里的函数只是一部分,您可以根据您的需求加减函数。4.2.2.添加函数          双击LED.cpp修改LED的驱动。注意这里的函数和输出接口函数是一致的。4.2.2.1.构造函数 DWORD LED_Init(LPCTSTR pContext, LPCVOIDlpvBusContext) {           RETAILMSG(TRUE,(TEXT("[LED]: INIT")));          return1; } 4.2.2.2.析构函数 BOOL LED_Deinit(DWORD hDeviceContext) {           returnTRUE;  } 4.2.2.3.驱动打开函数 DWORD LED_Open(DWORD hDeviceContext, DWORDAccessCode, DWORD ShareMode) {          return1;  } 4.2.2.4.驱动关闭函数 BOOL LED_Close(DWORD hOpenContext) {          returnTRUE;  } 4.2.2.5.读函数 DWORD LED_Read(DWORD hOpenContext, LPVOIDpBuffer, DWORD Count) {           return1; } 4.2.2.6.写函数 DWORD LED_Write(DWORD hOpenContext, LPCVOIDpBuffer, DWORD Count) {           return1;  } 4.2.2.1.IO操作函数 BOOL LED_IOControl(DWORD Handle,                                                                                      DWORD dwIoControlCode,                                                                                      PDWORD pInBuf,                                                                                      DWORD nInBufSize,                                                                                      PDWORD pOutBuf,                                                                                      DWORD nOutBufSize,                                                                                      PDWORD pBytesReturned) {    switch (dwIoControlCode) {          default:                    break;          }    return TRUE;    }    修改BIB文件 修改AM33X_SK_BSP\FILES文件夹下的platform.bib文件,在FILES标签上方增加如下一句话 LED.dll               $(_FLATRELEASEDIR)\LED.dll                              NK  SH 保存。修改REG文件 修改AM33X_SK_BSP\FILES文件夹下的platform.reg文件,添加 [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\LED]          "Prefix"="LED"          "Dll"="LED.dll"          "Index"=dword:1          "Order"=dword:13(此项可自定义,根据目前的已经启动的DLL的数量自定义) 保存测试 重新编译操作系统,将生成的镜像拷贝到SD卡上然后烧写到开发板上。 将调试串口接入,启动,如果设置正常,则串口会输出[LED]:INIT的信息。删除流驱动停止编译驱动文件 在解决方案资源管理器窗口中依次展开AM335_SK_OS->C:\WINCE600->PLATFORM->AM33x_SK_BSP->SRC->DRIVERS然后在LED文件夹上点击右键,选择Exclude from Build修改BIB文件 打开AM33X_SK_BSP\FILES文件夹下的platform.bib文件,删除修改 LED.dll               $(_FLATRELEASEDIR)\LED.dll                              NK  SH 保存。  修改REG文件 打开AM33X_SK_BSP\FILES文件夹下的platform.reg文件,删除修改 [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\LED]          "Prefix"="LED"          "Dll"="LED.dll"          "Index"=dword:1          "Order"=dword:13(此项可自定义,根据目前的已经启动的DLL的数量自定义) 保存  重新编译 重新编译操作系统,将生成的镜像拷贝到SD卡上然后烧写到开发板上。 将调试串口接入,启动,如果设置正常,则串口不会输出[LED]:INIT的信息。 
 这里需要注意的是,这里只是常规的删除流驱动的方法,一些比较复杂的流驱动,可能涉及其他驱动,这个时候就需要对驱动有比较深刻的理解,以防止删除驱动,但是其它驱动还会调用该驱动造成系统错误。   
 |