早在兩年前就開始做wince應用程式了,但是由於分工的原因,一直以來都沒有機會深入了解wince 驅動層面的開發(包含pb相關的系統定製)。要不是前段時間馬寧安排了fakegps開發工作,真不知道什麼時候才能了解wince驅動開發。
fakegps從字面理解就是偽裝的gps,也就是說,開啟的乙個串列埠實際上並沒有連線gps裝置,但是相關應用程式卻能從這個串列埠中獲取gps定位資訊(當然這個資訊是偽造的了)。
我最初的思路是做兩個串列埠驅動程式,乙個串列埠是就是gps應用程式使用的串列埠,另個乙個串列埠與這個串列埠建立乙個軟通道,通過乙個專門的應用程式向這個串列埠傳送gps相關定位資訊,同時gps串列埠就能接收到這些資料。後來在馬寧的提示下,還是覺得通過共享記憶體互動資料更好,所以最終的方案選擇的是共享記憶體的方法。
根據我個人的體驗,編寫具體的驅動程式只要有c語言功底,應該是不難的。但是要把寫好的驅動程式放在什麼地方,需要設定什麼引數等等,就不是短時間就能掌握和了解的了。這一方面幸好看了唐勉的blog,這部分內容就化難為易了,下面就把我開發這個驅動的步驟詳細說一下:
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目錄下
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
最後的結果一覽:
驅動**及相關測試程式的**,待詳細講解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...