<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 詳解USB無線網(wǎng)卡的Linux驅(qū)動移植

          詳解USB無線網(wǎng)卡的Linux驅(qū)動移植

          作者: 時間:2018-08-03 來源:網(wǎng)絡(luò) 收藏

          引言

          本文引用地址:http://www.ex-cimer.com/article/201808/385301.htm

          COMFAST CF150NS 使用IEEE802.11n無線技術(shù),無線傳輸速率最高達150 Mbps。相比傳統(tǒng)的54 Mbps IEEE802.11g產(chǎn)品,擁有更高的無線帶寬,讓局域網(wǎng)內(nèi)的數(shù)據(jù)傳輸更加高效,能有效地減少網(wǎng)絡(luò)延遲,使語音視頻、網(wǎng)絡(luò)游戲、在線點播更流暢。CF150NS還使用了CCA(Clear Channel Assessment)空頻道檢測技術(shù),在檢測到周邊有無線信號干擾時,可自動調(diào)整頻寬模式,避開信道干擾,使無線信號更加穩(wěn)定。當(dāng)干擾消失時,又可自動捆綁空閑信道,充分利用信道捆綁優(yōu)勢,提升無線性能。CF150NS主要技術(shù)參數(shù):主芯片Realtek 8188SU,接口2.0,頻率范圍為2.4~2.48 GHz,支持IEEE802.11n/g/b無線標(biāo)準(zhǔn);無線速率最高可達150 Mbps(IEEE802.11n);工作模式AdHoc和Infrastructre可選;加密特性為64/128位WEP、WPA/WPA2、WPAPSK/WPA2PSK(TKIP/AES);支持的操作系統(tǒng)為Windows//Mac[1]。

          1 移植要求

          移植目標(biāo)是在原有ARM監(jiān)測系統(tǒng)的基礎(chǔ)上實現(xiàn)功能擴展,為系統(tǒng)提供數(shù)據(jù)遠程無線采集方案。原ARM監(jiān)測系統(tǒng)是在優(yōu)龍YLE2440開發(fā)板上開發(fā)的,其內(nèi)核版本為2.6.12.7。USB是外部無線網(wǎng)絡(luò)系統(tǒng)提供的指定產(chǎn)品COMFAST CF150NS,其主芯片Realtek 8188SU的內(nèi)核版本要求是2.6.18~2.6.33。也就是說,整個移植過程要求USB無線網(wǎng)卡驅(qū)動必須是Realtek 8188SU,且工作環(huán)境是Linux2.6.12.7。Realtek公司對8188SU主芯片驅(qū)動提供的建議是PC機Fedora Linux 2.6.24測試通過。經(jīng)測試,若直接將驅(qū)動使用Linux 2.6.12.7內(nèi)核編譯,將出現(xiàn)大量錯誤。如何將到Linux 2.6.12.7還需要進一步研究。

          2 移植過程

          2.1 移植環(huán)境搭建

          移植過程采用VM虛擬機下安裝RedHat9.0來完成。具體配置:PC操作系統(tǒng)為VMware Workstation5.5 RedHat 9.0(Linux 2.4.20);硬件為優(yōu)龍YLE2440開發(fā)板;操作系統(tǒng)為Linux 2.6.12.7,安裝位置為/test/yle2440_2.6.12;交叉編譯器為gcc3.4.1,安裝位置為/usr/local/arm/3.4.1/bin/;Busybox安裝位置為/test/busybox;文件系統(tǒng)為/test/rootfs/;文件系統(tǒng)生成工具為mkcramfs;USB無線網(wǎng)卡驅(qū)動源碼為/test/8188su/driver/8188su;無線管理工具wirelesstools為/test/wireless_tools.29.tar.gz。另外,還需要準(zhǔn)備Linux 2.6.24內(nèi)核[2]。

          2.2 Linux內(nèi)核配置[3]

          進入內(nèi)核安裝目錄/test/yle2440_2.6.12,運行內(nèi)核配置:

          [root@localhost test]# make menuconfig

          (1) 增加WLAN支持

          選擇[Device Driver]→[Networking support]→[Wireless LAN (nonhamradio)]→[Wireless LAN drivers (nonhamradio) Wireless Extensions]。

          (2) 增加DHCP支持

          選擇[Device Driver]→[Networkingsupport]→[Networking options]。務(wù)必選中“Packet socket”和“IP: DHCP support”、“Network packet filtering framework(Netfilter)”選項。

          另外,還需要udhcpc的配置文件??截怋usybox目錄/examples/udhcp下的simple.script到文件系統(tǒng)/usr/share/udhcpc/下,并重命名為default.script。將default.script中的

          RESOLV_CONF=/etc/resolv.conf

          OR: rgb(68,68,68); WORD-SPACING: 0px; PADDING-TOP: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px>修改為

          RESOLV_CONF=/tmp/resolv.conf

          運行“mkcramfs rootfs rootfs.cramfs”生成根文件系統(tǒng)rootfs.cramfs,并重新下載到目標(biāo)板。

          2.3 Linux內(nèi)核文件修改

          首先將Linux2.6.24內(nèi)核中的netdevice.h、wireless.h、iw_handler.h拷貝至Linux2.6.12內(nèi)核相應(yīng)目錄下。然后以Linux2.6.24內(nèi)核為藍本進行文件建立、修改和替換。需要替換的文本清單為:

          ① /include/linux/目錄,wireless.h、skbuff.h、textsearch.h、netdevice.h、slab.h、ip.h、icmp.h、socket.h;

          ② /include/net/目錄,iw_handler.h、sock.h;

          ③ /include/sound/目錄,core.h;

          ④ /net/core/目錄,dev.c、skbuff.c、wireless.c、neighbour.h;

          ⑤ /net/ipv4/目錄,ip_output.c、devinet.c、socket.c;

          ⑥ /net/netlink目錄,af_netlink.c;

          ⑦ /mm/目錄,slab.c。

          文件替換完畢進行內(nèi)核編譯:

          make zImage

          生成內(nèi)核zImage后下載到目標(biāo)板。在內(nèi)核編譯的過程中,還會出現(xiàn)許多錯誤,主要是C90語法錯誤、所調(diào)用函數(shù)數(shù)據(jù)類型不匹配、段符號未定義等問題。主要的修改內(nèi)容:

          ① 內(nèi)核編譯時若出現(xiàn)C90語法和C99語法錯誤,只需按照本編譯系統(tǒng)所采用的編譯標(biāo)準(zhǔn)進行語法修改。例如,/net/core/dev.c中函數(shù)“net_rx_action”的第1713~1729行提示有語法錯誤。其中,第1713行的錯誤按照C90語法修改即可消除,其他錯誤為所調(diào)用函數(shù)數(shù)據(jù)類型不匹配所致,修改所調(diào)用函數(shù)的數(shù)據(jù)類型即可。

          ② 出現(xiàn)提示“.data=no_cong_thresh”未定義之類的錯誤時,在相應(yīng)源碼中將其注釋即可。

          ③ Wireless_seq_show函數(shù)錯誤直接采用2.6.24版本替換2.6.12版本即可。

          ④ net_sysctl_strdup類錯誤和警告一定要消除,消除方法是替換neighbour.h文件及相關(guān)文件。

          2.4 USB無線網(wǎng)卡驅(qū)動編譯

          首先,下載主芯片Realtek 8188SU的最新驅(qū)動RTL8188SU_usb_linux_v2.6.6.0.20101111.zip,然后解壓進入相應(yīng)目錄修改config、Makefile文件。

          (1) 修改config

          [root@localhost 8188su]# gvim config

          修改第16行,關(guān)閉PC模式:

          16 CONFIG_PLATFORM_I386_PC=n

          修改第18行,打開ARM模式

          18 CONFIG_PLATFORM_ARM_S3C=y

          (2) 修改Makefile

          修改交叉編譯器和ARM內(nèi)核安裝目錄:

          [root@localhost 8188su]# gvim Makefile

          修改第94行為gcc交叉編譯器所在路徑:

          CROSS_COMPILE:=/usr/local/arm/3.4.1/bin/armlinux

          修改第95行,直接注釋掉以下語句:


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();