Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15531073
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类:

2009-03-19 15:23:54

我的第一个WINCE驱动
2008-12-12 20:58:17

早在两年前就开始做WINCE应用程序了,但是由于分工的原因,一直以来都没有机会深入了解WINCE 驱动层面的开发(包含PB相关的系统定制)。要不是前段时间马宁安排了FakeGPS开发工作,真不知道什么时候才能了解WINCE驱动开发。

FakeGPS从字面理解就是伪装的GPS,也就是说,打开的一个串口实际上并没有连接GPS设备,但是相关应用程序却能从这个串口中获取GPS定位信息(当然这个信息是伪造的了)。

我最初的思路是做两个串口驱动程序,一个串口是就是GPS应用程序使用的串口,另个一个串口与这个串口建立一个软通道,通过一个专门的应用程序向这个串口发送GPS相关定位信息,同时GPS串口就能接收到这些数据。后来在马宁的提示下,还是觉得通过共享内存交互数据更好,所以最终的方案选择的是共享内存的方法。

根据我个人的体验,编写具体的驱动程序只要有C语言功底,应该是不难的。但是要把写好的驱动程序放在什么地方,需要设置什么参数等等,就不是短时间就能掌握和了解的了。这一方面幸好看了唐勉的blog,这部分内容就化难为易了,相关文章请参见:http://blog.csdn.net/nanjianhui/archive/2008/07/18/2674753.aspx

下面就把我开发这个驱动的步骤详细说一下:

1、驱动代码编写(FakeGPS .c

由于我把驱动集成在模拟器中,所以源码存放的路径,我选择的是.\WINCE600\PLATFORM 目录下,具体路径,如下图:

 

驱动的代码(标准流式驱动)这里暂略,在介绍FakeGPS具体实现的时候在详细说明。

驱动相关代码编写完毕后,在该项目的选项上单击右键,选择Build选项即可编译该程序为dll文件(如下图)。

注:在\WINCE600\PLATFORM\DEVICEEMULATOR\SRC\DRIVERS目录下创建FakeGPS时,注意要修改该目录下的Dirs文件,在结尾添加一句“FakeGPS  \

2DEF文件

文件名:FakeGPS.def (和FakeGPS .c同一个目录)

LIBRARY FAKEGPS

EXPORTS COM_Init

         COM_Deinit

         COM_Open

         COM_Close

         COM_Read

         COM_Write

         COM_Seek

         COM_IOControl

         COM_PowerDown

         COM_PowerUp

3makefile文件

就下面一句

!INCLUDE $(_MAKEENVROOT)\makefile.def

4sources文件

内容

 

如下:

TARGETNAME=FAKEGPS

TARGETTYPE=DYNLINK

RELEASETYPE=PLATFORM

 

TARGETLIBS=$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib           

DEFFILE=FakeGPS.def

PREPROCESSDEFFILE=1

DLLENTRY=DllEntry

INCLUDES=..\..\inc

SOURCES=FakeGPS.c

5、修改platform.reg文件(注册表选项)

platform.reg文件在\WINCE600\PLATFORM\DEVICEEMULATOR\FILES目录下

打开该文件,添加如下内容:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\FakeGPS]

   "Prefix"="COM"

   "Dll"="FakeGPS.dll"

   "Index"=dword:8

   "Order"=dword:0

   "FriendlyName"="YeFan FakeGPS"

6、修改platform.bib文件(把DLL文件集成到NK中)

platform.bib文件在\WINCE600\PLATFORM\DEVICEEMULATOR\FILES目录下

打开该文件,添加如下内容:

FAKEGPS.dll  $(_FLATRELEASEDIR)\FAKEGPS.dll                         NK SHK

7、修改deviceemulator.pbcxml文件

deviceemulator.pbcxml文件在\WINCE600\PLATFORM\DEVICEEMULATOR\CATALOG目录下

中添加如下一句:

 Item:YF:FakeGPS:DeviceEmulator

< CatalogFile >中添加如下内容:

 

    FakeGPS

    FakeGPS Driver

    BspSpecific

    #MS:Deviceemulator:DeviceDrivers:Location

          $(_WINCEROOT)\PLATFORM\DEVICEEMULATOR\SRC\DRIVERS\FakeGPS      $(_WINCEROOT)\PLATFORM\DEVICEEMULATOR\SRC\DRIVERS\FakeGPS

   

 

注:千万不要用VS2005集成环境编辑pbcxml文件,我就是用该环境把pbcxml文件搞坏了,最后新建工程时,连模拟器选项都没有了。

 

最后的结果一览:

阅读(2026) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~