免费注册 查看新帖 |

Chinaunix

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

高手路过请留步,linux 驱动安装问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-08 14:47 |只看该作者 |倒序浏览
最近弄一个USB摄像头的驱动,在网上下了一个USB摄像头的驱动源码,想加载到内核上去,根据网上提供的步骤(http://blog.chinaunix.net/u/22630/showart_362695.html),就是不知道怎么加载。
我的操作步骤:(内核版本为2.6.22)
1.在虚拟机上,用shell终端,对spca5xx-20060402.tar.gz进行解压
(tar -zvxf spca5xx-20060402.tar.gz),解压后得到spca5xx-20060402文件夹。
2.根据网上步骤,修改了spca5xx-20060402目录下的Makefile文件,编译(make),后得到spca5xx.o文件。
3.把spca5xx.o移动到内核的device目录下,insmod spca5xx.o但是没成功,提示invalid module format错误。加载没成功。
其中也找到了一些问题,就是2.6内核的驱动文件格式好像要为.ko,而不是.o文件。

还有就是迷惑的地方:
1.从第3步开始我就开始晕了,到底要放在哪个盘对呢;
2.在原来的内核里加新的驱动的步骤是怎样的,在什么环境下编译的;
3.insmod的时候,要在什么环境下呢,是直接在虚拟机上操作好,再编译内核,产生映像,然后在下载到目标板上;还是说连接目标板,用insmod命令把.ko文件加载到内核里去,如果是这样的话,步骤是怎样的呢。

论坛徽章:
0
2 [报告]
发表于 2009-10-08 14:55 |只看该作者
你先看看,启动日志
dmesg | grep eth
看看网卡有没有正常挂载
如果没有,下载驱动
编译出模块,放在/lib/modules/`uname -r`/kernel/drivers/net下
然后depmod -a 建立关联
modprobe <模块名>
然后lsmod看看刚才的这个模式加载了没

如果以上全正常,你要改一下开机启动的网卡模块
/etc/modprobe.conf
加入或修改
alias eth0 <模块名>
存盘退出

从启一下网络 /etc/init.d/network restart
或ifdown eth0再ifup eth0

这是我原来回的别人的贴,挂网卡驱动的,USB头的驱动我没弄过
不过你中间好像少了depmod -a这步吧

论坛徽章:
0
3 [报告]
发表于 2009-10-08 23:12 |只看该作者
USB摄像头 即插即用

论坛徽章:
0
4 [报告]
发表于 2009-10-09 09:59 |只看该作者
原帖由 shashijie 于 2009-10-8 14:55 发表
你先看看,启动日志
dmesg | grep eth
看看网卡有没有正常挂载
如果没有,下载驱动
编译出模块,放在/lib/modules/`uname -r`/kernel/drivers/net下
然后depmod -a 建立关联
modprobe
然后lsmod看看刚才 ...


看了,用dmesg | grep eth 命令,在xp下的超级终端可以看到
[root@(none) /]# dmesg | grep eth
eth0: No EEPROM present
eth0: CS8900A rev E detected
eth0: register interrupt 53

请问2楼高手,这样是否正常挂载
还有就是如果编译出模块的(驱动源码放于虚拟机上),怎么放在/lib/modules/`uname -r`/kernel/drivers/net下
我编译出来的模块文件为.o文件,怎么改成.ko文件呢

论坛徽章:
0
5 [报告]
发表于 2009-10-15 14:21 |只看该作者
都没人来回答了,这么多Linux论坛,个个都是不咋的

论坛徽章:
0
6 [报告]
发表于 2009-10-15 17:46 |只看该作者
得到的是.ko文件吧,

2.6的内核的驱动都是 ko的吧

论坛徽章:
0
7 [报告]
发表于 2009-10-15 17:49 |只看该作者
原帖由 unixlinuxsys 于 2009-10-8 23:12 发表
USB摄像头 即插即用

很多都是需要打驱动的,windows下。

论坛徽章:
0
8 [报告]
发表于 2009-10-27 16:28 |只看该作者

回复 #4 shentianguo1985 的帖子

如果设备上都不识别 那就存在问题

论坛徽章:
0
9 [报告]
发表于 2009-11-15 11:19 |只看该作者
dmesg |eth 是看看网卡
dmesg | usb 才是看你的USB设备

还有ko,与o的区别
o的文件是对象文件,.ko是kernel object,与.o的区别在于其多了一些sections,比如.modinfo。.modinfo section是由kernel source里的modpost工具生成的,包括MODULE_AUTHOR, MODULE_DESCRIPTION, MODULE_LICENSE, device ID table以及模块以来关系等等。 depmod 工具根据.modinfo section生成modules.dep, modules.*map等文件,以便modprobe更方便的加载模块。

在2.6内核下编译driver, 首先要确认你的linux系统里有没有 kernel tree,检查的方法是看看文件夹/lib/modules/$(uname -r)/build是否指向source code,并进去看看,是否有Makefile, include, scripts等文件夹,在scripts/mod下可以找到前面提到的modpost,这个东东是 生成.ko的关键。 如果没有kernel tree,需要重新build一份kernel来建立这个kernel tree,或者只能通过binary的方法来安装驱动(在网上找binary的驱动需要看kernel的版本号是否一致,因为2.6的内核对kernel 的版本号有检查)。

看看你编译的驱动有没有问题,如果驱动没问题,用我上面用的方面是可以挂上的

论坛徽章:
0
10 [报告]
发表于 2009-11-15 13:46 |只看该作者
原帖由 marsaber 于 2009-10-15 17:49 发表

很多都是需要打驱动的,windows下。

需要打驱动的,怎么打
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP