<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>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ucos WiFi網(wǎng)卡驅動(dòng)程序的開(kāi)發(fā)

ucos WiFi網(wǎng)卡驅動(dòng)程序的開(kāi)發(fā)

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

嵌入式系統是設計完成復雜功能的硬件和軟件,并使其緊密耦合在一起的計算機系統。目前,嵌入式系統已經(jīng)存在于各種數據采集、工業(yè)控制、娛樂(lè )、通信等應用領(lǐng)域。在一些應用場(chǎng)合,需要嵌入式設備具有與其它系統交換信息的能力,因此必須為嵌入式系統增加通信功能。通信功能的實(shí)現可以采用很多方式,例如以太網(wǎng),ADSL,GPRS以及其它方式。在一個(gè)嵌入式終端中使用,實(shí)現無(wú)線(xiàn)網(wǎng)絡(luò )通信的功能是一種較新的通信方式。由于在uCOS實(shí)時(shí)操作系統中還沒(méi)有,因此下面將介紹的編寫(xiě)。

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


1 WiFi介紹

WiFi(Wireless Fidelity),又稱(chēng)802.1lb標準,IEEE于1997年6月批準了該標準。802.11標準的體系結構組成包括:無(wú)線(xiàn)站點(diǎn)STA(Station),無(wú)線(xiàn)接入點(diǎn)AP(Access Point),獨立基本服務(wù)組IBSS(Independent Basic Service Set),基本服務(wù)組BSS(BasicService Set),分布式系統DS(Distribution System)和擴展服務(wù)組ESS(Extended Service Set).

該標準定義了兩種工作模式:ad hoc模式和infrastructure模式。ad hoc即對點(diǎn)模式,包含兩個(gè)無(wú)線(xiàn)站點(diǎn)(STA,即帶無(wú)線(xiàn)的設備)。而infrastructure即AP模式,無(wú)線(xiàn)站點(diǎn)(STA)通過(guò)AP與現有的骨干網(wǎng)相連接,組成一個(gè)基本服務(wù)組(BSS)。在BSS中,AP不僅提供STA之間通信的橋接功能,還提供STA與有線(xiàn)局域網(wǎng)的連接,可以實(shí)現有線(xiàn)Hub幾乎所有的功能。


2 嵌入式終端系統結構


2.1 硬件結構

嵌入式終端硬件系統(如圖1所示)以Philips公司的LPC2210嵌入式處理器為核心,LPC2210是基于16/32位ARM7TDMI-S,并支持實(shí)時(shí)仿真和跟蹤的CPU。LPC2210的數據和地址總線(xiàn)是開(kāi)放的,片內有16K字節的RAM。嵌入式終端需要較大存儲空間運行實(shí)時(shí)操作操作系統、TCP/IP協(xié)議、圖形用戶(hù)界面(GUI)、串口、WiFi驅動(dòng)程序、英文及漢字字庫等,因此在外部擴展了一片容量為256K×16的靜態(tài)RAM 1S61LV25616及一片容量為1M×16的Flash 39VF160。為了方便調試程序,使用了LPC2210的串口診斷程序的運行結果。

圖1 嵌入式終端的硬件結構

系統中選擇了使用Prism 2芯片的,型號為COMPAQ NC5004,支持IEEE802.11b,最高速率為11Mb/s.網(wǎng)卡的物理驅動(dòng)接口為PCMCIA,供電電壓為3.3V.由于LPC2210沒(méi)有PCMCIA控制器,因此LPC2210與NC5004的PCMCIA 接口是通過(guò)LPC2210的通用端口連接的,總線(xiàn)時(shí)序通過(guò)軟件仿真來(lái)完成,即PCMCIA接口的驅動(dòng)程序。

PCMCIA總線(xiàn)有控制線(xiàn)、數據線(xiàn)、地址線(xiàn)、電源線(xiàn)。其中數據線(xiàn)寬度可選為16位或8位,NC5004的數據線(xiàn)寬度是16位的,即D15~D0。地址線(xiàn)寬度為26位,但在WiFi網(wǎng)卡中只須用10位地址線(xiàn)A9~A0。WiFi網(wǎng)卡的PCMCIA 的控制線(xiàn)有10根,其中RESET為復位,該線(xiàn)為低電平時(shí)網(wǎng)卡回到初始狀態(tài)。CE1,CE2為卡的地址控制,當CE1,CE2為低時(shí),分別表示偶地址和奇地址的字節有效。OE,WE分別為Memory空間的讀寫(xiě)控制線(xiàn),IORD,IOWR為I/O空間的讀寫(xiě)控制線(xiàn),均為低電平有效。REG用于選擇地址訪(fǎng)問(wèn)空間,包括I/O空間和存儲器空間。IREQ提示處理器處理網(wǎng)卡的內部事件,可以不用。在對網(wǎng)卡進(jìn)行讀寫(xiě)僮魘保只有當HWAIT變高表示讀或寫(xiě)的數據進(jìn)入存儲器,才能進(jìn)行下一步總線(xiàn)操作。


2.2 軟件結構

