RTL8188 Linux驅動移植

折騰了好幾天,系統的Wifi總算是跑起來了。

總結下來,剛開始應該犯了好多系統性的錯誤。例如,以爲在menuconfig中,將RTL8188對應的選項選中,就可以了,但是後來才知道事實並非如此。主要還是由單片機背景進入Linux開發,有好多不太適應的地方,也有一些思維定勢的地方。這些都是需要在後面開發的過程中,需要注意的。好了,言歸正傳,這裏主要是參考瞭如下的兩個鏈接:

http://bbs.cecport.com/thread-655-1-1.html    //講述的是如何編譯驅動

https://www.cnblogs.com/lifexy/p/10180653.html   //講述的是如何使用wifi,例如SSID掃描等操作。

這裏也介紹一下背景,目前開發硬件是採用外購核心板+自己做底板的方式操作的。核心板,目前購買的是深圳米爾的,使用的是i.mx6的平臺。底板是根據公司的需求,部分參考開發板,自行選擇的物料並設計的板子。官方的開發板,使用了環旭的一款SIP wifi模塊,功能強大,就是貴了一些,因此就沒采用。最後有關編譯的具體步驟,請參考如下:

1.從模塊廠商那邊拿到模塊的Linux驅動源代碼。rtl8188FU_linux_v5.3.0.1_28034.20180525,並解壓。我是從模塊供應商那邊拿到的,如有需要也可以向我要。

源碼下載鏈接如下:https://download.csdn.net/download/efm32/11916277

2.將解壓縮出來的源代碼文件夾,放入到內核根目錄下面。這裏有個概念,對於我來講,其實不太理解,什麼叫內核根目錄。Ubuntu的內核根目錄嗎?還是什麼目錄。單純看字面意思,比較費解。於是我嘗試着,將rtl8188FU_linux_v5.3.0.1_28034.20180525放到了MYiR的/home/zero/MYD-Y6ULX-devel/04-Source/MYiR-iMX-Linux/ 路徑下,另外覺得文件夾名字太長,就改短了點,因此整個文件夾路徑如下:/home/zero/MYD-Y6ULX-devel/04-Source/MYiR-iMX-Linux/rtl8188FU

3.修改rtl8188驅動包內的Makefile文件,編譯環境採用MYiR的poky編譯器,目錄是MYiR的內核目錄:

CONFIG_RTL8188E = y 選在爲rtl8188
CONFIG_USB_HCI = y 選爲USB模式
CONFIG_PLATFORM_FS_MX61 = y 增加IMX6配置文件

修改Makefile文件裏的環境變量:

ifeq ($(CONFIG_PLATFORM_FS_MX61), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := arm-poky-linux-gnueabi-
KSRC ?= /home/zero/MYD-Y6ULX-devel/04-Source/MYiR-iMX-Linux
endif

交叉編譯器設置爲米爾的poky,路徑設置爲MYiR的kernel目錄

4.另外,還可以設置.ko檔是否開啓調試信息,以及調試信息的詳細等級。

########################## Debug ###########################
CONFIG_RTW_DEBUG = y
# default log level is _DRV_INFO_ = 4,
# please refer to "How_to_set_driver_debug_log_level.doc" to set the available level.
CONFIG_RTW_LOG_LEVEL = 2  //具體每個等級,可以自行搜索查看

5.加載MYiR的poky編譯環境,然後make文件。如果沒問題的話,編譯產生8188fu.ko

6.將編譯完成的8188fu.ko,copy到U盤裏,然後使用

mount /dev/sda /mnt
cp 8188fu.ko /home/root
cd /home/root
insmod 8188fu.ko

如果載入成功的話,應該能夠看到很多8188的log,然後使用

ifconfig wlan0 up

啓動wifi功能。然後看是否能夠正常啓動。

7.如果能夠正常啓動,則就可以執行後續的操作了。

wpa_passphrase "Zero" >> wifi.conf   //生成wifi配置文件
xxxxx //輸入密碼
root@myd-y6ull14x14:~# wpa_supplicant -D wext -B -i wlan0 -c wifi.conf    //連接路由器
udhcpc -b -i wlan0 -R    //dhcp IP地址

這裏不得不吐槽一句話:如果順利的話,如果正常的話,make順利的話。多數時間都是不順利的,好不好。。另外,我也隱約感受到,爲什麼linux開發的工程師,寫的文章都比較簡約了,我猜他們可能也沒那麼多時間去寫完整的筆記,去教剛入行的小菜鳥吧。

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