54M無線網(wǎng)絡(luò)適配器在嵌入式系統(tǒng)中的研究與應用
目前,嵌入式技術(shù)已廣泛應用于工業(yè)控制、消費類電子產(chǎn)品、通信系統(tǒng)等各類市場產(chǎn)品。并且隨著互聯(lián)網(wǎng)的日益發(fā)達,具有無線接入功能的嵌入式系統(tǒng)更加具有發(fā)展前景。本文將介紹支持IEEE 802.11g協(xié)議的54M USB無線網(wǎng)卡在嵌入式系統(tǒng)上的應用,嵌入式系統(tǒng)使用了ARM9系列的S3C2410處理器。
1 系統(tǒng)硬件體系結(jié)構(gòu)
1.1 系統(tǒng)結(jié)構(gòu)
系統(tǒng)總體結(jié)構(gòu)如圖1所示。
系統(tǒng)核心芯片采用三星公司的S3C2410處理器,該處理器是三星公司的一款基于ARM920T內(nèi)核的16/32位RISC嵌入式微處理器,主要面向手持設(shè)備以及高性價比,低功耗的應用,運行的頻率可以達到203MHz。該處理器集成了很多重要的功能模塊,并且支持多種總線。處理器集成了USB HOST控制器,并支持兩個USB HOST通訊端口。
系統(tǒng)使用64M NAND FLASH作為仔儲器,存儲了系統(tǒng)軟件部分必需的BOOTLOADER、LINUXKERNEL、FILESYSTEM。系統(tǒng)中的串口、USBDEVICE接口、JTAG接口主要在開發(fā)調(diào)試時使用。系統(tǒng)通過TOUCH&LCD進行人機信息交換,滿足廣大消費類電子產(chǎn)品的需求。
無線網(wǎng)卡是這個移動終端的關(guān)鍵設(shè)備,鑒于市面上大部分的llM無線網(wǎng)卡已經(jīng)停產(chǎn)或者即將停產(chǎn),以及社會對具有更高網(wǎng)絡(luò)接入性能的嵌入式設(shè)備的需求,我們選擇芯片組型號為rt2573的54M無線網(wǎng)卡。由于S3C2410處理器已經(jīng)集成了USB HOST控制器,所以不需要附加額外的芯片,網(wǎng)卡可以直接通過USBHOST PORT接入,非常方便。
1.2 USB主機接口的硬件實現(xiàn)
在USB系統(tǒng)中,各種USB設(shè)備要與主機相連,就必須通過一個共同的接口接入豐機。這個接口就是USB豐機控制器(USB Host Controller)。USB總線協(xié)議定義了四條信號線,其中兩條信號線負責供電,而另外兩條信號線負責數(shù)據(jù)的傳輸。USB通信模型是一種Host-Slave(主機——外設(shè))主從式結(jié)構(gòu),因此經(jīng)由USB總線進行通信的雙方必有一方在通信控制中擔當主機(HOST)的角色。
USB接口可從主機上獲得500mA的電流,并且支持熱插拔,真正做到即插即用。一個USB接口可同時支持高速和低速USB外設(shè)的訪問,有一條4芯電纜連接,其中2條是正負電源,傳送的是5V的電源,2條是數(shù)據(jù)傳輸線,數(shù)據(jù)線是單工的,在整個的一個系統(tǒng)中的數(shù)據(jù)速率是一定的,或者是高速,或者是低速。
S3C2410處理器內(nèi)部集成了USB HOST控制器,可以直接從CPU引線出來,而不需要添加額外的控制芯片,圖2為系統(tǒng)的USB HOST接口擴展。S3C2410處理器可以支持兩個USB HOST通信端口。
2 USB網(wǎng)卡無線網(wǎng)絡(luò)功能的實現(xiàn)
2.1 無線網(wǎng)卡的軟件管理層實現(xiàn)
嵌入式系統(tǒng)硬件部分建立好后,需要建立軟件系統(tǒng)。本系統(tǒng)中采用了vivi做為BOOTLOADER(引導啟動程序),嵌入式Linux作為操作系統(tǒng),以Cramfs作為主文件系統(tǒng),為支持可讀寫功能還添加了Jffs2文件系統(tǒng)。 接著,需要軟件上實現(xiàn)無線網(wǎng)卡的功能。
無線網(wǎng)卡的軟件包括無線網(wǎng)卡固件(Firmware)、無線網(wǎng)卡驅(qū)動程序(Driver)和無線網(wǎng)卡配置管理程序三部分。
無線網(wǎng)卡的軟件實現(xiàn)結(jié)構(gòu)圖如圖3所示。固件是無線網(wǎng)卡上最基本的控制系統(tǒng),主要基于MAC芯片來實現(xiàn)對整個網(wǎng)卡的控制和管理,并向下提供與物理層的接口,向上提供一個程序開發(fā)接口,為程序開發(fā)附加的移動主機應用程序提供支持。在嵌入式系統(tǒng)中,IEEE802.11提供的服務(wù),包括認證、解除認證、登錄、重登錄等均由固件完成。
無線網(wǎng)卡的驅(qū)動程序使用固件提供的軟件編程接口,對無線網(wǎng)卡進行控制,配合固件完成數(shù)據(jù)的收發(fā)以及對信息幀的處理。無線網(wǎng)卡驅(qū)動程序主要是針對相應的無線網(wǎng)卡芯片進行設(shè)計的,不同的芯片,它們的固件和寄存器相關(guān)設(shè)置存在很大的差異。除了要完成對下層的控制外,無線網(wǎng)卡驅(qū)動還要向上層應用程序和管理程序提供操作和配置無線網(wǎng)卡的應用程序編程接口,以實現(xiàn)其網(wǎng)絡(luò)傳輸功能。
所有的Linux網(wǎng)絡(luò)驅(qū)動程序遵循通用的接口。設(shè)計時采用的是面向?qū)ο蟮姆椒āR粋€設(shè)備就是一個對象(device結(jié)構(gòu)),它內(nèi)部有自己的數(shù)據(jù)和方法。每一個設(shè)備的方法被調(diào)用時的第一個參數(shù)都是這個設(shè)備對象本身,這樣這個方法就可以存取自身的數(shù)據(jù)(類似面向?qū)ο蟪绦蛟O(shè)計時的this引用)。一個網(wǎng)絡(luò)設(shè)備最基本的方法有初始化、發(fā)送和接收。如圖4所示。
初始化程序完成硬件的初始化,device中變量的初始化和系統(tǒng)資源的申請,發(fā)送程序是在驅(qū)動程序的上層協(xié)議層有數(shù)據(jù)要發(fā)送時自動調(diào)用的。一般驅(qū)動程序中不對發(fā)送數(shù)據(jù)進行緩存,直接使用硬件的發(fā)送功能把數(shù)據(jù)發(fā)送出去。接收數(shù)據(jù)一般是通過硬件中斷來通知的。在中斷處理程序里,把硬件幀信息填入一個skbuff結(jié)構(gòu)中,然后調(diào)用 netif_rx()傳遞給上層處理。
本系統(tǒng)的無線網(wǎng)卡驅(qū)動接口主要實現(xiàn)了以下接口函數(shù):
無線網(wǎng)卡配置管理程序利用驅(qū)動程序提供的信息查詢和設(shè)置接口,向用戶實時提供無線網(wǎng)卡的狀態(tài),同時利用該管理軟什可以實現(xiàn)對IP、SSID等無線剛卡參數(shù)進行必要的配置。常見的無線網(wǎng)卡配置管理程序有iwconfig、iwlistt、iwspy、iwpriv等。這里介紹幾個主要的無線網(wǎng)卡配置管理程序:
評論