54M無(wú)線(xiàn)網(wǎng)絡(luò )適配器在嵌入式系統中的研究與應用
目前,嵌入式技術(shù)已廣泛應用于工業(yè)控制、消費類(lèi)電子產(chǎn)品、通信系統等各類(lèi)市場(chǎng)產(chǎn)品。并且隨著(zhù)互聯(lián)網(wǎng)的日益發(fā)達,具有無(wú)線(xiàn)接入功能的嵌入式系統更加具有發(fā)展前景。本文將介紹支持IEEE 802.11g協(xié)議的54M USB無(wú)線(xiàn)網(wǎng)卡在嵌入式系統上的應用,嵌入式系統使用了ARM9系列的S3C2410處理器。
1 系統硬件體系結構
1.1 系統結構
系統總體結構如圖1所示。

系統核心芯片采用三星公司的S3C2410處理器,該處理器是三星公司的一款基于ARM920T內核的16/32位RISC嵌入式微處理器,主要面向手持設備以及高性?xún)r(jià)比,低功耗的應用,運行的頻率可以達到203MHz。該處理器集成了很多重要的功能模塊,并且支持多種總線(xiàn)。處理器集成了USB HOST控制器,并支持兩個(gè)USB HOST通訊端口。
系統使用64M NAND FLASH作為仔儲器,存儲了系統軟件部分必需的BOOTLOADER、LINUXKERNEL、FILESYSTEM。系統中的串口、USBDEVICE接口、JTAG接口主要在開(kāi)發(fā)調試時(shí)使用。系統通過(guò)TOUCH&LCD進(jìn)行人機信息交換,滿(mǎn)足廣大消費類(lèi)電子產(chǎn)品的需求。
無(wú)線(xiàn)網(wǎng)卡是這個(gè)移動(dòng)終端的關(guān)鍵設備,鑒于市面上大部分的llM無(wú)線(xiàn)網(wǎng)卡已經(jīng)停產(chǎn)或者即將停產(chǎn),以及社會(huì )對具有更高網(wǎng)絡(luò )接入性能的嵌入式設備的需求,我們選擇芯片組型號為rt2573的54M無(wú)線(xiàn)網(wǎng)卡。由于S3C2410處理器已經(jīng)集成了USB HOST控制器,所以不需要附加額外的芯片,網(wǎng)卡可以直接通過(guò)USBHOST PORT接入,非常方便。
1.2 USB主機接口的硬件實(shí)現
在USB系統中,各種USB設備要與主機相連,就必須通過(guò)一個(gè)共同的接口接入豐機。這個(gè)接口就是USB豐機控制器(USB Host Controller)。USB總線(xiàn)協(xié)議定義了四條信號線(xiàn),其中兩條信號線(xiàn)負責供電,而另外兩條信號線(xiàn)負責數據的傳輸。USB通信模型是一種Host-Slave(主機——外設)主從式結構,因此經(jīng)由USB總線(xiàn)進(jìn)行通信的雙方必有一方在通信控制中擔當主機(HOST)的角色。
USB接口可從主機上獲得500mA的電流,并且支持熱插拔,真正做到即插即用。一個(gè)USB接口可同時(shí)支持高速和低速USB外設的訪(fǎng)問(wèn),有一條4芯電纜連接,其中2條是正負電源,傳送的是5V的電源,2條是數據傳輸線(xiàn),數據線(xiàn)是單工的,在整個(gè)的一個(gè)系統中的數據速率是一定的,或者是高速,或者是低速。
S3C2410處理器內部集成了USB HOST控制器,可以直接從CPU引線(xiàn)出來(lái),而不需要添加額外的控制芯片,圖2為系統的USB HOST接口擴展。S3C2410處理器可以支持兩個(gè)USB HOST通信端口。

2 USB網(wǎng)卡無(wú)線(xiàn)網(wǎng)絡(luò )功能的實(shí)現
2.1 無(wú)線(xiàn)網(wǎng)卡的軟件管理層實(shí)現
嵌入式系統硬件部分建立好后,需要建立軟件系統。本系統中采用了vivi做為BOOTLOADER(引導啟動(dòng)程序),嵌入式Linux作為操作系統,以Cramfs作為主文件系統,為支持可讀寫(xiě)功能還添加了Jffs2文件系統。 接著(zhù),需要軟件上實(shí)現無(wú)線(xiàn)網(wǎng)卡的功能。
無(wú)線(xiàn)網(wǎng)卡的軟件包括無(wú)線(xiàn)網(wǎng)卡固件(Firmware)、無(wú)線(xiàn)網(wǎng)卡驅動(dòng)程序(Driver)和無(wú)線(xiàn)網(wǎng)卡配置管理程序三部分。
無(wú)線(xiàn)網(wǎng)卡的軟件實(shí)現結構圖如圖3所示。固件是無(wú)線(xiàn)網(wǎng)卡上最基本的控制系統,主要基于MAC芯片來(lái)實(shí)現對整個(gè)網(wǎng)卡的控制和管理,并向下提供與物理層的接口,向上提供一個(gè)程序開(kāi)發(fā)接口,為程序開(kāi)發(fā)附加的移動(dòng)主機應用程序提供支持。在嵌入式系統中,IEEE802.11提供的服務(wù),包括認證、解除認證、登錄、重登錄等均由固件完成。

無(wú)線(xiàn)網(wǎng)卡的驅動(dòng)程序使用固件提供的軟件編程接口,對無(wú)線(xiàn)網(wǎng)卡進(jìn)行控制,配合固件完成數據的收發(fā)以及對信息幀的處理。無(wú)線(xiàn)網(wǎng)卡驅動(dòng)程序主要是針對相應的無(wú)線(xiàn)網(wǎng)卡芯片進(jìn)行設計的,不同的芯片,它們的固件和寄存器相關(guān)設置存在很大的差異。除了要完成對下層的控制外,無(wú)線(xiàn)網(wǎng)卡驅動(dòng)還要向上層應用程序和管理程序提供操作和配置無(wú)線(xiàn)網(wǎng)卡的應用程序編程接口,以實(shí)現其網(wǎng)絡(luò )傳輸功能。
所有的Linux網(wǎng)絡(luò )驅動(dòng)程序遵循通用的接口。設計時(shí)采用的是面向對象的方法。一個(gè)設備就是一個(gè)對象(device結構),它內部有自己的數據和方法。每一個(gè)設備的方法被調用時(shí)的第一個(gè)參數都是這個(gè)設備對象本身,這樣這個(gè)方法就可以存取自身的數據(類(lèi)似面向對象程序設計時(shí)的this引用)。一個(gè)網(wǎng)絡(luò )設備最基本的方法有初始化、發(fā)送和接收。如圖4所示。

初始化程序完成硬件的初始化,device中變量的初始化和系統資源的申請,發(fā)送程序是在驅動(dòng)程序的上層協(xié)議層有數據要發(fā)送時(shí)自動(dòng)調用的。一般驅動(dòng)程序中不對發(fā)送數據進(jìn)行緩存,直接使用硬件的發(fā)送功能把數據發(fā)送出去。接收數據一般是通過(guò)硬件中斷來(lái)通知的。在中斷處理程序里,把硬件幀信息填入一個(gè)skbuff結構中,然后調用 netif_rx()傳遞給上層處理。
本系統的無(wú)線(xiàn)網(wǎng)卡驅動(dòng)接口主要實(shí)現了以下接口函數:

無(wú)線(xiàn)網(wǎng)卡配置管理程序利用驅動(dòng)程序提供的信息查詢(xún)和設置接口,向用戶(hù)實(shí)時(shí)提供無(wú)線(xiàn)網(wǎng)卡的狀態(tài),同時(shí)利用該管理軟什可以實(shí)現對IP、SSID等無(wú)線(xiàn)剛卡參數進(jìn)行必要的配置。常見(jiàn)的無(wú)線(xiàn)網(wǎng)卡配置管理程序有iwconfig、iwlistt、iwspy、iwpriv等。這里介紹幾個(gè)主要的無(wú)線(xiàn)網(wǎng)卡配置管理程序:
評論