CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 19448|回复: 10

CubieBoard 安装 Fedora 的 8188eu 驱动 编译血泪史

[复制链接]
回帖奖励 5 金钱 回复本帖可获得 5 金钱奖励! 每人限 1 次(中奖概率 40%)
发表于 2013-5-28 23:37:33 | 显示全部楼层 |阅读模式
之前提问帖子是http://forum.cubietech.com/forum.php?mod=viewthread&tid=511,超版想看错误信息,于是我又另起新帖,希望能在这个帖子中解决这个问题,至少能救了一大堆想在Fedora安装淘宝官方提供的牛逼水星wifi驱动

血泪史如下:
首先通过该牛人弄得https://fedoraproject.org/wiki/Architectures/ARM/AllwinerA10把fedora装到TF卡中然后正常运行没任何问题
#uname -a
#Linux localhost.localdomain 3.4.29.sun4i #21 Sat Feb 16 18:18:25 CET 2013 armv7l armv7l armv7l GNU/Linux

于是从https://github.com/mmplayer/linux-sunxi中下载了sunxi-3.4的源码传到板子上的fedora中:
#/home/psyduck/linux-sunxi-sunxi-3.4.zip
解压(如果不把两个标准输出信息扔到/dev/null中,TTL线用SecureCRT连接然后直接unzip竟然能让我的win8崩溃重启!已经不下快10次了!!!)
#unzip linux-sunxi-sunxi-3.4.zip > /dev/null 2>&1 &
解压后路径为
#/home/psyduck/linux-sunxi-sunxi-3.4
#cd /home/psyduck/linux-sunxi-sunxi-3.4
以下参考该帖
#make mrproper
#make sun4i_defconfig
#make prepare
#make modules_prepare

#cd drivers/net/wireless/rtl8188eu/
#CONFIG_RTL8188EU=m make -C /home/psyduck/linux-sunxi-sunxi-3.4 M=`pwd`
最后报错
#...........usb_intf.c:1140:29: fatal error: mach/sys_config.h: No such file or directory compilation terminated
将usb_intf.c中的mach改为plat重新编译,不出意外的话应该生成8188eu.ko驱动
但是depmod -a && modprobe 8188eu报错:
#[ 4202.590000] 8188eu: version magic '3.4.29 preempt mod_unload modversions ARMv7 p2v8 ' should be '3.4.29.sun4i mod_unload ARMv7 p2v8 'ERROR: could not insert '8188eu': Exec format error

#modinfo 8188eu.ko
filename:       /home/psyduck/linux-sunxi-sunxi-3.4/drivers/net/wireless/rtl8188eu/8188eu.ko
version:        v4.1.2_4787.20120803
author:         Realtek Semiconductor Corp.
description:    Realtek Wireless Lan Driver
license:        GPL
srcversion:     43413332785027284FC989C
alias:          usb:v0BDAp8179d*dc*dsc*dp*ic*isc*ip*
depends:        
vermagic:       3.4.29 preempt mod_unload modversions ARMv7 p2v8
parm:           rtw_ips_mode:The default IPS mode (int)
parm:           ifname:charp
parm:           rtw_initmac:charp
parm:           rtw_channel_plan:int
parm:           rtw_chip_version:int
parm:           rtw_rfintfs:int
parm:           rtw_lbkmode:int
parm:           rtw_network_mode:int
parm:           rtw_channel:int
parm:           rtw_mp_mode:int
parm:           rtw_wmm_enable:int
parm:           rtw_vrtl_carrier_sense:int
parm:           rtw_vcs_type:int
parm:           rtw_busy_thresh:int
parm:           rtw_ht_enable:int
parm:           rtw_cbw40_enable:int
parm:           rtw_ampdu_enable:int
parm:           rtw_rx_stbc:int
parm:           rtw_ampdu_amsdu:int
parm:           rtw_lowrate_two_xmit:int
parm:           rtw_rf_config:int
parm:           rtw_power_mgnt:int
parm:           rtw_smart_ps:int
parm:           rtw_low_power:int
parm:           rtw_wifi_spec:int
parm:           rtw_antdiv_cfg:int
parm:           rtw_antdiv_type:int
parm:           rtw_enusbss:int
parm:           rtw_hwpdn_mode:int
parm:           rtw_hwpwrp_detect:int
parm:           rtw_hw_wps_pbc:int
parm:           rtw_max_roaming_times:The max roaming times to try (uint)
parm:           rtw_mc2u_disable:int

