青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

milkyway的窩

最初想法的誕生地

 

wince驅(qū)動開發(fā)學(xué)習(xí)筆記

??????? 因為課題前期調(diào)研沒做好,用的CPU板卡和數(shù)據(jù)采集卡來自兩個部門。加上買的是裸板,自己定制的OS,技術(shù)支持不愛搭理。所以給的AI板卡的驅(qū)動一直裝不上,自己在郁悶中尋找答案,就扎進(jìn)了wince驅(qū)動的知識庫里了。不管驅(qū)動裝不上是不是這個原因,學(xué)點東西總沒有壞處。做點記錄備查:)
???????? 首先是wince驅(qū)動的分類問題。按照書上講的說CE下驅(qū)動分成單體驅(qū)動和分層驅(qū)動,而看到另一種說法是本機(jī)驅(qū)動和流式驅(qū)動。經(jīng)過microsun大哥的指點,把這兩種分類法分開了。在這里引用一下:
“單體與分層只是從代碼的形式上做的分類.分層驅(qū)動代碼上分為PDD與MDD,一般的微軟已經(jīng)實現(xiàn)了MDD,可能也實現(xiàn)了PDD,我們只需要對PDD做些修改就能使用,比如音頻的驅(qū)動,顯示的驅(qū)動。單層驅(qū)動是把PDD與MDD寫在一起,沒有做嚴(yán)格的區(qū)分,通常這種驅(qū)動比較簡單,比如:ATADISK。
至于本地驅(qū)動和流式驅(qū)動是從驅(qū)動與系統(tǒng)其它模塊(調(diào)用者)的接口形式上做的分類.其實,本地驅(qū)動這個名稱不大恰當(dāng),可能叫專用驅(qū)動或其它名字更為合適.它是指調(diào)用它的模塊給它有特定的接口,比如電源驅(qū)動和通用LED驅(qū)動。而串口,網(wǎng)卡等就是流接口驅(qū)動程序.
所以,一個驅(qū)動程序可以是單體的流式驅(qū)動,例如:ATADISK.也可以是分層的流式: 如OHCI?”
??????? 按照我的理解,單體和分層是驅(qū)動實現(xiàn)方式上的分類,而本地和流式則是驅(qū)動模型上的分類,所謂本地驅(qū)動就是操作系統(tǒng)有保留專門的接口,所謂流式是指編寫的DLL文件里可以導(dǎo)出各種流式接口函數(shù)。
?????????第二點:驅(qū)動的功能屬性。設(shè)備驅(qū)動程序是操作系統(tǒng)內(nèi)核和硬件的接口,操作系統(tǒng)定義了一組標(biāo)準(zhǔn)的接口,編寫驅(qū)動的過程也就是實現(xiàn)這些接口。從應(yīng)用程序到具體硬件間有如下這些環(huán)節(jié)起作用:應(yīng)用程序-調(diào)用OS函數(shù)-操作系統(tǒng)-驅(qū)動接口-驅(qū)動程序-硬件操作函數(shù)-硬件。在wince里驅(qū)動都以用戶態(tài)的DLL存在,需要通過進(jìn)程加載到slot里。共有三類系統(tǒng)進(jìn)程用來加載:Device.exe,GWES.exe,FileSys.exe.絕大多數(shù)設(shè)備驅(qū)動都是通過Device.exe加載的。需要注意的是,不同的OS保留的設(shè)備驅(qū)動接口是不一樣的,如桌面windows和wince就不同。
?????第三點:wince下設(shè)備的初始化分為兩個階段:Device.exe的初始化;外設(shè)的枚舉和加載。其流程是:上電-啟動bootloader-啟動NK-啟動注冊表init鍵(Device.exe啟動)-初始化數(shù)據(jù)結(jié)構(gòu),I/O,電源管理等-加載BusEnum.dll(總線枚舉器)-枚舉注冊表下Driver/buildin的所有子鍵。這里的枚舉過程就是循環(huán)調(diào)用ActivateDeviceEx()函數(shù)加載驅(qū)動的過程。在OS啟動完畢后,我們可以用PB的Remote Registry Tool查看H_L_M/drivers/active包含的子鍵,看哪些驅(qū)動隨啟動而加載 。
?????第四點:流接口驅(qū)動的概念。暴露流式接口函數(shù)的驅(qū)動即是流驅(qū)動,它把外設(shè)抽象成一個文件。過程是:應(yīng)用程序使用文件API對設(shè)備進(jìn)行訪問,OS接受API調(diào)用FileSys.exe,轉(zhuǎn)到device.exe,調(diào)用流接口,與硬件交互。所謂流接口函數(shù)有十個,包括XXX_Init、XXX_Deinit、XXX_Open、XXX_CloseXXX_Read、XXX_WriteXXX_PowerUp、XXX_PowerDown、XXX_Seek、XXX_IOControl,在wince5.0中增加le了XXX_PreClose,XXX_PreDeinit.而我們在應(yīng)用程序里對應(yīng)的文件API有CreateFileDeviceIoControl、 ReadFile WriteFile,CloseHandle,SetFilePointer.??
?????第五點:編寫流驅(qū)動的步驟。有兩種實現(xiàn)途徑:1。寫DLL,做成Project,加入到OS里。2。改BSP,把驅(qū)動寫在BSP里,再選擇那個BSP做OS。第一種方法步驟是在PB中新建一個DLL項目,編寫一些輸入函數(shù),寄存器,外設(shè)的聲明,寫DLLENTRY函數(shù);實現(xiàn)流接口函數(shù);編寫DLL的導(dǎo)出函數(shù)文件.DEF;為驅(qū)動程序?qū)懭胱员眄?,還需要修改bib文件。 第二種方法就是在platform/BSP/drivers下新建一個目錄,然后在drivers目錄中的dirs文件中加入新建的目錄名。在新建的目錄下,新建你的源代碼文件,在其中實現(xiàn)DLL函數(shù)。新建名稱分別為sources, makefile, ***.def的文件;修改platform.regplatform.bib文件。

