smfly 发表于 2016-8-22 17:06:08

WINCE6添加和删除流驱动

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_OpenLED_CloseLED_Read      LED_WriteLED_IOControl其中LED_DRV可以自定义,但是EXPORTS后面的代码也就是用于输出函数的接口则必须使用这种写法。而这里我用于验证流驱动,因此这里的函数只是一部分,您可以根据您的需求加减函数。4.2.2.添加函数         双击LED.cpp修改LED的驱动。注意这里的函数和输出接口函数是一致的。4.2.2.1.构造函数DWORD LED_Init(LPCTSTR pContext, LPCVOIDlpvBusContext) {          RETAILMSG(TRUE,(TEXT(": 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                              NKSH保存。修改REG文件修改AM33X_SK_BSP\FILES文件夹下的platform.reg文件,添加         "Prefix"="LED"         "Dll"="LED.dll"         "Index"=dword:1         "Order"=dword:13(此项可自定义,根据目前的已经启动的DLL的数量自定义)保存测试重新编译操作系统,将生成的镜像拷贝到SD卡上然后烧写到开发板上。将调试串口接入,启动,如果设置正常,则串口会输出: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                              NKSH保存。 修改REG文件打开AM33X_SK_BSP\FILES文件夹下的platform.reg文件,删除修改         "Prefix"="LED"         "Dll"="LED.dll"         "Index"=dword:1         "Order"=dword:13(此项可自定义,根据目前的已经启动的DLL的数量自定义)保存 重新编译重新编译操作系统,将生成的镜像拷贝到SD卡上然后烧写到开发板上。将调试串口接入,启动,如果设置正常,则串口不会输出:INIT的信息。
这里需要注意的是,这里只是常规的删除流驱动的方法,一些比较复杂的流驱动,可能涉及其他驱动,这个时候就需要对驱动有比较深刻的理解,以防止删除驱动,但是其它驱动还会调用该驱动造成系统错误。
页: [1]
查看完整版本: WINCE6添加和删除流驱动