1. 程式人生 > >Zedboard移植USB無線網絡卡驅動心得

Zedboard移植USB無線網絡卡驅動心得

最近因為需要,要在Zedboard上移植一個無線網絡卡驅動,因為以前在友善之臂上面移植過,所以以為很簡單,沒想到這件事情卻花了我將近一週才搞好,中間就因為核心的一個小的疏忽,特在此將中間遇到的問題寫下來,留作以後謹記。

開發板:Zynq Zedboard
作業系統:Ubuntu 12,04
交叉編譯器:arm-Xilinx-linux-gnueabi gcc
WIFI 模組:TP-LINK TL-WN725N 2.0

移植步驟與友善之臂類似,難點主要是在編譯核心那塊,我在編譯核心的時候的出現了各種各樣的錯誤:error: unknown field 'private' specified in initializer; drivers/usb/host/ehci-hcd.c:1436:2:#error "missing bus glue for ehci-hcd" 

我剛開始是按照這些錯誤來改,結果發現怎麼編譯都無法通過,最後才發現是我在配置核心的時候有問題,配置核心我們一般使用的是make menuconfig,但是這個命令預設的是i386的,也就是配的是X86上面的,自然當我們用交叉編譯器編譯的時候會出現各種問題,正確的做法應該是指定編譯ARM核心。即make ARCH=arm menuconfig。在進入配置頁面的時候可以看看是不是留意是不是進入的ARM的,如下所示,

可以看到這個配置就是arm的,儲存退出。

然後用交叉編譯器編譯網絡卡驅動,注意,一定要用同一個交叉編譯器編譯,編譯過程中可能會出現error:'struct net_device' has no member named 'wireless_handlers'。出現這個錯誤的原因是因為

WIRELESS_EXT沒有選上,而要選上這個選項,我們需要勾選Device Drivers -> Network device support -> Wireless LAN裡面的IEEEE802.11 for Host Ap(Prism2/2.5/3 and WEP/TKIP/CCMP) 。重新編譯,然後其他其他步驟類似友善之臂,當可以看到wlan0的時候,恭喜,已經成功了!