????????

posted on 2006-12-18 21:59 milkyway 閱讀(9587) 評論(5)  編輯 收藏 引用 所屬分類: Wince學(xué)習(xí)小結(jié)

評論

# re: wince驅(qū)動開發(fā)學(xué)習(xí)筆記 2006-12-18 22:07 相思酸中有甜

幾個小知識點:
(1)應(yīng)用程序可以通過ActivateDeviceEx()加載設(shè)備驅(qū)動; (2)注冊表里的設(shè)備前綴Prefix項應(yīng)該用三個字母表示,驅(qū)動的索引是Index.如果應(yīng)用程序用CreateFile()來打開驅(qū)動程序時,第一個參數(shù)應(yīng)該是這個Prefix項加上Index的值。(3)驅(qū)動程序中要用DMA,需要為其保留一段物理空間, 就要修改config.bib給驅(qū)動程序共享數(shù)據(jù)用。(4)查看驅(qū)動是否加載,可以用遠(yuǎn)程工具看注冊表buildin/active鍵,或者是看device.exe的進(jìn)程是否包含DLL文件。(5)DLL的入口函數(shù)名稱默認(rèn)是DllMain,但我們可以改成別的名稱,在SOURCES文件中加入這樣一行,DLLENTRY=ABCD
入口函數(shù)就被改成了ABCD,我們就應(yīng)該實現(xiàn)名為ABCD的函數(shù).
  回復(fù)  更多評論   

# re: wince驅(qū)動開發(fā)學(xué)習(xí)筆記 2006-12-20 13:55 相思酸中有甜

感覺寫驅(qū)動無從下手的時候,可以嘗試看現(xiàn)有的代碼
與平臺無關(guān)驅(qū)動源碼位于public\common\OAK\Drivers
與平臺相關(guān)驅(qū)動 platform\{bsp}\srv\Drivers  回復(fù)  更多評論   

# re: wince驅(qū)動開發(fā)學(xué)習(xí)筆記 2006-12-29 16:03 相思酸中有甜

