BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #2329同步于 2008/11/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

[求助]网卡移植问题

SandFlee
2008/11/7镜像同步9 回复
硬件 yl9200 usb无线网卡 wl 167g 软件 arm-linux-gcc 3.3.2 开发板 linux 2.6.13 主机 2.6.24 网卡驱动 CVS的RT73驱动 参照 http://blog.sina.com.cn/s/blog_53baed1201008gfp.html 1,下载解压驱动 # wget http://rt2x00.serialmonkey.com/rt73-cvs-daily.tar.gz 解压:# tar zxvf rt73-cvs-daily.tar.gz 2,在内核中创建新文件夹drivers/usb/net/rt73, # mkdir drivers/usb/net/rt73 将解压出来的文件夹Module下的文件拷贝到刚才新建的rt73文件夹中: cp Module/* /usr/local/linux/linux-2.6.13-hzh/drivers/usb/net/rt73 3,修改内核源代码,加入RT73驱动配置信息 修改drivers/usb/net/Kconfig文件,加入RT73的驱动模块的配置项: # gedit drivers/usb/net/Kconfig & 加入以下内容: config RT73 tristate “support for rt73 wireless usb device” depends on USB && NET && USB_USBNET 修改drivers/usb/net/Makefile, 加入rt73的编译项: # gedit drivers/usb/net/Makefile & 添加一下内容: obj-$(CONFIG_RT73)+= rt73/ 4,修改RT73的Makefile,设置内核位置和编译选项: 删除以前的modules选项,并将arm编译项改成modules,这样编译的时候才是for ARM版本的驱动模块; 修改KERNDIR为开发板内核位置: KERNDIR=/usr/local/linux/linux-2.6.13-hzh 5,配置内核: 在USB devices à network à support for rt73 wireless usb device,按空格键选为M,将其编译成模块。 6,编译内核模块: # make modules 成功编译后,会在drivers/usb/net/rt73目录下生成rt73.ko驱动文件 7,将rt73.ko复制到NFS目录 cp rt73.ko /home/nfsboot 8,加载模块 insmod rt73.ko file rt73.ko rt73.ko: ELF 32-bit LSB relocatable, ARM, version 1, not stripped 这时出现了一个错误: insmod: cannot insert `rt73.ko': Invalid module format (-1): Exec format error 问题 1,移植过程中并没有配置 ARCH CC等参数,交叉编译环境是在哪儿设的?? 2,启动时出现了下面的一句 cardmgr[776]: cannot access /lib/modules/2.6.13: No such file or directory cardmgr[776]: no sockets found! 是不是要设MODDIR变量?网卡驱动不是没有加载成功吗,怎么会启动cardmgr? 3,最后的错误问题可能在哪儿? 谢谢
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
hobby机器人#1 · 2008/11/7
没做过这样的工作,都是个人理解,希望对楼主有帮助 1,移植过程中并没有配置 ARCH CC等参数,交叉编译环境是在哪儿设的?? 看样子你是把一个驱动放到linux-2.6.13-hzh底下去编的,那么设置交叉编译器的Makefile应该是内核的主Makefile吧(大概这样的ARCH ?= $(SUBARCH)) 2,启动时出现了下面的一句 cardmgr[776]: cannot access /lib/modules/2.6.13: No such file or directory cardmgr[776]: no sockets found! 是不是要设MODDIR变量?网卡驱动不是没有加载成功吗,怎么会启动cardmgr? 你说的启动是什么意思呢?这个没太明白 3,最后的错误问题可能在哪儿? 话说2.6的模块不是.o格式(曾经有位大牛问:你是不是拿.o文件往2.6内核上插啊?) 不过你命令里面用的是.ko啊!这个好奇怪
SandFlee机器人#2 · 2008/11/7
1,恩内核的makefile里有 ARCH ?= $(SUBARCH) CROSS_COMPILE ?= arm-linux- 我只看网卡驱动的makefile了,还没怎么看懂,没看内核的。。。 2,我记得cardmgr是管理网卡驱动的一个服务,既然驱动没有安上,Invalid module format,他怎么又会启动呢? 刚才我google了一下,cardmgr是PCMCIA的网卡管理程序,驱动明明是usb的,更迷惑了 3,编译出两个模块 rt73.o rt73.ko我也不知道有什么区别,就都insmod试了试,把一个错误信息拷贝过来了,一会儿我该下 话说rt73.ko是针对2。6内核,rt73.o是针对2。4内核?
lester98机器人#3 · 2008/11/7
1:make file中CROSS_COMPILE 2:cardmgr...跟无线网卡没有关系,原来我搞pcmcia驱动就出这个 3:无法加载说明你编译的不正确,比如编译器版本不对,比如是跟lib或者busybox不一样,你要是编译到内核中编译器版本是可以跟文件系统的不一样的,但是要是后来加载的话就应该一样
SandFlee机器人#4 · 2008/11/7
【 在 lester98 的大作中提到: 】 “你要是编译到内核中编译器版本是可以跟文件系统的不一样的,但是要是后来加载的话就应该一样” 要对内核重新编译?
lester98机器人#5 · 2008/11/7
把内核编完之后交叉编译器换成rootfs的版本再make module试试
SandFlee机器人#6 · 2008/11/8
【 在 lester98 的大作中提到: 】 : 把内核编完之后交叉编译器换成rootfs的版本再make module试试 rootfs的版本??
lester98机器人#7 · 2008/11/8
【 在 SandFlee 的大作中提到: 】 : rootfs的版本?? rootfs里面会有busybox,lib,它们会对应一个交叉编译器的版本
SandFlee机器人#8 · 2008/11/9
【 在 lester98 的大作中提到: 】 : rootfs里面会有busybox,lib,它们会对应一个交叉编译器的版本 我的rootfs是厂家提供的cramfs,那我怎么查看他的交叉编译器的版本?
lester98机器人#9 · 2008/11/10
【 在 SandFlee 的大作中提到: 】 : 我的rootfs是厂家提供的cramfs,那我怎么查看他的交叉编译器的版本? 看里面libc,libstdc++之类的版本