于是想到用fedora自己当前的kernel源码进行如上编译应该可以
#make clean
#yum install kernel-develop
#CONFIG_RTL8188EU=m make -C /usr/src/kernels/3.9.3-201.fc18.armv7hl M=`pwd`
报错:
make: Entering directory `/usr/src/kernels/3.9.3-201.fc18.armv7hl'
  LD      /home/psyduck/linux-sunxi-sunxi-3.4/drivers/net/wireless/rtl8188eu/built-in.o
  CC [M]  /home/psyduck/linux-sunxi-sunxi-3.4/drivers/net/wireless/rtl8188eu/core/rtw_cmd.o
In file included from /home/psyduck/linux-sunxi-sunxi-3.4/drivers/net/wireless/rtl8188eu/core/rtw_cmd.c:23:0:
/home/psyduck/linux-sunxi-sunxi-3.4/drivers/net/wireless/rtl8188eu/include/osdep_service.h: In function ‘thread_enter’:
/home/psyduck/linux-sunxi-sunxi-3.4/drivers/net/wireless/rtl8188eu/include/osdep_service.h:1397:2: error: implicit declaration of function ‘daemonize’ [-Werror=implicit-function-declaration]
cc1: some warnings being treated as errors
make[1]: *** [/home/psyduck/linux-sunxi-sunxi-3.4/drivers/net/wireless/rtl8188eu/core/rtw_cmd.o] Error 1
make: *** [_module_/home/psyduck/linux-sunxi-sunxi-3.4/drivers/net/wireless/rtl8188eu] Error 2
make: Leaving directory `/usr/src/kernels/3.9.3-201.fc18.armv7hl'
将sunxi4i的rtl8188eu驱动源码拷入系统kernel源码中再试
#cp -r /home/psyduck/linux-sunxi-sunxi-3.4/drivers/net/wireless/rtl8188eu /usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/net/wireless/
#cd /usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/net/wireless/rtl8188eu
#CONFIG_RTL8188EU=m make -C /usr/src/kernels/3.9.3-201.fc18.armv7hl M=`pwd`
报了一样的错:
make: Entering directory `/usr/src/kernels/3.9.3-201.fc18.armv7hl'
  LD      /usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/net/wireless/rtl8188eu/built-in.o
  CC [M]  /usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/net/wireless/rtl8188eu/core/rtw_cmd.o
In file included from /usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/net/wireless/rtl8188eu/core/rtw_cmd.c:23:0:
/usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/net/wireless/rtl8188eu/include/osdep_service.h: In function ‘thread_enter’:
/usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/net/wireless/rtl8188eu/include/osdep_service.h:1397:2: error: implicit declaration of function ‘daemonize’ [-Werror=implicit-function-declaration]
cc1: some warnings being treated as errors
make[1]: *** [/usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/net/wireless/rtl8188eu/core/rtw_cmd.o] Error 1
make: *** [_module_/usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/net/wireless/rtl8188eu] Error 2
make: Leaving directory `/usr/src/kernels/3.9.3-201.fc18.armv7hl'

重新初始一下内核:
#cd /usr/src/kernels/3.9.3-201.fc18.armv7hl
#make mrproper
报错:
scripts/Makefile.clean:17: /usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/infiniband/hw/amso1100/Makefile: No such file or directory
make[3]: *** No rule to make target `/usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/infiniband/hw/amso1100/Makefile'.  Stop.
make[2]: *** [drivers/infiniband/hw/amso1100] Error 2
make[1]: *** [drivers/infiniband] Error 2
make: *** [_clean_drivers] Error 2

各种尝试以失败告终,希望有牛人给个解决方案
回复

使用道具 举报

发表于 2013-5-29 12:42:19 | 显示全部楼层

回帖奖励 +5 金钱

先把内核完整编译一遍,无误后再编译驱动试试。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 13:19:10 | 显示全部楼层
swn1012 发表于 2013-5-29 12:42
先把内核完整编译一遍,无误后再编译驱动试试。

恩 的确
不过sunxi-3.4我真试了 一样的错误
而fedora用yum install kernel-devel的内核根本没法编译,上面也提到了
回复 支持 反对

使用道具 举报

发表于 2013-5-29 18:40:16 | 显示全部楼层
sunxi 3.4是3.4的kernel,你下的fedora的kernel是3.9的,应该编不过去。
在第一步得到8188eu.ko后,modprobe出错后,用dmesg看一下出错信息,贴出来。
也可以用modprobe -f 8188eu.ko试一下,可能还是kernel的版本信息不一致导致的。

正常的编译过程是要先编译内核,得到Module.symvers文件,再编译驱动,以使版本信息一致,模块才可以装入。



回复 支持 反对

使用道具 举报

发表于 2013-5-29 20:18:21 | 显示全部楼层

回帖奖励 +5 金钱

添加编译项需要修改当前目录以及上一层目录下的Makefile,kconfig。
还有交叉编译环境有没有问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 21:47:18 | 显示全部楼层
siriux 发表于 2013-5-29 20:18
添加编译项需要修改当前目录以及上一层目录下的Makefile,kconfig。
还有交叉编译环境有没有问题。 ...

怎么改 求教~
我上面的操作都是在板子上用ttl线直接ssh操作的,应该不用什么交叉吧
回复 支持 反对

使用道具 举报

发表于 2013-5-29 21:57:31 | 显示全部楼层
求中奖
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 23:07:56 | 显示全部楼层
udoo 发表于 2013-5-29 18:40
sunxi 3.4是3.4的kernel,你下的fedora的kernel是3.9的,应该编不过去。
在第一步得到8188eu.ko后,modprob ...

关键yum安装的3.9的竟然没法编译,回头我看看sunxi的有没有3.9的
回复 支持 反对

使用道具 举报

发表于 2013-5-29 23:40:55 | 显示全部楼层
daemonize在高版本内核中被去掉了,你可以用lxr看看。
回复 支持 反对

使用道具 举报

发表于 2014-5-8 12:45:14 | 显示全部楼层

回帖奖励 +5 金钱

标记下,以后需要
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2022-12-4 10:54 , Processed in 0.021614 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部