嵌入式終端的軟件系統(如圖2所示)包括實(shí)時(shí)操作系統、PCMCIA驅動(dòng)程序、WiFi網(wǎng)卡驅動(dòng)程序、TCP/IP協(xié)議、串口驅動(dòng)程序、圖形界面等。本系統中的實(shí)時(shí)操作系統vCOS II是一個(gè)公開(kāi)源代碼、結構小巧、具有可剝奪實(shí)時(shí)內核的實(shí)時(shí)操作系統。最多可以支持64個(gè)任務(wù),分別對應優(yōu)先級0~63,其中0為最高優(yōu)先級。vCOS需要移植才能用于不同的處理器平臺,移植需要改寫(xiě)的文件:OS_CPU.H,OS_CPU_A.S,OS_CPU_C.C.對于LPC2210嵌入式處理器,廠(chǎng)家的技術(shù)支持一般提供了該型號處理器的這三個(gè)移植文件,將這三個(gè)文件代替原文件即可使用。

圖2 嵌入式終端的軟件結構

但uCOS II缺少對外圍設備和接口的支持,如沒(méi)有文件系統、網(wǎng)絡(luò )協(xié)議、圖形界面。在廠(chǎng)家提供的資料中有其自行的TCP/IP協(xié)議和串口驅動(dòng)程序。但該TCP/IP協(xié)議是與以太網(wǎng)卡驅動(dòng)程序接口的,因此在該TCP/IP協(xié)議中,需要修改與網(wǎng)卡接口的API函數。其余的PCMCIA驅動(dòng)程序、WiFi網(wǎng)卡驅動(dòng)程序需要自己進(jìn)行編寫(xiě)。


3 驅動(dòng)程序的編寫(xiě)


3.1 PCMCIA驅動(dòng)程序

PCMCIA 驅動(dòng)程序包括五個(gè)主要函數,分別是initPCMCIAPorts(),pcmcia_WriteMem(),pcmcia_WriteReg(),pcmcia_ReadMem (),pcmcia_Read_Reg()。initPCMCIAPorts()函數用于PCMCIA設備的復位,其作用是通過(guò)控制RESET復位線(xiàn)為低電平,延遲一段時(shí)間以后,再恢復為高電平。

PCMCIA設備內部空間分為Memory空間和I/O空間,對Memory空間讀寫(xiě)分別為pcmcia_ReadMem(),pcmcia_WriteMem(),而I/O空間的讀寫(xiě)為pcmcia_ReadReg(),pcmcia_WriteReg().這幾個(gè)函數區別在于控制線(xiàn)WE,OE,IORD,IOWR的操作不一樣。

PCMCIA驅動(dòng)程序函數按照PCMCIA時(shí)序設置LPC2210相應的通用端口。PCMCIA總線(xiàn)的工作時(shí)序是這樣,首先在地址線(xiàn)上設置數據地址,并將CE1,CE2設為低電平,然后REG設為低電平將地址鎖存。接下來(lái)進(jìn)行讀或寫(xiě)操作,讀操作中,Memory空間和I/O空間的讀操作分別將OE,IORD設為低電平,然后等待HWAIT變?yōu)楦唠娖?。HWAIT變?yōu)楦唠娖胶?,將數據線(xiàn)上的狀態(tài)讀入。寫(xiě)操作中,首先按照待寫(xiě)數據設置數據線(xiàn)上的狀態(tài),然后Memory空間的寫(xiě)操作和I/O空間的寫(xiě)操作分別將WE,IOWE設置為低電平。接下來(lái),HWAIT變?yōu)楦唠娖胶笳f(shuō)明數據已經(jīng)寫(xiě)入。在讀寫(xiě)操作完成以后,依次將OE或者IORD(讀操作),WE或者IOWR(寫(xiě)操作),CE2,CE1,REG恢復為高電平。


3.2 網(wǎng)卡驅動(dòng)程序

Prism 2網(wǎng)卡內部操作是封閉的,外部對其操作都是通過(guò)存儲器操作完成的,Memory空間的存儲器有COR(Configuration Option Register)寄存器,I/O空間的存儲器有BAP(Baffuer Access Path)寄存器,命令/狀態(tài)寄存器,FID管理寄存器,事件寄存器,控制寄存器,主機軟件寄存器,輔助端口寄存器等,這些寄存器的含義及偏移地址見(jiàn)文獻[2].LPC2210管理、配置網(wǎng)卡的數據項都是加載一個(gè)特定的RID(Resource IDentifiers)到BAP寄存器,讀取或者寫(xiě)入一個(gè)特定的緩沖區。WiFi網(wǎng)卡驅動(dòng)程序中的函數功能都是通過(guò)訪(fǎng)問(wèn)這些存儲器完成的,下面將介紹這些API函數的功能。

wlandrv_ProbeDevice()函數用于檢測網(wǎng)卡是否存在,函數首先訪(fǎng)問(wèn)COR寄存器,設置網(wǎng)卡進(jìn)入I/O模式,設置操作屬于Memory空間的讀寫(xiě)操作。然后,使用pcmcia_WriteReg()函數寫(xiě)一個(gè)值到地址為0x28的寄存器中,再用pcmcia_ReadReg()函數讀取這個(gè)寄存器的值,與原來(lái)的值相比較,如果值相同,則說(shuō)明網(wǎng)卡是存在的:


上一頁(yè) 1 2 下一頁(yè)

評論


相關(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>