原创 我的第一个WINCE驱动(转)

2011-4-23 22:29 1994 7 7 分类: MCU/ 嵌入式

早在两年前就开始做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。


a1ac4fce-e0b7-4c65-92ba-baa0512a29bd.jpg



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


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

7f39b906-c06d-477b-951e-cce4865e92c4.jpg



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

2、DEF文件


文件名: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


3、makefile文件


就下面一句


!INCLUDE $(_MAKEENVROOT)\makefile.def


4、sources文件


内容如下:


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目录下


在<BSP></BSP>中添加如下一句:


 <BspItemId>Item:YF:FakeGPS:DeviceEmulator</BspItemId>


在< CatalogFile ></CatalogFile>中添加如下内容:


  <Item Id="Item:YF:FakeGPS:DeviceEmulator">


    <Title>FakeGPS</Title>


    <Description>FakeGPS Driver</Description>


    <Type>BspSpecific</Type>


    <Location>#MS:Deviceemulator:DeviceDrivers:Location</Location>


    <SourceCode>      <Title>$(_WINCEROOT)\PLATFORM\DEVICEEMULATOR\SRC\DRIVERS\FakeGPS</Title>      <Path>$(_WINCEROOT)\PLATFORM\DEVICEEMULATOR\SRC\DRIVERS\FakeGPS</Path>


    </SourceCode>


  </Item>


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


 


最后的结果一览:

e1df2c39-cb52-4e9a-8fac-c1d31932d78b.jpg

fb2e0ca7-1d0a-48ad-a568-399f722354b6.jpg

驱动代码及相关测试程序的代码,待详细讲解FakeGPS的时候在一一说明。

http://blog.csdn.net/yefanqiu/archive/2008/08/03/2762305.aspx

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条