免费注册 查看新帖 |

Chinaunix

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

会的指点一下,不会路过的捧个人场,小弟全都跪谢您的大恩大德! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-04 09:29 |只看该作者 |倒序浏览
我们公司现在在一个开发板omap3530的上面加了一个摄像头,现在我需要把驱动调试出来。
由于没有开发驱动,我需要参考别的驱动的写法,我在linux的内核中看到一个和我们这款摄像头寄存器定义很相似的驱动,我就借鉴过来了。通过修改,我也加了很多打印信息,最后编译也都通过了,在make menuconfig中也加载好了,但是现在无论怎么样都显示不出这个驱动的打印信息。超级终端里没有,dmesg也没有。
我怀疑这个驱动根本没有被调用,要不怎么会没有一条打印信息呢?
当我把内核里原初我借鉴的那个驱动添加上打印信息居然也没有显示,这是怎么回事?难道原初内核里自带的驱动也会有问题?

小弟迷惑很久了,十分想得到你的帮助, 再次谢过了!

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
2 [报告]
发表于 2011-05-04 12:58 |只看该作者
你先看你驱动模块有没有被加载,另外,要明确你的驱动程序如何才能被调用,只有当你驱动程序被加载了,而且设备得到了初始化,当设备被使用时——有数据通信,才会出现你想要的信息。

论坛徽章:
0
3 [报告]
发表于 2011-05-04 13:57 |只看该作者
回复 2# dreamice


    总算有大侠出现了,谢谢这位大哥!
   我在make menuconfig中选中它,最后也的确看到了该驱动通过编译生成的.o文件,不知道算不算是被加载上呢?至于设备是否被初始化我也不是很清楚,我完全是参照内核里提供的驱动进行修改的,内核里的那个demo本身的打印信息也看不到,该文件也没有初始化函数,难道它是不能直接使用的驱动吗?
    另:我用的视频芯片有I2C总线的两根线,我不清楚该驱动是在I2C中初始化呢?还是在哪里?

论坛徽章:
0
4 [报告]
发表于 2011-05-04 18:29 |只看该作者
驱动生成.o文件?? UserSpace的驱动(如显卡驱动)就一般生成.so文件, KernelSpace中的驱动都是KO文件,还有.o的驱动文件?? 奇怪!
   make menuconfig的时候把它选择成“M”, 然后用make SUBDIR=..... modules 来编译你的摄像头驱动,然后手动将生成的KO文件insmod,如果这样都没有打印信息的话(dmesg),那就说明你的驱动应该没有被调, 估计要看看module_init了, 呵呵。

论坛徽章:
0
5 [报告]
发表于 2011-05-05 10:38 |只看该作者
回复 4# Trigger_Huang


    我在内核自带的驱动中加载了打印信息居然也没有显示,是不是我的打印信息有问题?您能帮我看一下我的程序吗?我的QQ是190581870,您能加我吗?非常感激!

论坛徽章:
0
6 [报告]
发表于 2011-05-05 10:42 |只看该作者
回复 4# Trigger_Huang


    你说的make SUBDIR是在makefile里修改的吗?

论坛徽章:
0
7 [报告]
发表于 2011-05-05 10:52 |只看该作者
obj-$(CONFIG_SOC_CAMERA_MT9M001)        += mt9m001.o
obj-$(CONFIG_SOC_CAMERA_MT9M111)        += mt9m111.o
obj-$(CONFIG_SOC_CAMERA_MT9T031)        += mt9t031.oobj-$(CONFIG_SOC_CAMERA_MT9V022)        += mt9v022.o
obj-$(CONFIG_SOC_CAMERA_OV772X)         += ov772x.o
obj-$(CONFIG_SOC_CAMERA_OV9640)         += ov9640.o
obj-$(CONFIG_SOC_CAMERA_RJ54N1)         += rj54n1cb0c.o
obj-$(CONFIG_SOC_CAMERA_TW9910)         += tw9910.o

这个就是我makefile里的相关,红色是我照上面的模式自行添加的,您说的生成 .ko我听过,但我只是按照常规makefile里正常添加一个驱动项,没有理由没显示啊!

论坛徽章:
0
8 [报告]
发表于 2011-05-05 11:15 |只看该作者
回复 4# Trigger_Huang


ema@ema3530:~/Source/linux-03.00.01.06$ make SUBDIR= mt9p012.ko
  CHK     include/linux/version.h
make[1]: `include/asm-arm/mach-types.h' is up to date.
  CHK     include/linux/utsrelease.h
  SYMLINK include/asm -> include/asm-arm
  CALL    scripts/checksyscalls.sh
<stdin>:1523:2: warning: #warning syscall recvmmsg not implemented
make[1]: *** No rule to make target `mt9p012.o'.  Stop.
make: *** [mt9p012.ko] Error 2
ema@ema3530:~/Source/linux-03.00.01.06$

这样也不行,不知道我做的对吗?

论坛徽章:
0
9 [报告]
发表于 2011-05-05 18:43 |只看该作者
回复 8# mch_kot


    首先应该make menuconfig的时候把它选成"M", 然后应该是 “make ARCH=arm CROSS_COMPILE=arm-linux-  SUBDIR=driver/media/video modules”(我记不清是SUBDIR还是SUBDIRS),或者你直接make modules一下也无妨,到时候在这个driver/media/video下会成你刚才配置成“M”的那个KO, 你确定你的驱动文件是在driver/media/video下吧?  另外这个modules是一个target,你不要把它换成你的文件名什么的。之所以用SUBDIR时为了节省一点时间吧,这样就只会到SUBDIR指定的目录去编译,都则就是编译整个内核的modules。

论坛徽章:
0
10 [报告]
发表于 2011-05-05 18:45 |只看该作者
“之所以用SUBDIR时为了节省一点时间吧,这样就只会到SUBDIR指定的目录去编译,否则就是编译整个内核的modules。”  老是打错字,不好意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP