免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5562 | 回复: 16
打印 上一主题 下一主题

无线网卡编译的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-04 12:58 |只看该作者 |倒序浏览
错误提示:
[root@localhost RT25USB-SRC-V2.0.8.0]# make
make -C /root/2.6.22 SUBDIRS=/root/RT25USB-SRC-V2.0.8.0 modules
make[1]: Entering directory `/root/2.6.22'
  CC [M]  /root/RT25USB-SRC-V2.0.8.0/rtusb_main.o
/root/RT25USB-SRC-V2.0.8.0/rtusb_main.c: In function 'CMDHandler':
/root/RT25USB-SRC-V2.0.8.0/rtusb_main.c:1079: warning: unused variable 'pkey'
/root/RT25USB-SRC-V2.0.8.0/rtusb_main.c:1078: warning: unused variable 'i'
/root/RT25USB-SRC-V2.0.8.0/rtusb_main.c: In function 'usb_rtusb_probe':
/root/RT25USB-SRC-V2.0.8.0/rtusb_main.c:1807: error: 'dev_base' undeclared (first use in this function)
/root/RT25USB-SRC-V2.0.8.0/rtusb_main.c:1807: error: (Each undeclared identifier is reported only once
/root/RT25USB-SRC-V2.0.8.0/rtusb_main.c:1807: error: for each function it appears in.)
/root/RT25USB-SRC-V2.0.8.0/rtusb_main.c:1807: error: 'struct net_device' has no member named 'next'
make[2]: *** [/root/RT25USB-SRC-V2.0.8.0/rtusb_main.o] 错误 1
make[1]: *** [_module_/root/RT25USB-SRC-V2.0.8.0] 错误 2
make[1]: Leaving directory `/root/2.6.22'
make: *** [all] 错误 2
[root@localhost RT25USB-SRC-V2.0.8.0]#

开发环境描述:
REDHAT AS5.1 内核版本:2.6.18-53.el5-i686'
交叉编译器环境:
Gcc 4.2.1 glibc 2.6.1
目标板内核:
2.6.22
无线网卡芯片RT2571

论坛徽章:
0
2 [报告]
发表于 2008-11-04 12:59 |只看该作者

驱动的makfile

CC = /home/arm/toolchains/bin/arm-s3c2410-linux-gnueabi-gcc
LD = /home/arm/toolchains/bin/arm-s3c2410-linux-gnueabi-ld


ARCH = arm
CROSS_COMPILE = /home/arm/toolchains/bin/arm-s3c2410-linux-gnueabi-

WFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs

## Comment/uncomment the following line to enable/disable debugging
#CFLAGS += -DDBG

CFLAGS += $(WFLAGS) -fsigned-char

obj-m := rt2570.o

rt2570-objs :=  rtusb_main.o  mlme.o rtusb_bulk.o connect.o sync.o rtusb_init.o rtmp_tkip.o wpa.o rtmp_wep.o rtusb_info.o assoc.o auth.o auth_rsp.o md5.o rtusb_io.o sanity.o rtusb_data.o

#KDIR:=/root/linux-2.6.24
KDIR:=/root/2.6.22
#KERNEL_SRC:=/root/linux-2.6.24
KERNEL_SRC:=/root/2.6.22

MODULE_NAME:=rt2570

PATCHLEVEL:=6

ND_CONF=/etc/sysconfig/network-scripts/ifcfg-rausb0

ifdef NDDIR
        NDDIR := $(NDDIR)
else
        NDDIR := /etc/sysconfig/network-scripts
endif

ifdef MOD_CONF
        MOD_CONF := $(MOD_CONF)       
else
        MOD_CONF := /etc/modprobe.conf
endif

all:
        make -C $(KERNEL_SRC) SUBDIRS=$(shell pwd) modules

#clean:
#        rm -rf *.o *~ .*.cmd *.ko *.mod.c .tmp_versions built-in.o

[ 本帖最后由 dreamice 于 2008-11-4 13:02 编辑 ]

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
3 [报告]
发表于 2008-11-04 13:00 |只看该作者

回复 #1 finalfantasy000 的帖子

能否把你的rtusb_main.c程序贴出来?开发环境内核版本和目标内核版本不一致,这个可能是版本差异引起的错误。

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
4 [报告]
发表于 2008-11-04 13:01 |只看该作者

回复 #2 finalfantasy000 的帖子

Makefile看起来应该不存在问题。

论坛徽章:
0
5 [报告]
发表于 2008-11-04 13:12 |只看该作者

简略信息

头部包括的那些7788
#include "rt_config.h"

unsigned long flagg;
ULONG        RTDebugLevel = RT_DEBUG_TRACE;

#define KERNEL_20424        0x20418
#define KERNEL_20418        0x20412

/* Kernel thread and vars, which handles packets that are completed. Only
* packets that have a "complete" function are sent here. This way, the
* completion is run out of kernel context, and doesn't block the rest of
* the stack. */
static int mlme_kill;
static int RTUSBCmd_kill;

1803~1820行,就是出错的地方
                for (i = 0; i < 8; i++)

                {

                        sprintf(slot_name, "rausb%d", i);

                       

                        for (device = dev_base; device != NULL; device = device->next)

                        {

                                if (strncmp(device->name, slot_name, 4) == 0)

                                {

                                        break;

                                }

                        }

                        if(device == NULL)        break;

                }

                if(i == 8)

                {

                        DBGPRINT(RT_DEBUG_ERROR, "No available slot name\n");

                        return res;

                }

[ 本帖最后由 dreamice 于 2008-11-4 13:13 编辑 ]

rtusb_main.rar

11.55 KB, 下载次数: 76

论坛徽章:
0
6 [报告]
发表于 2008-11-04 13:21 |只看该作者
以前还提示有一个status的成员没有定义 但是我添加过后就没事了  这个->next就没见过 所以...........

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
7 [报告]
发表于 2008-11-04 13:29 |只看该作者
几点分析建议:
1、'dev_base' 在这个文件里没有找到定义,你查一下,是不是在其它文件中定义了,但你没有包进头文件;
2、在2.6.18中,确实net_device有成员 next,在2.6.22中,似乎变成了link_watch_next;所以会报error:has no member named 'next'

论坛徽章:
0
8 [报告]
发表于 2008-11-04 18:34 |只看该作者
那我应该是修改驱动程序的调用为link_watch_next
还是为内核的头文件添加net_device的next成员

就安全性我觉得在驱动里面修改调用比较好,你觉得是这样吗?

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
9 [报告]
发表于 2008-11-04 19:52 |只看该作者
原帖由 finalfantasy000 于 2008-11-4 18:34 发表
那我应该是修改驱动程序的调用为link_watch_next
还是为内核的头文件添加net_device的next成员

就安全性我觉得在驱动里面修改调用比较好,你觉得是这样吗?



你应该做的是,检查两个版本内核代码之间的差异,然后搞明白2.6.18中的next对应于2.6.22中的哪一个成员;
可能还有其他的改变,这样你才算是真正做好了这个驱动程序。

论坛徽章:
0
10 [报告]
发表于 2008-11-04 21:55 |只看该作者
正在找 内核的代码量比较大 还没有定位出来  我还是第一做驱动程序的调整
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP