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

milkyway的窩

最初想法的誕生地

 

wince驅(qū)動(dòng)開(kāi)發(fā)學(xué)習(xí)筆記

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

????????

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

評(píng)論

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

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

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

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

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

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

感謝microsun大哥的指點(diǎn).  回復(fù)  更多評(píng)論   

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

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

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

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

導(dǎo)航

統(tǒng)計(jì)

公告

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

常用鏈接

留言簿(37)

隨筆分類(lèi)(104)

隨筆檔案(101)

文章分類(lèi)(51)

文章檔案(53)

wince牛人

搜索

積分與排名

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久日韩粉嫩一区二区三区| 久久aⅴ国产欧美74aaa| 欧美日一区二区在线观看 | 久久精品人人爽| 久久精品亚洲精品| 狂野欧美一区| 亚洲第一页中文字幕| 久久综合网络一区二区| 欧美77777| 日韩午夜三级在线| 亚洲欧美另类久久久精品2019| 亚洲欧美一区二区精品久久久| 欧美诱惑福利视频| 欧美成人午夜免费视在线看片| 欧美日韩精品免费观看视一区二区| 国产精品视频免费在线观看| 在线观看亚洲a| 一本色道久久88亚洲综合88| 欧美制服丝袜第一页| 亚洲免费久久| 亚洲一二三区在线| 欧美一区三区二区在线观看| 美女主播精品视频一二三四| 欧美久久久久久久久久| 欧美日韩一区三区| 国产人妖伪娘一区91| 亚洲人精品午夜在线观看| 亚洲欧美国产一区二区三区| 欧美大片免费观看在线观看网站推荐| 亚洲精品欧美日韩专区| 午夜精品一区二区三区电影天堂| 久久亚洲一区二区三区四区| 国产精品久久7| 亚洲精品一区二区三区蜜桃久| 亚洲永久精品大片| 欧美**字幕| 亚洲欧美色婷婷| 欧美日韩精品免费看| 亚洲国产日韩欧美| 久久九九国产精品怡红院| 亚洲精品色婷婷福利天堂| 久久精品91久久久久久再现| 欧美日韩岛国| 99国产精品久久| 精品动漫3d一区二区三区免费版 | 欧美激情一区二区| 国产欧美日韩一区二区三区在线 | 欧美三级欧美一级| 亚洲人成在线影院| 老鸭窝毛片一区二区三区 | 久久噜噜噜精品国产亚洲综合| 99视频有精品| 男人插女人欧美| 亚洲国产成人精品久久| 麻豆av一区二区三区| 欧美一级久久久| 国产欧美视频一区二区| 亚洲欧美一区二区原创| 亚洲三级性片| 欧美—级在线免费片| 亚洲国内精品在线| 欧美激情综合色| 欧美成人免费在线视频| 99re热精品| 亚洲伦伦在线| 欧美日韩午夜激情| 亚洲一区激情| 亚洲一区二区三区精品视频| 永久免费精品影视网站| 日韩一级二级三级| 欧美承认网站| 一本久道久久综合中文字幕| 亚洲人成在线观看一区二区| 欧美精品一区二区在线播放| 一本色道精品久久一区二区三区| 最新国产の精品合集bt伙计| 欧美国产日本韩| 一区二区高清视频在线观看| 一本久道久久综合中文字幕| 国产精品美女主播在线观看纯欲| 性欧美大战久久久久久久久| 香蕉免费一区二区三区在线观看| 国产日韩精品一区二区三区| 美女黄网久久| 欧美激情va永久在线播放| 一区二区三区**美女毛片| 一区二区三区免费网站| 国产日韩av一区二区| 免费一级欧美片在线播放| 欧美激情亚洲一区| 久久aⅴ国产紧身牛仔裤| 欧美成人精品1314www| 亚洲欧美日韩专区| 久久久久久久欧美精品| 亚洲无人区一区| 久久久久久伊人| 亚洲专区国产精品| 老司机成人网| 亚洲欧美视频在线| 麻豆成人综合网| 亚洲一区日韩| 久久久www免费人成黑人精品| 一本色道久久综合精品竹菊 | 欧美一区二区播放| 亚洲日本在线视频观看| 亚洲欧美综合国产精品一区| 亚洲国产精品99久久久久久久久| 99热在这里有精品免费| 精品999网站| 亚洲专区在线| 日韩视频精品在线| 久久精品视频播放| 亚洲男人天堂2024| 欧美国产视频在线| 蜜臀av性久久久久蜜臀aⅴ| 国产精品一区二区女厕厕| 亚洲毛片在线| 日韩写真视频在线观看| 美女999久久久精品视频| 久久精品视频播放| 国产精品国产自产拍高清av| 91久久久久久久久| 性欧美精品高清| 这里只有精品视频在线| 激情综合视频| 亚洲一区二区三区影院| 亚洲人体1000| 欧美亚洲日本网站| 亚洲一区二区三区免费在线观看| 亚洲大片av| 欧美一区二区三区精品电影| 这里是久久伊人| 欧美不卡三区| 欧美韩国在线| 极品中文字幕一区| 欧美综合国产| 久久九九免费| 国产综合亚洲精品一区二| 亚洲欧美日韩另类| 午夜精品久久99蜜桃的功能介绍| 欧美理论电影在线观看| 日韩视频在线观看| 9i看片成人免费高清| 欧美激情1区| 亚洲人成网站色ww在线| 99成人在线| 欧美日本韩国一区| 99国产精品国产精品久久 | 国产伦精品一区二区三| 亚洲自拍偷拍网址| 久久尤物电影视频在线观看| 国产亚洲欧美日韩一区二区| 久久国产日韩| 欧美大片免费| 亚洲图片在线| 国产美女精品视频| 久久九九99视频| 亚洲高清自拍| 亚洲一区二区三区在线播放| 国产欧美日韩中文字幕在线| 久久精品人人做人人综合| 欧美成人一区二区三区片免费| 精品91在线| 欧美日韩第一页| 亚洲欧美伊人| 免费看成人av| 亚洲尤物精选| 国产视频欧美| 欧美成人久久| 亚洲欧美日韩在线不卡| 欧美激情亚洲一区| 欧美一区成人| 亚洲每日更新| 国产综合自拍| 国产精品二区二区三区| 久久久美女艺术照精彩视频福利播放| 亚洲人午夜精品| 久久精品视频一| 亚洲一区精品在线| 亚洲黄网站在线观看| 国产精一区二区三区| 欧美激情精品久久久久久大尺度 | 最新成人在线| 久久精品最新地址| 亚洲天堂第二页| 亚洲人成毛片在线播放女女| 国产欧美视频在线观看| 欧美日韩国产综合久久| 久久久久久久久久久久久久一区| 一本色道久久88综合日韩精品| 免费视频一区| 久久黄色小说| 午夜精品一区二区三区四区| 日韩一区二区精品在线观看| 在线成人免费观看| 国内视频精品| 欧美亚洲视频| 亚洲美女中文字幕| 韩国在线视频一区| 国产精品毛片在线|