v4l2编程 关于linux中无驱动摄像头无法驱动问题 会的话麻烦你看一下 万分感谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了v4l2编程 关于linux中无驱动摄像头无法驱动问题 会的话麻烦你看一下 万分感谢相关的知识,希望对你有一定的参考价值。

蓝色妖姬的无驱摄像头,带有麦克风,在fedora里uvc驱动,前几天用抓图软件总是v4l2 init失败,今天搞了一天,自己用应用程序调用:ioctl(usb_camera_fd,VIDIOCGCHAN,&video_chan); (ioctl(usb_camera_fd,VIDIOCGMBUF,&video_mbuffer) ,总显示调用无效 希望能得到帮助 万分感谢

linux中驱动应该可以在网上找找,然后安装一下。我只有这个办法了 参考技术A 楼主解决了吗?

linux 驱动编程

本人最近刚学linux驱动编程,想在自己的电脑上面测试一下,就找了个程序练练,但是编译不能通过,求高手解答,谢了!!附上我的程序

驱动模块源程序 chdev_test.c
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/fs.h>
MODULE_LICENSE("GPL");

#define MAJOR_NUM 200
#define DEVICE_NAME "chdev_test"

static ssize_t chdev_test_read(struct file *filp, char *, size_t , loff_t *);
static ssize_t chdev_test_write(struct file *filp, char *, size_t , loff_t *);

static int chdev_test_var = 0;

static struct file_operations chdev_test_fops =

read: chdev_test_read,
write: chdev_test_write,
;

static ssize_t chdev_test_read(struct file *filp, char *buf, size_t count,
loff_t *f_pos)

if(copy_to_user(buf,&chdev_test_var,sizeof(int)))

return -EFAULT;

return sizeof(int);


static ssize_t chdev_test_write(struct file *filp, char *buf, size_t count,
loff_t *f_pos)

if(copy_from_user(&chdev_test_var,buf,sizeof(int)))

return -EFAULT;

return sizeof(int);


static int __init chdev_test_init(void)

int reg;
reg=register_chrdev(MAJOR_NUM, DEVICE_NAME, &chdev_test_fops);
if(reg)

printk("regisrer fail!\n");

else

printk("regisrer success!\n");

return reg;


static void __exit chdev_test_exit(void)

int reg;
reg=unregister_chrdev(MAJOR_NUM, DEVICE_NAME);
if(reg)

printk("unregisrer fail!\n");

else

printk("unregisrer success!\n");



module_init(chdev_test_init);
module_exit(chdev_test_exit);

Makefile程序:
obj-m := chdev_test.o
KERNELDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

可是运行make编译不能通过,因此后面的操作就无法进行,下面是我编译出错的画面,请高手帮我看看。

fricy@fricy-virtual-machine:~/文档$ make
make -C /lib/modules/2.6.38-12-generic/build M=/home/fricy/文档 modules
make[1]: 正在进入目录 `/usr/src/linux-headers-2.6.38-12-generic'
CC [M] /home/fricy/文档/chdev_test.o
/home/fricy/文档/chdev_test.c:19:5: warning: initialization from incompatible pointer type
/home/fricy/文档/chdev_test.c: In function ‘chdev_test_read’:
/home/fricy/文档/chdev_test.c:25:5: error: implicit declaration of function ‘copy_to_user’
/home/fricy/文档/chdev_test.c: In function ‘chdev_test_write’:
/home/fricy/文档/chdev_test.c:35:5: error: implicit declaration of function ‘copy_from_user’
/home/fricy/文档/chdev_test.c: In function ‘chdev_test_exit’:
/home/fricy/文档/chdev_test.c:60:8: error: void value not ignored as it ought to be
make[2]: *** [/home/fricy/文档/chdev_test.o] 错误 1
make[1]: *** [_module_/home/fricy/文档] 错误 2
make[1]:正在离开目录 `/usr/src/linux-headers-2.6.38-12-generic'
make: *** [default] 错误 2
fricy@fricy-virtual-machine:~/文档$

驱动我没有写过。不过可以给你些方法。

换gcc编译一下。然后GDB调试跟踪。虚拟机有没有装好开发包。
参考技术A /home/fricy/文档/chdev_test.c: In function ‘chdev_test_read’:
/home/fricy/文档/chdev_test.c:25:5: error: implicit declaration of function ‘copy_to_user’
/home/fricy/文档/chdev_test.c: In function ‘chdev_test_write’:
/home/fricy/文档/chdev_test.c:35:5: error: implicit declaration of function ‘copy_from_user’
看报错内容,首先copy_to_user’ copy_from_user’这两个函数没声明,又没具体实现,所以error了
参考技术B 错误很简单,就是找不到copy_from_user和copy_to_user这两个函数。: implicit declaration of function ‘copy_to_user’是说这个符号使用了隐式的声明,也就是找不到这两个函数的显示声明,也就是找不到这俩函数~
因为copy_from_user和copy_to_user这两个函数名字偶尔有变化,具体需要看你使用内核版本的情况.你可以去/usr/src/下面找你引用copy_to_user和copy_from_user这两个函数所在的头文件,在头文件中确定具体的函数名称。一般来所,可能会是:__copy_to_user、__copy_from_user等,反正是略有变化。内核版本之间API经常有变化,因此编写驱动程序时最好不要随意变动内核,可能下个版本中你所看到的API都不存在了或者处理方式都发生变化了 。

为了检索的方便,建议你去lxr.linux.no,在你对应的内核版本中检索这两个函数名称,然后确定函数名是什么....也不排除你所使用发行版的内核自行修改了内核。

因此,最好是去kernel.org下载一个未修改的内核,然后在系统中编译并使用这个内核,这样就可以排除不同发行版本对内核的修改.然后不要随意变动内核版本
参考技术C 驱动开发,很爽嘛,我也想学习的,可惜啊,时间不多了,以后要工作,时间更少了,我学习的是内核,

以上是关于v4l2编程 关于linux中无驱动摄像头无法驱动问题 会的话麻烦你看一下 万分感谢的主要内容,如果未能解决你的问题,请参考以下文章

Linux v4l2编程(摄像头信息采集)

V4L2学习流程

V4L2编程 视频采集

1. 摄像头V4L2驱动框架分析

camera驱动

二十四V4L2框架分析和虚拟摄像头驱动编写