目前,嵌入式技術已廣泛應用于工業控制、消費類電子產品、通信系統等各類市場產品。并且隨著互聯網的日益發達,具有無線接入功能的嵌入式系統更加具有發展前景。本文將介紹支持IEEE 802.11g協議的54M USB無線網卡在嵌入式系統上的應用,嵌入式系統使用了ARM9系列的S3C2410處理器。 1 系統硬件體系結構 1.1 系統結構 系統總體結構如圖1所示。 ![]() 系統核心芯片采用三星公司的S3C2410處理器,該處理器是三星公司的一款基于 ARM920T內核的16/32位RISC嵌入式微處理器,主要面向手持設備以及高性價比,低功耗的應用,運行的頻率可以達到203MHz。該處理器集成了很多重要的功能模塊,并且支持多種總線。處理器集成了USB HOST控制器,并支持兩個USB HOST通訊端口。 系統使用64M NAND FLASH作為仔儲器,存儲了系統軟件部分必需的BOOTLOADER、LINUXKERNEL、FILESYSTEM。系統中的串口、 USBDEVICE接口、JTAG接口主要在開發調試時使用。系統通過TOUCH&LCD進行人機信息交換,滿足廣大消費類電子產品的需求。 無線網卡是這個移動終端的關鍵設備,鑒于市面上大部分的llM無線網卡已經停產或者即將停產,以及社會對具有更高網絡接入性能的嵌入式設備的需求,我們選擇芯片組型號為rt2573的54M無線網卡。由于S3C2410處理器已經集成了USB HOST控制器,所以不需要附加額外的芯片,網卡可以直接通過USBHOST PORT接入,非常方便。 1.2 USB主機接口的硬件實現 在USB系統中,各種USB設備要與主機相連,就必須通過一個共同的接口接入豐機。這個接口就是USB豐機控制器(USB Host Controller)。USB總線協議定義了四條信號線,其中兩條信號線負責供電,而另外兩條信號線負責數據的傳輸。USB通信模型是一種Host- Slave(主機——外設)主從式結構,因此經由USB總線進行通信的雙方必有一方在通信控制中擔當主機(HOST)的角色。 USB接口可從主機上獲得500mA的電流,并且支持熱插拔,真正做到即插即用。一個USB接口可同時支持高速和低速USB外設的訪問,有一條4芯電纜連接,其中2條是正負電源,傳送的是5V的電源,2條是數據傳輸線,數據線是單工的,在整個的一個系統中的數據速率是一定的,或者是高速,或者是低速。 S3C2410處理器內部集成了USB HOST控制器,可以直接從CPU引線出來,而不需要添加額外的控制芯片,圖2為系統的USB HOST接口擴展。S3C2410處理器可以支持兩個USB HOST通信端口。 ![]() 2 USB網卡無線網絡功能的實現 2.1 無線網卡的軟件管理層實現 嵌入式系統硬件部分建立好后,需要建立軟件系統。本系統中采用了vivi做為BOOTLOADER(引導啟動程序),嵌入式Linux作為操作系統,以Cramfs作為主文件系統,為支持可讀寫功能還添加了Jffs2文件系統。 接著,需要軟件上實現無線網卡的功能。 無線網卡的軟件包括無線網卡固件(Firmware)、無線網卡驅動程序(Driver)和無線網卡配置管理程序三部分。 無線網卡的軟件實現結構圖如圖3所示。固件是無線網卡上最基本的控制系統,主要基于MAC芯片來實現對整個網卡的控制和管理,并向下提供與物理層的接口,向上提供一個程序開發接口,為程序開發附加的移動主機應用程序提供支持。在嵌入式系統中,IEEE802.11提供的服務,包括認證、解除認證、登錄、重登錄等均由固件完成。 ![]() 無線網卡的驅動程序使用固件提供的軟件編程接口,對無線網卡進行控制,配合固件完成數據的收發以及對信息幀的處理。無線網卡驅動程序主要是針對相應的無線網卡芯片進行設計的,不同的芯片,它們的固件和寄存器相關設置存在很大的差異。除了要完成對下層的控制外,無線網卡驅動還要向上層應用程序和管理程序提供操作和配置無線網卡的應用程序編程接口,以實現其網絡傳輸功能。 所有的Linux網絡驅動程序遵循通用的接口。設計時采用的是面向對象的方法。一個設備就是一個對象(device結構),它內部有自己的數據和方法。每一個設備的方法被調用時的第一個參數都是這個設備對象本身,這樣這個方法就可以存取自身的數據(類似面向對象程序設計時的this引用)。一個網絡設備最基本的方法有初始化、發送和接收。如圖4所示。 ![]() 初始化程序完成硬件的初始化,device中變量的初始化和系統資源的申請,發送程序是在驅動程序的上層協議層有數據要發送時自動調用的。一般驅動程序中不對發送數據進行緩存,直接使用硬件的發送功能把數據發送出去。接收數據一般是通過硬件中斷來通知的。在中斷處理程序里,把硬件幀信息填入一個 skbuff結構中,然后調用 netif_rx()傳遞給上層處理。 本系統的無線網卡驅動接口主要實現了以下接口函數: ![]() 無線網卡配置管理程序利用驅動程序提供的信息查詢和設置接口,向用戶實時提供無線網卡的狀態,同時利用該管理軟什可以實現對IP、 SSID等無線剛卡參數進行必要的配置。常見的無線網卡配置管理程序有iwconfig、iwlistt、iwspy、iwpriv等。這里介紹幾個主要的無線網卡配置管理程序: ·Iwconfig:主要的無線管理工具,用來查看設備配置以及大部分的無線剛絡參數。 ·Iwlish:用來查看大部分iwconfig工具不能顯示的參數,如:比特率,頻率等。 ·Impriv:操作無線網卡驅動程序提供的特有的管理控制功能。 ·Iwgetid:輸出指定設備的ESSID或NWID。 2.2 無線網卡的配置和激活使用 要完成無線網卡的配置和激活使用,首先,應設置配置文件和編譯驅動程序,生成無線網卡的固件和驅動程序模塊。把固件和配置文什放到文件系統的/etc/Wireless/RT73STA/文件夾上。 Rt73sta.dat的主要配置如下: ·NetworkType=Infra /*由于選擇AP接入模式,網絡類型選擇Infra*/ ·SSID=TPLINK /* SSID/ESSID(Service SetIdentifier)是“服務區標識符匹配”、“業務組標識符”的簡稱,最多可以有32個字符。它就好比有線局域網中的“工作組”標識一樣或好比是無線客戶端與無線路由器之間的一道口令一樣,只有在完仝相同的前提下才能讓無線網卡訪問無線路由器,這也是保證無線網絡安全的重要措施之一。這里設置為你的AP 上的SSID就可以。*/ ·WirelessMode=0 /*數字0表示選擇同時支持11b/g協議。*/ ·TxRate=12 /*數字12表示選擇54M的傳輸速度。*/ 除通過修改配置文件外,大部分的參數可以通過iwconfig工具直接設定。至此,可以通過ifconfig來啟動無線網卡了。Ifconfig usb0 192.168.100.99 up。啟動后可以通過ping命令查看網絡連接狀態。 ![]() 詳細介紹了實現基于S3C2410處理器的嵌入式Linux系統無線接入網絡功能的擴展方法,對硬件和軟件的實現進行了詳細的描述。無線接入功能的實現使得嵌入式系統在網絡應用高速發展的電子消費世界有著廣闊的發展空間和應用前景。系統采用54MBPS無線網卡,大大增強了嵌入式系統網絡接入能力,使其更具有競爭力。 參考文獻 1. 陳頤.秦貴和.徐華中 ARM9 嵌入式技術及Linux高級實踐教程 2005 2. 劉亨杰.汪敏.潘志浩 USB 無線網絡適配器在嵌入式系統中的應用 2003(5) 3. 孫天澤.袁文菊.張海峰 嵌入式設計及Linux驅動開發指南 2005 4. 張綺文.謝建雄.謝勁心 ARM 嵌入式常用模塊與綜合系統設計 2007 5. 黃學雷 無線局域網在嵌入式系統中的應用 2006 6. 劉乃安 無線局域網(WLAN)原理、技術與應用 2004 7. JONATHTAN CORBET.ALESSANDRO RUBINI LINUX 設備驅動程序 2006 8. 毛德操.胡希明 Linux 內核源代碼情景分析 2001 9. 郭磊.廖啟征.魏世民.蔡坤.李偉 基于 ARM9系統的USB無線網卡驅動程序設計 [期刊論文] -計算機系統應用2007(1) 10. 周蓓.王典洪.宋俊磊 ARM 在信息家電方面的應用 2006(2) 作者:武漢大學物理科學與技術學院 吳永康 張東 楊承照 來源:電子技術 2007(7) |