<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 智能無(wú)線(xiàn)抄表系統中CC1101的WinCE驅動(dòng)開(kāi)發(fā)

智能無(wú)線(xiàn)抄表系統中CC1101的WinCE驅動(dòng)開(kāi)發(fā)

作者: 時(shí)間:2011-03-31 來(lái)源:網(wǎng)絡(luò ) 收藏


2 下SPI程序
Win CE下的SPI屬于流。流驅動(dòng)是能夠導出流接口函數的驅動(dòng)程序。在設計此類(lèi)驅動(dòng)時(shí),把設備驅動(dòng)程序當成一種特殊的文件,接口函數與一般的文件APl函數一樣,比如CreatFile(),WriteFile(),ReadFile()和CloseHandle()等,因此在應用程序設計時(shí)可以通過(guò)使用文件API來(lái)調用驅動(dòng)程序,以達到訪(fǎng)問(wèn)設備的目的。SPI驅動(dòng)是一個(gè)動(dòng)態(tài)鏈接庫(DLL),可以被加載到內核空間,成為內核模式驅動(dòng)。
SPI驅動(dòng)程序是操作與硬件之間的接口,是對硬件設備的抽象。操作可以通過(guò)驅動(dòng)程序來(lái)對設備進(jìn)行操作和管理。當應用程序需要讀取底層的物理器件輸出時(shí),就必須通過(guò)操作系統內核來(lái)加載特定的設備驅動(dòng)程序,通過(guò)驅動(dòng)程序來(lái)與底層的硬件進(jìn)行通信,然后將讀取信息傳入應用程序中。當為 5.0添加外圍設備時(shí),必須以流接口驅動(dòng)方式提供給操作系統內核,再由操作系統對其進(jìn)行加載,加載正確后,才可以在應用程序中通過(guò)標準的I/O函數調用底層的驅動(dòng)。
5.0設備驅動(dòng)程序中最重要的是設備相關(guān)寄存器的配置。寄存器的配置包括將寄存器地址映射到內核進(jìn)程的虛擬地址,在串口操作的不同階段配置好各種寄存器。這里,給出了在通信領(lǐng)域中,基于S3C2410和WinCE 5.0的具體應用方案,并在該應用測試方案上設計基于WinCE 5.0的設備接口驅動(dòng)?,F在開(kāi)始建立WCE Dynamic-Link Library工程SPI_Driver,然后編寫(xiě)驅動(dòng)程序接口函數?;赪in CE設備流驅動(dòng)程序的,不管是什么設備,它們的實(shí)現框架都是相同的,只要把相關(guān)流接口實(shí)現即可。下面介紹幾個(gè)常用的函數和測試操作。
2.1 DllEntry()函數
該函數是動(dòng)態(tài)鏈接庫的入口,每個(gè)動(dòng)態(tài)鏈接庫都需要輸出這個(gè)函數,但它只在動(dòng)態(tài)庫被加載和卸載時(shí)才被調用,它是每個(gè)動(dòng)態(tài)鏈接庫最早被調用的函數,一般用它做一些全局變量的初始化。
2.2 SPI_Init()函數
該函數是驅動(dòng)程序動(dòng)態(tài)庫被成功裝載后第一個(gè)被調用的函數。它的調用時(shí)間僅次于DllEntry()函數,驅動(dòng)程序應當在這個(gè)函數中初始化硬件,如果初始化成功,就分配一個(gè)自己的內存空間,將自己的狀態(tài)保存起來(lái),并且將該內存塊的地址作為一個(gè)DWORD值返回給上層。設備管理器就會(huì )在調用SPI_Open()時(shí)將該句柄傳回。如果初始化失敗,則返回零以通知這個(gè)驅動(dòng)程序沒(méi)有加載成功,先前所分配的系統資源應該全部釋放,此程序的生命即告終止。VirtualAlloc()和VirtualCopy()函數用來(lái)實(shí)現虛擬內存空間的分配,并且映射到硬件的物理地址,在Ini-tAddrlO()和InkAddrSPIreg()中被調用。初始化軟件流程如圖2所示。

本文引用地址:http://dyxdggzs.com/article/162233.htm

2.JPG

3.JPG


2. 3 SPI_Open()函數和SPI_Close()函數
當用戶(hù)程序調用CreateFile()打開(kāi)這個(gè)設備時(shí),設備管理器就會(huì )諷用此驅動(dòng)程序的SPI_Open()函數。
當用戶(hù)程序調用CloseHandle()關(guān)閉這個(gè)設備時(shí),SPI_Close()函數就會(huì )被設備管理器調用。參數hOpenContext是SPI_Open()返回給上層的那個(gè)值。 SPI_Close()函數應該做與SPI_Open()相反的事情,具體包括釋放SPI_Open()分配的內存,將驅動(dòng)程序被打開(kāi)的計數減少等。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>