qf9700 USB網卡在x86 linux和arm linux上的驅動安裝以及配置

來源:互聯網
上載者:User

最近要在一塊老闆子上面移植openwrt,需要擴充網口,於是選擇了qf9700這款USB網卡,附贈的光碟片裡面有提供在linux下面安裝的驅動原始碼,所以我們要自己編譯驅動原始碼產生核心載入模組,載入模組成功後才能正常使用網卡。下面介紹一下qf9700在x86和arm上的驅動的安裝和配置。

x86(使用ubuntu10.04):

       1.首先要確認使用的linux的核心的版本號碼,在終端裡面輸入 uname -r 獲得。

       2.下載與你目前使用的核心版本一致的原始碼, 可以到這個連結處下載http://www.kernel.org/,在ubuntu裡面有個簡便的操作方式,sudo apt-get install linux-source,下載到的原始碼儲存在/usr/src/下。

       3.擷取目前你所使用核心的設定檔config-2.6.xx-xx-generic,該檔案儲存在/boot檔案夾下(xx是它的小版本號碼)。

       4.進入到/usr/src/下,解壓縮linux核心原始碼,拷貝設定檔到解壓縮後的核心原始碼樹根目錄裡面,這幾步操作的命令如下:tar zxvf linux-xxx.tar.gz -C /home/linux  ,cp /boot/config-2.6.xx-xx-generic  /home/linux/.config。

5.進入解壓縮獲得的linux核心樹檔案夾下編譯,命令如下:cd /home/linux && make,然後進入漫長的編譯等待時間。

       

 ************************************************************************************************************************************************************     

        以上屬於通用的編譯核心的過程,有基礎的兄弟們可以略過,下面幾步很重要。

        6.待核心編譯完成後,解壓縮驅動的原始碼,修改裡面MAKEFILE,有關路徑的操作和前面步驟的論述保持一致:

        KERNEL_DIR := /home/linux/
        MODULE_NAME := qf9700
        obj-m := $(MODULE_NAME).o

            all: 
            @echo "Building QF9700 USB2NET chip driver..."
            @(cd $(KERNEL_DIR) && make -C $(KERNEL_DIR) SUBDIRS=$(PWD) CROSS_COMPILE=$(CROSS_COMPILE) modules)

            clean:
            -rm -f *.o *.ko .*.cmd .*.flags .mii.mod.o.d *.mod.c Module.symvers Module.markers modules.order version.h
            -rm -rf .tmp_versions

         7.修改MAKEFILE確認無誤後,make

         在x86上面編譯沒有錯誤的提示,有關在arm平台上面的錯誤我會在後面描述,編譯產生的qf9700.ko檔案就是我們需要的核心模組。

         

         8.這是比較重要的一步,使用USB網卡對核心的usbnet和mii模組有依賴關係,所以在載入qf9700.ko模組之前要確認usbnet.ko和mii.ko模組已經載入到了核心之中,可以使用lsmod |grep -e usbnet -e mii這一命令查詢,在確認到兩個模組已經成功載入後,調用命令  insmod qf9700.ko 載入qf9700.ko。

         9.最後一步,調用命令  cat /var/log/syslog  | grep -e usb -e qf9700 來確認添加的usb網卡的裝置名稱,一般情況是你現在使用網卡名的編號加1,如你現在的網卡是eth0,那麼新添加的網卡就是eth1。調用ifconfig命令啟動,配置網卡,至此USB網卡可以正常使用。 

          

          arm(使用s3c2410)

          1~6,和x86的核心編譯過程基本一致,需要注意的是要修改linux核心樹下的MAKEFILE檔案和qf9700驅動的MAKEFILE檔案以支援交叉編譯器。

           7.在編譯qf9700的驅動時候會提示有__udelay()_的錯誤,查閱資料得知,arm不支援udelay()裡面的參數大於2000的情況,需要修改qf9700.c裡面的幾句,把udelay(20*1000)改為mdelay(20),udelay(2*1000)改為mdelay(2)即可成功編譯。

           8.載入核心模組的操作也是相同的,但是和x86不同的是完成模組的載入後,並沒有找到對應的網卡裝置,調用dmesg命令後,發現如下代碼:

           usb 1-2: new full speed USB device using qf9700 and address 3

           usb 1-2: rejected 1 configuration due to insufficient available bus-power

           usb 1-2: no configuration chosen from 1 choice 

           說明由於USB介面電流不足不能使USB網卡正常配置,可以調用下面命令

          echo -n 1 > /sys/bus/usb/devices/1-2/bConfigurationValue  裝置ID和你在dmesg下查看到的要保證一致(紅色標註的)

          9.上述操作完成後,調用ifconfig命令啟動配置USB網口後,就可以在arm板上使用了。

參考連結:

http://mquin.livejournal.com/178482.html

http://ubuntuforums.org/showthread.php?p=11104624

http://www.linuxquestions.org/questions/linux-newbie-8/usb-insufficient-available-bus-power-764463/ 
 

http://blog.chinaunix.net/space.php?uid=11391497&do=blog&id=1988854       

http://hi.baidu.com/fwmf/blog/item/e380ad0e6662c1eb37d1223e.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.