在嘗試通過打包cab文件中的*.dll時,發(fā)現(xiàn)自己理解存在問題.
只有在開發(fā)驅(qū)動程序的DLL文件時才需要寫DEF和SOURCES文件,在生成DLL文件時,編譯器會根據(jù)DEF文件的內(nèi)容而定義導(dǎo)出函數(shù).現(xiàn)在已經(jīng)有了DLL文件,就不用寫這兩個文件了.
只需要把DLL加到NK中,再加上相關(guān)的注冊表信息就行.

感謝microsun大哥的指點.  回復(fù)  更多評論   

# re: wince驅(qū)動開發(fā)學(xué)習(xí)筆記 2007-04-09 14:51 漂流者

我也是在windows CE的泥淖中艱難前行的人,你的文章對我來說是雪中送炭啊,我剛開始學(xué)windows CE的,很多東西還不懂,以后有機(jī)會向你請教,我QQ77614381,漂流者  回復(fù)  更多評論   

# re: wince驅(qū)動開發(fā)學(xué)習(xí)筆記 2007-07-12 17:54 小熊它歌

我也是剛接觸wince的,總工給了我一大堆電路圖,讓我先看懂,然后再寫相應(yīng)的驅(qū)動,光看懂電路圖已經(jīng)非常痛苦了,況且我對wince還是個生手,真的希望以后大家能多交流,我的QQ是275102799.  回復(fù)  更多評論   

導(dǎo)航

統(tǒng)計

公告

隨筆皆原創(chuàng),文章乃轉(zhuǎn)載. 歡迎留言!

常用鏈接

留言簿(37)

隨筆分類(104)

隨筆檔案(101)

文章分類(51)

文章檔案(53)

