pcduino_arm_rtl8187L 驅動安裝編譯過程

pcduino_arm_rtl8187L

驅動安裝編譯過程


1.準備環境(直接在pcduinov2上進行的命令操作)

1.#sudo apt-get update && sudo apt-get installpcduino-linux-headers-3.4.29+

2.#cd /lib/modules/3.4.29+

3.#ln -s /usr/src/linux-headers-3.4.29+/ build

4.#ln -s /usr/src/linux-headers-3.4.29+/ source

2.準備源文件

rtl8187L_linux_1041[1].0209.2012.tar.gz

下載地址:ftp://WebUser:[email protected]/cn/wlan/rtl8187L_linux_1041[1].0209.2012.tar.gz

3.編譯

1#tar vxzf rtl8187L_linux_1041[1].0209.2012.tar.gz

2#cd rtl8187L_linux_1041[1].0209.2012

3#make

錯誤1:

gcc:error: -msoft-float and -mhard_float may not be used together

解決方法:

如果出現編譯錯誤,說是編譯器無法同時使用soft浮點運算和hard浮點運算,這個是編譯器版本問題,可以分別在/ieee80211/Makefile和/rtl8187/Makefile中註釋掉:

EXTRA_CFLAGS += -mhard-float-DCONFIG_FORCE_HARD_FLOAT=y

修改爲:

#EXTRA_CFLAGS += -mhard-float-DCONFIG_FORCE_HARD_FLOAT=y

錯誤2:

/home/ubuntu/weiruming/rtl8187L_linux_1041.0209.2012/rtl8187/r8180_pm.c:36:5:error: conflicting types for ‘rtl8180_save_state’

/home/ubuntu/weiruming/rtl8187L_linux_1041.0209.2012/rtl8187/r8180_pm.h:34:5:note: previous declaration of ‘rtl8180_save_state’ was here

/home/ubuntu/weiruming/rtl8187L_linux_1041.0209.2012/rtl8187/r8180_pm.c:97:5:error: conflicting types for ‘rtl8180_enable_wake’

/home/ubuntu/weiruming/rtl8187L_linux_1041.0209.2012/rtl8187/r8180_pm.h:37:5:note: previous declaration of ‘rtl8180_enable_wake’

解決方法:

該錯誤說.h頭文件和.c文件裏面的兩個函數有衝突,C語言不是先在頭文件裏面定義,然後在c文件裏面包含頭文件,然後對函數進行實現嗎?爲什麼這裏,這兩個函數會報錯?是不是編譯器的問題,沒有搞懂,我解決的方法是先把.h文件裏面的定義給註釋掉了,想不到這樣也可以。如下:


wKiom1NXVA6jpGTyAAEsy03kAvc692.jpg

改爲:

wKioL1NXU-TRPIHmAAEP2r71ZJw742.jpg

錯誤3:

 Building modules, stage 2.

 MODPOST 1 modules

WARNING:

"__aeabi_f2d"

[/home/ubuntu/weiruming/rtl8187L_linux_1041.0209.2012/rtl8187/r8187l.ko]undefined!

WARNING:

"__aeabi_d2uiz"

[/home/ubuntu/weiruming/rtl8187L_linux_1041.0209.2012/rtl8187/r8187l.ko]undefined!

WARNING:

"__aeabi_i2d"

[/home/ubuntu/weiruming/rtl8187L_linux_1041.0209.2012/rtl8187/r8187l.ko]undefined!

WARNING:

"__aeabi_dsub"

[/home/ubuntu/weiruming/rtl8187L_linux_1041.0209.2012/rtl8187/r8187l.ko]undefined!

WARNING:

"__aeabi_dadd"

[/home/ubuntu/weiruming/rtl8187L_linux_1041.0209.2012/rtl8187/r8187l.ko]undefined!

WARNING:

"__aeabi_fadd"

[/home/ubuntu/weiruming/rtl8187L_linux_1041.0209.2012/rtl8187/r8187l.ko]undefined!

提示警告,有幾個函數沒有定義。這個是因爲前面我們註釋掉了浮點數,說明編譯器不支持浮點類型,同樣內核也不支持,所以內核裏沒有相關函數編譯器提示沒找到,這個影響後面的安裝,在insmod模塊的時候會提示:

insmod: can't insert '/lib/r8187l.ko': unknownsymbol in module or invalid parameter

解決方法:

在相應的r8187_cort.c源代碼後面添上以下函數,在重新編譯,就沒問題了。

void__aeabi_fadd(void){}

void__aeabi_dadd(void){}

void__aeabi_dsub(void){}

void__aeabi_i2d(void){}

void__aeabi_d2uiz(void){}

void__aeabi_f2d(void){}

如下:

wKioL1NXVDjhXeTYAAFnZRy-hWY492.jpg

4.安裝驅動模塊

  1#cd rtl1817/

  2#ls

wKiom1NXVHKCSC_7AAFzAsJ_T68691.jpg


可見上圖生成了r8187.ko驅動內核模塊。

  3#insmod r8187.ko

  4#lsmod

wKioL1NXVHyBHWdlAADs0gjpUjk121.jpg

spacer.gif

如上圖顯示,模塊成功安裝。

5.配置網絡

wKioL1NXVI7hBvvWAATdozEPf6o160.jpg

可以到圖形界面進行配置。


更多資訊,請點擊:華萬微信圖文


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