QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6548|回复: 4

在uClinux中挂载驱动程序的问题,急求解!

[复制链接]
发表于 2006-7-5 11:52:50 | 显示全部楼层 |阅读模式
我使用的是lumit的4510b开发板
先用tftp将uclinux上传到开发板ram中运行,然后在uclinux挂载宿主机上的NFS文件系统,在nfs目录下有一个test.o的驱动程序,只是实现了module_init 和 module_exit 通过printk输出。

内核配置应该没有问题,insmod insmod(kernel) lsmod rmmod , loadmodule enable 等相关都编入内核,然而在insmod test.o的时候出现以下的信息:

Unhandled fault: external abort on linefetch (F4) at 0x00000001
fault-common.c(97): start_code=0x380040, start_stack=0x3bff80

实在被折磨的不行了,我所知道能用的方法都已经用过了,可惜还是没有效果。因此想在这里请教大家,给我点指点吧!
发表于 2006-7-5 21:49:05 | 显示全部楼层
uclinux中好像直接用insmod不行
建议你把驱动编译到uclinux里面,那样肯定没有问题,你也可以通过控制LED灯的亮灭来指示驱动的加载和卸载!!
回复

使用道具 举报

 楼主| 发表于 2006-7-12 16:02:31 | 显示全部楼层
如你所说,我把modules编译到内核里后,加载确实可用,可是每次都需要对内核进行编译,耽误了不少时间(我的机器也不是特别快),并且调试也有些困难。这些天来我分析了一下出错的问题:

我用make modules >mod,在mod中找到了一个合适的模块编译选项,通过两种方式编译:
1.不通过uclinux 编译,在外部用make使用同uclinux一样的编译选项,编译后的.o格式的module通过nfs访问到后insmod出现以上的失败的信息,但用lsmod可见模块已经挂载上了只是后边有个(未初始化)。
2.通过uclinux编译,编译到镜像里,所有选项都一致,没有任何问题,可以直接装载。
3.通过nfs把可用module copy到nfs文件夹(r/w)中,再次insmod也仍然可用。
4.把不可用的module copy到uclinux的temp文件夹,之后insmod仍然不可用。

究竟可能是什么样的问题?
是编译选项问题,还是nfs的访问问题?
回复

使用道具 举报

 楼主| 发表于 2006-7-12 17:14:07 | 显示全部楼层
突然发现在rmofs下的文件和直接编译出来的文件大小相差了几十倍之多!
一定是有编译过程中的问题
看make 文件中的 make modules_install突然发现有一句,在实际中应该为
arm-elf-strip -g *.o用来去处 debug信息!
实验后,文件缩小了几十倍!再次通过nfs insmod成功!

虽然问题解决了,但出错的原理仍然不太懂.........
回复

使用道具 举报

发表于 2012-8-13 16:22:50 | 显示全部楼层

回复 4# tgsigma 的帖子

楼长能说具体说下是怎么解决的么?我也遇到一样的问题,还没就解决。谢啦!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-1 22:39 , Processed in 0.067336 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表