• «
  • 1
  • 2
  • 3
  • »
  • Pages: 1/3     Go
主题 : mini6410 linux2.6.36 SDIO wifi marvell 8686 模块驱动如何编译? 复制链接 | 浏览器收藏 | 打印
lgs
级别: 新手上路
UID: 38690
精华: 0
发帖: 21
金钱: 105 两
威望: 21 点
综合积分: 42 分
注册时间: 2011-02-28
最后登录: 2011-03-30
楼主  发表于: 2011-02-28 15:10

 mini6410 linux2.6.36 SDIO wifi marvell 8686 模块驱动如何编译?

友善之臂你好:
    当前使用贵司的mini6410加SDIO的wifi小板,在linux下可以正常工作。我看了kernel的编译选项,默认是没有编译wifi相关的模块代码,而是在rootfs中直接使用了相关的ko文件。现在经测试发现光盘中提供的wifi驱动,只能在station模式下工作,而不支持ad-hoc模式,所以打算自己编译。
    可是在将kernel中对应的模块编译后,载入模块时出现段错误,出错地方在wiphy_regiter中,应该是cfg80211的模块。
    刚刚进行了电话沟通,目前希望能提供以下信息:
    1. rootfs中提供的相关ko文件,是否是由对应提供的kernel中的对应代码直接编译获得?
    2. 如果客户自己编译获得相关ko文件,需要打开kernel的哪些编译选项?

    谢谢,希望尽快回复。
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
1楼  发表于: 2011-02-28 15:24
FriendlyARM 发布的内核好像是为了改进USB Wifi的支持,修改了kernel的Wifi的配置,之前有简单比较过,
问题1:20110112发布的版本不是kernel编译获得的,20110104发布的版本是kernel编译获得的
问题2:下载20110104的版本,看看kernel的配置就知道了

另外,如果使用20110104的版本编译获得了ko文件,那么需要删除rootfs中提供的ko文件,否则可能会冲突
lgs
级别: 新手上路
UID: 38690
精华: 0
发帖: 21
金钱: 105 两
威望: 21 点
综合积分: 42 分
注册时间: 2011-02-28
最后登录: 2011-03-30
2楼  发表于: 2011-03-01 03:42
谢谢911gt3的回答

我发现之前报错是因为lib80211和cfg80211的问题,后在20110112和20101115两个版本中编译获取了两份ko,5个模块详细如下
-rw-r--r-- 1 lgs lgs 2590649 2011-02-28 11:24 cfg80211.ko
-rw-r--r-- 1 lgs lgs   62080 2011-02-28 11:24 lib80211.ko
-rw-r--r-- 1 lgs lgs 1385525 2011-02-28 11:24 libertas.ko
-rw-r--r-- 1 lgs lgs  186496 2011-02-28 11:24 libertas_sdio.ko
-rw-r--r-- 1 lgs lgs 6020743 2011-02-28 11:24 mac80211.ko
替换原rootfs中的对应文件,insmod过程没有报错,使用qt的无线程序时,有两个问题:

1. 使用20110112版本获取的ko时,比如要手动加载lib80211,而20101125版本的ko库则可以自己加载。我看了rootfs中的module.dep,确实没有对lib80211的依赖关系,那么应该是qt的无线程序自己加载的lib802111,可为什么同一位置的20110112版本的就必须手动加载呢?

2. 正常加载过程后,设备却并不工作,表现为在qt程序中scan无效,而ifconfig可以看到wlan0,但iwconfig中没有,从打印来看感觉像是libertas_sdio的设备probe成功,却没有start一样。请教一下这个可能是哪方面问题?


qt程序启动的打印信息如下:(此为20110112版本ko,20101125版本的不用第一步modprobe)

[root@FriendlyARM /]# modprobe lib80211
lib80211: common routines for IEEE802.11 drivers