wince牛人

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久国产精品99久久久久久老狼 | 国产一区二区三区免费不卡| 亚洲免费观看高清完整版在线观看| 蜜臀久久久99精品久久久久久| 欧美亚洲系列| 国内精品久久久久影院色 | 午夜在线电影亚洲一区| 亚洲视频一二区| 国产女人aaa级久久久级| 久久精品成人| 欧美wwwwww| 亚洲欧美日韩系列| 久久国产精品99国产精| 亚洲缚视频在线观看| 亚洲欧洲精品一区| 欧美性片在线观看| 欧美在线观看视频在线| 久久综合九色综合欧美就去吻| 一区二区av在线| 亚洲欧美综合精品久久成人 | 国产精品一区久久久| 久久久噜噜噜久久中文字幕色伊伊| 久久久亚洲精品一区二区三区 | 亚洲天天影视| 欧美淫片网站| 日韩一级片网址| 亚洲综合社区| 亚洲免费电影在线观看| 亚洲欧美激情一区二区| 亚洲国产一区视频| 亚洲一区二区高清| 亚洲国产片色| 欧美一区影院| 一区二区国产日产| 久久男女视频| 欧美影院在线播放| 欧美日韩成人一区二区三区| 久久精视频免费在线久久完整在线看| 欧美高清日韩| 美女性感视频久久久| 国产精品家教| 亚洲片在线资源| 狠狠色狠狠色综合系列| 亚洲午夜未删减在线观看| 亚洲国产精品嫩草影院| 午夜精品免费| 亚洲女ⅴideoshd黑人| 欧美电影免费观看网站| 久久久久久成人| 国产精品久久久久久av下载红粉| 亚洲第一黄色网| 亚洲电影av| 欧美在线视频免费| 性感少妇一区| 国产精品久久久久久久久果冻传媒 | 欧美激情久久久久| 精品va天堂亚洲国产| 午夜一区二区三区在线观看| 亚洲四色影视在线观看| 欧美激情视频网站| 欧美国产综合一区二区| **欧美日韩vr在线| 久久免费的精品国产v∧| 久久久久久9999| 黄色亚洲精品| 久久国产婷婷国产香蕉| 久久资源av| 在线日韩成人| 美日韩精品免费观看视频| 免费不卡视频| 亚洲人成网在线播放| 欧美暴力喷水在线| 亚洲片区在线| 亚洲图片在线观看| 国产精品理论片在线观看| 亚洲一区二区欧美日韩| 亚洲欧美日韩在线观看a三区| 国产精品高潮呻吟久久av无限 | 亚洲美女av电影| 亚洲视频在线一区| 国产精品免费看久久久香蕉| 亚洲无线一线二线三线区别av| 亚洲免费在线看| 国产一区 二区 三区一级| 久久成人国产| 欧美韩日一区二区三区| 一区二区欧美国产| 国产精品综合久久久| 久久久久国产精品www| 欧美黄色视屏| 亚洲永久免费观看| 国产一区在线观看视频| 免费91麻豆精品国产自产在线观看| 亚洲第一成人在线| 亚洲自拍高清| 亚洲高清免费在线| 欧美三级电影一区| 久久精品亚洲精品| 亚洲三级网站| 久久久国产一区二区三区| 亚洲国产影院| 国产精品一区二区你懂得| 久久婷婷综合激情| 中文一区二区| 毛片一区二区三区| 亚洲一区二区免费视频| 狠狠噜噜久久| 国产精品欧美日韩| 欧美成年人在线观看| 亚洲欧洲99久久| 亚洲区中文字幕| 久久精品日韩一区二区三区| 99精品视频免费| 狠狠干综合网| 国产精品永久在线| 欧美日韩精品在线| 久久视频这里只有精品| 亚洲免费在线看| 亚洲国产精品成人一区二区| 久久久久成人精品| 欧美有码在线视频| 亚洲在线观看免费视频| 亚洲欧洲日本mm| 黄色精品网站| 国产日韩欧美不卡在线| 欧美日韩高清一区| 欧美国产日产韩国视频| 久久久久久久久久久成人| 亚洲免费综合| 亚洲一区二区三区在线观看视频| 亚洲国产日韩欧美| 欧美不卡视频一区| 久久影视三级福利片| 欧美中文字幕在线播放| 亚洲男人天堂2024| 亚洲香蕉网站| 亚洲午夜av| 亚洲一区中文| 亚洲欧美日韩国产成人| 亚洲一区二区三区四区在线观看| 日韩一级欧洲| 夜夜嗨av一区二区三区四区| 亚洲精品四区| 一区二区不卡在线视频 午夜欧美不卡在 | 久久精品国产久精国产爱| 亚洲一区二区在线免费观看视频| 亚洲精品综合| 一区二区三区精品久久久| 99精品欧美一区二区蜜桃免费| 亚洲精品裸体| 一本色道久久综合亚洲精品小说 | 亚洲一区二区成人| 亚洲字幕在线观看| 欧美一区国产二区| 久久国产精品72免费观看| 久久九九热免费视频| 久久夜色精品一区| 老牛影视一区二区三区| 欧美高清在线精品一区| 欧美巨乳波霸| 国产精品日本| 韩日欧美一区二区| 亚洲欧洲日产国产综合网| 一区二区三区免费观看| 亚洲欧美一区二区三区久久 | 在线不卡免费欧美| 91久久精品国产91性色| 一区二区三区www| 午夜精品一区二区三区在线视| 欧美在线一二三| 蜜臀久久99精品久久久久久9| 亚洲第一精品夜夜躁人人躁| 亚洲片区在线| 午夜精品久久| 嫩草影视亚洲| 国产精品嫩草99a| 在线日本成人| 亚洲综合大片69999| 久久天天综合| 亚洲精品少妇网址| 午夜视频精品| 欧美激情一区二区三区在线| 国产精品入口麻豆原神| 亚洲国产精品成人va在线观看| 一区二区三区产品免费精品久久75| 欧美一区二区播放| 亚洲东热激情| 欧美一区二区三区婷婷月色 | 久久激情婷婷| 欧美日韩综合在线| 在线国产日韩| 香蕉亚洲视频| 亚洲日韩欧美一区二区在线| 欧美专区在线| 国产精品女人网站| 亚洲精品欧美| 欧美v日韩v国产v| 午夜精品免费视频| 欧美小视频在线| 99热精品在线观看|