作者:吳永康,張東,楊承照
目前,嵌入式技術(shù)已廣泛應(yīng)用于工業(yè)控制、消費(fèi)類(lèi)電子產(chǎn)品、通信系統(tǒng)等各類(lèi)市場(chǎng)產(chǎn)品。并且隨著互聯(lián)網(wǎng)的日益發(fā)達(dá),具有無(wú)線接入功能的嵌入式系統(tǒng)更加具有發(fā)展前景。本文將介紹支持IEEE 802.11g協(xié)議的54M USB無(wú)線網(wǎng)卡在嵌入式系統(tǒng)上的應(yī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è)備以及高性?xún)r(jià)比,低功耗的應(yīng)用,運(yùn)行的頻率可以達(dá)到203MHz。該處理器集成了很多重要的功能模塊,并且支持多種總線。處理器集成了USB HOST控制器,并支持兩個(gè)USB HOST通訊端口。
系統(tǒng)使用64M NAND FLASH作為仔儲(chǔ)器,存儲(chǔ)了系統(tǒng)軟件部分必需的BOOTLOADER、LINUXKERNEL、FILESYSTEM。系統(tǒng)中的串口、 USBDEVICE接口、JTAG接口主要在開(kāi)發(fā)調(diào)試時(shí)使用。系統(tǒng)通過(guò)TOUCH&LCD進(jìn)行人機(jī)信息交換,滿足廣大消費(fèi)類(lèi)電子產(chǎn)品的需求。
無(wú)線網(wǎng)卡是這個(gè)移動(dòng)終端的關(guān)鍵設(shè)備,鑒于市面上大部分的llM無(wú)線網(wǎng)卡已經(jīng)停產(chǎn)或者即將停產(chǎn),以及社會(huì)對(duì)具有更高網(wǎng)絡(luò)接入性能的嵌入式設(shè)備的需求,我們選擇芯片組型號(hào)為rt2573的54M無(wú)線網(wǎng)卡。由于S3C2410處理器已經(jīng)集成了USB HOST控制器,所以不需要附加額外的芯片,網(wǎng)卡可以直接通過(guò)USBHOST PORT接入,非常方便。
1.2 USB主機(jī)接口的硬件實(shí)現(xiàn)
在USB系統(tǒng)中,各種USB設(shè)備要與主機(jī)相連,就必須通過(guò)一個(gè)共同的接口接入豐機(jī)。這個(gè)接口就是USB豐機(jī)控制器(USB Host Controller)。USB總線協(xié)議定義了四條信號(hào)線,其中兩條信號(hào)線負(fù)責(zé)供電,而另外兩條信號(hào)線負(fù)責(zé)數(shù)據(jù)的傳輸。USB通信模型是一種Host- Slave(主機(jī)——外設(shè))主從式結(jié)構(gòu),因此經(jīng)由USB總線進(jìn)行通信的雙方必有一方在通信控制中擔(dān)當(dāng)主機(jī)(HOST)的角色。
USB接口可從主機(jī)上獲得500mA的電流,并且支持熱插拔,真正做到即插即用。一個(gè)USB接口可同時(shí)支持高速和低速USB外設(shè)的訪問(wèn),有一條4芯電纜連接,其中2條是正負(fù)電源,傳送的是5V的電源,2條是數(shù)據(jù)傳輸線,數(shù)據(jù)線是單工的,在整個(gè)的一個(gè)系統(tǒng)中的數(shù)據(jù)速率是一定的,或者是高速,或者是低速。
S3C2410處理器內(nèi)部集成了USB HOST控制器,可以直接從CPU引線出來(lái),而不需要添加額外的控制芯片,圖2為系統(tǒng)的USB HOST接口擴(kuò)展。S3C2410處理器可以支持兩個(gè)USB HOST通信端口。
2 USB網(wǎng)卡無(wú)線網(wǎng)絡(luò)功能的實(shí)現(xiàn)
2.1 無(wú)線網(wǎng)卡的軟件管理層實(shí)現(xiàn)
嵌入式系統(tǒng)硬件部分建立好后,需要建立軟件系統(tǒng)。本系統(tǒng)中采用了vivi做為BOOTLOADER(引導(dǎo)啟動(dòng)程序),嵌入式Linux作為操作系統(tǒng),以Cramfs作為主文件系統(tǒng),為支持可讀寫(xiě)功能還添加了Jffs2文件系統(tǒng)。 接著,需要軟件上實(shí)現(xiàn)無(wú)線網(wǎng)卡的功能。
無(wú)線網(wǎng)卡的軟件包括無(wú)線網(wǎng)卡固件(Firmware)、無(wú)線網(wǎng)卡驅(qū)動(dòng)程序(Driver)和無(wú)線網(wǎng)卡配置管理程序三部分。
無(wú)線網(wǎng)卡的軟件實(shí)現(xiàn)結(jié)構(gòu)圖如圖3所示。固件是無(wú)線網(wǎng)卡上最基本的控制系統(tǒng),主要基于MAC芯片來(lái)實(shí)現(xiàn)對(duì)整個(gè)網(wǎng)卡的控制和管理,并向下提供與物理層的接口,向上提供一個(gè)程序開(kāi)發(fā)接口,為程序開(kāi)發(fā)附加的移動(dòng)主機(jī)應(yīng)用程序提供支持。在嵌入式系統(tǒng)中,IEEE802.11提供的服務(wù),包括認(rèn)證、解除認(rèn)證、登錄、重登錄等均由固件完成。
無(wú)線網(wǎng)卡的驅(qū)動(dòng)程序使用固件提供的軟件編程接口,對(duì)無(wú)線網(wǎng)卡進(jìn)行控制,配合固件完成數(shù)據(jù)的收發(fā)以及對(duì)信息幀的處理。無(wú)線網(wǎng)卡驅(qū)動(dòng)程序主要是針對(duì)相應(yīng)的無(wú)線網(wǎng)卡芯片進(jìn)行設(shè)計(jì)的,不同的芯片,它們的固件和寄存器相關(guān)設(shè)置存在很大的差異。除了要完成對(duì)下層的控制外,無(wú)線網(wǎng)卡驅(qū)動(dòng)還要向上層應(yīng)用程序和管理程序提供操作和配置無(wú)線網(wǎng)卡的應(yīng)用程序編程接口,以實(shí)現(xiàn)其網(wǎng)絡(luò)傳輸功能。
所有的Linux網(wǎng)絡(luò)驅(qū)動(dòng)程序遵循通用的接口。設(shè)計(jì)時(shí)采用的是面向?qū)ο蟮姆椒āR粋€(gè)設(shè)備就是一個(gè)對(duì)象(device結(jié)構(gòu)),它內(nèi)部有自己的數(shù)據(jù)和方法。每一個(gè)設(shè)備的方法被調(diào)用時(shí)的第一個(gè)參數(shù)都是這個(gè)設(shè)備對(duì)象本身,這樣這個(gè)方法就可以存取自身的數(shù)據(jù)(類(lèi)似面向?qū)ο蟪绦蛟O(shè)計(jì)時(shí)的this引用)。一個(gè)網(wǎng)絡(luò)設(shè)備最基本的方法有初始化、發(fā)送和接收。如圖4所示。
初始化程序完成硬件的初始化,device中變量的初始化和系統(tǒng)資源的申請(qǐng),發(fā)送程序是在驅(qū)動(dòng)程序的上層協(xié)議層有數(shù)據(jù)要發(fā)送時(shí)自動(dòng)調(diào)用的。一般驅(qū)動(dòng)程序中不對(duì)發(fā)送數(shù)據(jù)進(jìn)行緩存,直接使用硬件的發(fā)送功能把數(shù)據(jù)發(fā)送出去。接收數(shù)據(jù)一般是通過(guò)硬件中斷來(lái)通知的。在中斷處理程序里,把硬件幀信息填入一個(gè) skbuff結(jié)構(gòu)中,然后調(diào)用 netif_rx()傳遞給上層處理。
本系統(tǒng)的無(wú)線網(wǎng)卡驅(qū)動(dòng)接口主要實(shí)現(xiàn)了以下接口函數(shù):
無(wú)線網(wǎng)卡配置管理程序利用驅(qū)動(dòng)程序提供的信息查詢(xún)和設(shè)置接口,向用戶實(shí)時(shí)提供無(wú)線網(wǎng)卡的狀態(tài),同時(shí)利用該管理軟什可以實(shí)現(xiàn)對(duì)IP、 SSID等無(wú)線剛卡參數(shù)進(jìn)行必要的配置。常見(jiàn)的無(wú)線網(wǎng)卡配置管理程序有iwconfig、iwlistt、iwspy、iwpriv等。這里介紹幾個(gè)主要的無(wú)線網(wǎng)卡配置管理程序:
·Iwconfig:主要的無(wú)線管理工具,用來(lái)查看設(shè)備配置以及大部分的無(wú)線剛絡(luò)參數(shù)。
·Iwlish:用來(lái)查看大部分iwconfig工具不能顯示的參數(shù),如:比特率,頻率等。
·Impriv:操作無(wú)線網(wǎng)卡驅(qū)動(dòng)程序提供的特有的管理控制功能。
·Iwgetid:輸出指定設(shè)備的ESSID或NWID。
2.2 無(wú)線網(wǎng)卡的配置和激活使用
要完成無(wú)線網(wǎng)卡的配置和激活使用,首先,應(yīng)設(shè)置配置文件和編譯驅(qū)動(dòng)程序,生成無(wú)線網(wǎng)卡的固件和驅(qū)動(dòng)程序模塊。把固件和配置文什放到文件系統(tǒng)的/etc/Wireless/RT73STA/文件夾上。
Rt73sta.dat的主要配置如下:
·NetworkType=Infra/*由于選擇AP接入模式,網(wǎng)絡(luò)類(lèi)型選擇Infra*/
·SSID=TPLINK/* SSID/ESSID(Service SetIdentifier)是“服務(wù)區(qū)標(biāo)識(shí)符匹配”、“業(yè)務(wù)組標(biāo)識(shí)符”的簡(jiǎn)稱(chēng),最多可以有32個(gè)字符。它就好比有線局域網(wǎng)中的“工作組”標(biāo)識(shí)一樣或好比是無(wú)線客戶端與無(wú)線路由器之間的一道口令一樣,只有在完仝相同的前提下才能讓無(wú)線網(wǎng)卡訪問(wèn)無(wú)線路由器,這也是保證無(wú)線網(wǎng)絡(luò)安全的重要措施之一。這里設(shè)置為你的AP 上的SSID就可以。*/
·WirelessMode=0/*數(shù)字0表示選擇同時(shí)支持11b/g協(xié)議。*/
·TxRate=12/*數(shù)字12表示選擇54M的傳輸速度。*/
除通過(guò)修改配置文件外,大部分的參數(shù)可以通過(guò)iwconfig工具直接設(shè)定。至此,可以通過(guò)ifconfig來(lái)啟動(dòng)無(wú)線網(wǎng)卡了。Ifconfig usb0 192.168.100.99 up。啟動(dòng)后可以通過(guò)ping命令查看網(wǎng)絡(luò)連接狀態(tài)。
詳細(xì)介紹了實(shí)現(xiàn)基于S3C2410處理器的嵌入式Linux系統(tǒng)無(wú)線接入網(wǎng)絡(luò)功能的擴(kuò)展方法,對(duì)硬件和軟件的實(shí)現(xiàn)進(jìn)行了詳細(xì)的描述。無(wú)線接入功能的實(shí)現(xiàn)使得嵌入式系統(tǒng)在網(wǎng)絡(luò)應(yīng)用高速發(fā)展的電子消費(fèi)世界有著廣闊的發(fā)展空間和應(yīng)用前景。系統(tǒng)采用54MBPS無(wú)線網(wǎng)卡,大大增強(qiáng)了嵌入式系統(tǒng)網(wǎng)絡(luò)接入能力,使其更具有競(jìng)爭(zhēng)力。
責(zé)任編輯:gt
-
處理器
+關(guān)注
關(guān)注
68文章
19825瀏覽量
233737 -
usb
+關(guān)注
關(guān)注
60文章
8150瀏覽量
271109 -
無(wú)線
+關(guān)注
關(guān)注
31文章
5540瀏覽量
175521
發(fā)布評(píng)論請(qǐng)先 登錄
S3C2410處理器與Nand flash 的問(wèn)題
【7gyy】臺(tái)式電腦使用無(wú)線網(wǎng)絡(luò)的技巧
S3C2410處理器
無(wú)線網(wǎng)絡(luò)
基于ARM S3C2410處理器的PDA人機(jī)接口電路設(shè)計(jì)
怎么實(shí)現(xiàn)CDMA無(wú)線網(wǎng)絡(luò)防雷接地的設(shè)計(jì)?
基于S3C2410芯片Linux-Wlan-ng的移植和應(yīng)用
嵌入式寬帶無(wú)線網(wǎng)絡(luò)終端的實(shí)現(xiàn)
基于S3C2410芯片Linux-Wlan-ng的移植和應(yīng)用
S3C2410處理器 Bootloader(Vivi)源代碼
S3C2410處理器特性
中興的AC580無(wú)線網(wǎng)卡在嵌入式系統(tǒng)上的應(yīng)用介紹

基于S3C2410處理器和IEEE802.11b實(shí)現(xiàn)無(wú)線溫度變送器的設(shè)計(jì)

基于在S3C2410處理器平臺(tái)上實(shí)現(xiàn)Windows CE.NET的應(yīng)用設(shè)計(jì)

基于S3C2410處理器實(shí)現(xiàn)3G無(wú)線網(wǎng)卡接入無(wú)線網(wǎng)絡(luò)功能的設(shè)計(jì)

評(píng)論