一篇给我开发BSP启示的博文-叶凡工作室
来源:互联网 发布:淘宝不能支付怎么回事 编辑:程序博客网 时间:2024/05/01 14:42
早在两年前就开始做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 /”
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文件搞坏了,最后新建工程时,连模拟器选项都没有了。
最后的结果一览:
驱动代码及相关测试程序的代码,待详细讲解FakeGPS的时候在一一说明。
http://blog.csdn.net/yefanqiu/archive/2008/08/03/2762305.aspx
- 一篇给我开发BSP启示的博文-叶凡工作室
- SharePoint2007给我的启示
- 唐骏:微软给我的管理启示
- 姚明给我的一点启示
- 看过这样一篇文章 给失恋的男人一点启示
- spring中rmi问题给我的启示
- 媒体营销创新-《洛杉矶时报》给我的一些启示
- 媒体营销创新-《洛杉矶时报》给我的一些启示
- [转] 一本作业本给我的启示
- 一位副总给我启示(最后的期限)
- 9,少年白_新华书店给我的启示
- 从JetBrains公司产品给我的商业模式启示
- 真相 | 两个前端大神给我的启示
- 傅盛:生物学思维给我的四个启示
- 我的工作室
- 【颓废篇】第一篇博文,讲讲给同学写的自动关机~我很弱~
- 微博008广告联盟给我启示
- 启示 浏览器 给我们的
- 搬家了,搬家到 http://scuwolf.72pines.com/
- 计算机类期刊投稿心得
- sql 之 round(),trunc(),floor(),ceil()函数
- sql文规则
- Skins technique survey && QSqlite usage
- 一篇给我开发BSP启示的博文-叶凡工作室
- IBM Message Broker笔记系列(九)
- select 下拉菜单取值问题
- 软件方法论
- Oracle中分页查找语句的实现
- 父窗体获取子窗体的选择数据
- Asp.net Mvc Framework可以在Controller中使用的Url.Action方法
- 利用其他表的数据update当前表
- 有关构造器的代码