[root@FriendlyARM /]# Compat-wireless backport release: compat-wireless-2011-01-06
Backport based on linux-next.git next-20110111
cfg80211: Calling CRDA to update world regulatory domain
libertas_sdio: Libertas SDIO driver
libertas_sdio: Copyright Pierre Ossman
libertas: 70:f3:95:ec:44:cc, fw 9.70.3p36, cap 0x00000303
cfg80211: Calling CRDA for country: JP
libertas: wlan0: Marvell WLAN 802.11 adapter
usbcore: registered new interface driver ath9k_hif_usb
usbcore: registered new interface driver rt73usb
usbcore: registered new interface driver rt2800usb
usbcore: registered new interface driver zd1211rw

[root@FriendlyARM /]# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:90:90:90:90:90  
          inet addr:192.168.1.230  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:34 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2298 (2.2 KiB)  TX bytes:0 (0.0 B)
          Interrupt:108 Base address:0xe000

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr 70:F3:95:EC:44:CC  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

[root@FriendlyARM /]# iwconfig
lo        no wireless extensions.

eth0      no wireless extensions.

wlan0     no wireless extensions.
[ 此帖被lgs在2011-03-01 08:24重新编辑 ]
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
3楼  发表于: 2011-03-01 09:43
检查一下你的kernel配置,估计是没有选则WEXT (wireless extention)导致
lgs
级别: 新手上路
UID: 38690
精华: 0
发帖: 21
金钱: 105 两
威望: 21 点
综合积分: 42 分
注册时间: 2011-02-28
最后登录: 2011-03-30
4楼  发表于: 2011-03-01 09:45
在kernel不变的情况下,直接替换为rootfs中原有的这几个ko,是可以正常工作的。这么看来是不是和kernel没关系呢?

还是说还有其他的依赖库?
lgs
级别: 新手上路
UID: 38690
精华: 0
发帖: 21
金钱: 105 两
威望: 21 点
综合积分: 42 分
注册时间: 2011-02-28
最后登录: 2011-03-30
5楼  发表于: 2011-03-01 09:49
cfg80211 wireless extensions compatibility
编译时是选中的,刚确认过
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
6楼  发表于: 2011-03-01 10:37
替换.ko时,是全部还是只是其中几个?如果只是其中几个,则很有可能会出问题
lgs
级别: 新手上路
UID: 38690
精华: 0
发帖: 21
金钱: 105 两
威望: 21 点
综合积分: 42 分
注册时间: 2011-02-28
最后登录: 2011-03-30
7楼  发表于: 2011-03-01 10:50
在刚发这个帖子的时候,只替换了libertas和libertas_sdio,所以出现了加载时段错误

您第一次回复之后,我已经把列出的这5个ko全部用20110112版本编译出来,然后替换rootfs中的对应文件
唯一保持的是firmware.bin,因为这个并不在kernel中,不过从打印看来都是一个版本

1. 是否这5个库是所有需要的ko呢?
2. 我打开所有的打印,发现出错是因为发命令给firmware扫描,而firmware回复没有搜到(貌似是命令0010或者0018来着,忘记了),您有什么建议吗?

谢谢
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
8楼  发表于: 2011-03-01 11:04
看2楼的调试信息,还是用了原rootfs中的ko,所以,你把整个/lib/modules/2.6.36*删除
再到kernel目录,make INSTALL_MOD_PATH=/tmp/mini6410-modules modules_install
获得ko,放到rootfs
lgs
级别: 新手上路
UID: 38690
精华: 0
发帖: 21
金钱: 105 两
威望: 21 点
综合积分: 42 分
注册时间: 2011-02-28
最后登录: 2011-03-30
9楼  发表于: 2011-03-01 12:35
列出来的5个ko,应该是新的,因为都是自己编完之后替换的,我看过文件时间

不过最底层有一个叫compat.ko的库,第一行打印应该就是它的,我没找到它代码在哪,这个是不是也会有问题呀?方便的话能告诉我位置吗
  • «
  • 1
  • 2
  • 3
  • »
  • Pages: 1/3     Go