返回信息流硬件 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,最后的错误问题可能在哪儿?
谢谢
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #2329同步于 2008/11/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
[求助]网卡移植问题
SandFlee
2008/11/7镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
没做过这样的工作,都是个人理解,希望对楼主有帮助
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啊!这个好奇怪
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内核?
1:make file中CROSS_COMPILE
2:cardmgr...跟无线网卡没有关系,原来我搞pcmcia驱动就出这个
3:无法加载说明你编译的不正确,比如编译器版本不对,比如是跟lib或者busybox不一样,你要是编译到内核中编译器版本是可以跟文件系统的不一样的,但是要是后来加载的话就应该一样
【 在 lester98 的大作中提到: 】
“你要是编译到内核中编译器版本是可以跟文件系统的不一样的,但是要是后来加载的话就应该一样”
要对内核重新编译?
【 在 lester98 的大作中提到: 】
: rootfs里面会有busybox,lib,它们会对应一个交叉编译器的版本
我的rootfs是厂家提供的cramfs,那我怎么查看他的交叉编译器的版本?
【 在 SandFlee 的大作中提到: 】
: 我的rootfs是厂家提供的cramfs,那我怎么查看他的交叉编译器的版本?
看里面libc,libstdc++之类的版本