Linux RTL81xx系列無線網卡移植

Linux平臺 RTL81xx系列無線網卡驅動移植

平臺配置

  1. PC系統:Ubuntu18.04
  2. 移植目標平臺:NUC980
  3. 內核版本:Linux4.4
  4. 驅動版本:本文使用RTL8188EUS網卡驅動,接口爲USB類型
    驅動源碼參考:https://download.csdn.net/download/qq_29729577/11986400

內核基本配置

我們編譯所使用的defconfig文件中,需要打開Network與Wireless相關配置,或者直接在make menuconfig的菜單中直接配置,這裏不做詳細說明
需要注意的是,驅動與上次應用的通信接口分兩種:WEXT與NL80211,在使用wpa_supplicant時需要決定用哪種方式與內核通信,這裏我們將其全部打開,爲了保險起見,我打開了如下配置:

CONFIG_WIRELESS_EXT=y
CONFIG_WEXT_CORE=y
CONFIG_WEXT_PROC=y
CONFIG_WEXT_SPY=y
CONFIG_WEXT_PRIV=y
CONFIG_CFG80211=y
CONFIG_CFG80211_WEXT=y
CONFIG_RFKILL=y

RTL8188EUS驅動移植

  1. 源碼解壓到內核指定目錄並重命名爲rtl8188eu:
    對於移植的驅動可以都放在 drivers/staging/這個暫存目錄
    我的源碼中該目錄下已經存在rtl8188,因此我解壓到的目錄爲drivers/net/wireless/
  2. 修改Kconfig和MakeFile:
    drivers/net/wireless/Kconfig中添加:
    source "drivers/net/wireless/rtl8188eu/Kconfig"
    
    drivers/net/wireless/Makefile中添加:
    obj-$(CONFIG_RTL8188EU) += rtl8188eu/
    
    同時在我們編譯所用到的defconfig中添加:
    CONFIG_RTL8188EU=m
    
  3. 修改源碼目錄內容:
    進入源碼目錄,確認Kconfig如下:
    config RTL8188EU
     	tristate "Realtek 8188E USB WiFi"
        depends on USB
        ---help---
        Help message of RTL8188EU
    
    修改Makefile:
    CONFIG_PLATFORM_I386_PC = n	// 刪除默認配置
    CONFIG_PLATFORM_NUC980 = y  // 添加我們的配置
    
    根據添加的平臺CONFIG_PLATFORM_NUC980 做進一步配置:
    ifeq ($(CONFIG_PLATFORM_NUC980), y)
    EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
    EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
    EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE	// 同時支持AP+STA模式(會產生2個網卡接口wlan0和wlan1)
    ARCH := arm
    CROSS_COMPILE := /usr/local/arm_linux_4.8/bin/arm-linux-		// 交叉編譯工具路徑
    KVER := 4.4
    KSRC ?= ../../../../../linux-4.4.y/						// 源碼根目錄
    MODULE_NAME := 8188eus									// 編譯出的模塊名稱
    endif
    

至此,可以進行make編譯操作

模塊加載

我們編譯後會在drivers/net/wireless/rtl8188eu/目錄下生成8188eus.ko模塊
將其放置目標板中使用insmod命令加載即可
若模塊加載成功,使用ifconfig -a指令可以看到網卡信息,形如:

wlan0     Link encap:Ethernet  HWaddr 34:20:03:02:0D:98  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan1     Link encap:Ethernet  HWaddr 36:20:03:02:0D:98  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Wifi網絡的連接

請參考後續的文章,關於wpa_supplicant與hostapd的移植和使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章