早在兩年前就開始做wince
應用程式了,但是由於分工的原因,一直以來都沒有機會深入了解wince
驅動層面的開發(包含pb
相關的系統定製)。要不是前段時間馬寧安排了fakegps
開發工作,真不知道什麼時候才能了解wince
驅動開發。
fakegps
從字面理解就是偽裝的gps
,也就是說,開啟的乙個串列埠實際上並沒有連線gps
裝置,但是相關應用程式卻能從這個串列埠中獲取gps
定位資訊(當然這個資訊是偽造的了)。
我最初的思路是做兩個串列埠驅動程式,乙個串列埠是就是gps
應用程式使用的串列埠,另個乙個串列埠與這個串列埠建立乙個軟通道,通過乙個專門的應用程式向這個串列埠傳送gps
相關定位資訊,同時gps
串列埠就能接收到這些資料。後來在馬寧的提示下,還是覺得通過共享記憶體互動資料更好,所以最終的方案選擇的是共享記憶體的方法。
根據我個人的體驗,編寫具體的驅動程式只要有c
語言功底,應該是不難的。但是要把寫好的驅動程式放在什麼地方,需要設定什麼引數等等,就不是短時間就能掌握和了解的了。這一方面幸好看了唐勉的blog
下面就把我開發這個驅動的步驟詳細說一下: 1
、驅動**編寫(fakegps .c)
由於我把驅動整合在模擬器中,所以原始碼存放的路徑,我選擇的是./wince600/platform
目錄下,具體路徑,如下圖:
驅動的**(標準流式驅動)這裡暫略,在介紹fakegps
具體實現的時候在詳細說明。
驅動相關**編寫完畢後,在該項目的選項上單擊右鍵,選擇build
選項即可編譯該程式為dll
檔案(如下圖)。
注:在/win
目錄下建立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
目錄下 在
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
檔案搞壞了,最後新建工程時,連模擬器選項都沒有了。
最後的結果一覽:
驅動**及相關測試程式的**,待詳細講解fakegps的時候在一一說明。
我的第乙個WINCE驅動
早在兩年前就開始做wince應用程式了,但是由於分工的原因,一直以來都沒有機會深入了解wince 驅動層面的開發 包含pb相關的系統定製 要不是前段時間馬寧安排了fakegps開發工作,真不知道什麼時候才能了解wince驅動開發。fakegps從字面理解就是偽裝的gps,也就是說,開啟的乙個串列埠實...
我的第乙個WINCE驅動
早在兩年前就開始做wince應用程式了,但是由於分工的原因,一直以來都沒有機會深入了解wince 驅動層面的開發 包含pb相關的系統定製 要不是前段時間馬寧安排了fakegps開發工作,真不知道什麼時候才能了解wince驅動開發。fakegps從字面理解就是偽裝的gps,也就是說,開啟的乙個串列埠實...
我的第乙個驅動程式
arm編譯器版本 3.32 核心版本 2.6.28.7 arm號 s3c2440 驅動原始碼 include include include include include include include include define device name leds define led majo...