我的第乙個WINCE驅動

2021-09-22 04:25:17 字數 2566 閱讀 9757

早在兩年前就開始做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

注:千萬不要用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...