TI中文支持网
TI专业的中文技术问题搜集分享网站

关于AM3715 TI开发包里的Linux源码、Android源码中的摄像头的V4L2疑问

Linux版本用的是TI的2.6.32,Android也是TI的,版本2.2.我们知道无论是Linux还是Android摄像头都是通过V4L2来工作的。在TI的Linux源码中具体为

drivers/media/video,这里有很多摄像头的驱动程序,比如omap34xxcam.c,ov3640.c。ov3640.c我理解,就是摄像头的驱动。但是omap34xxcam.c是干嘛用的?它与

V4L2层是如何联系的?因为ov3640.c里有ioctl的函数描述,omap34xxcam.c也有ioctl的函数描述。这不冲突吗?

还有Android源码中在camerahardware.cpp,v4l2camera.cpp中也有ioctl的函数描述,我的疑问就是V4L2既然在linux驱动层理有了为什么在Android层面还有呢?Android

层面里的东西是如何对驱动层施加影响的呢?

具体例子在camerahardware.cpp中有pixwidth和pixhight的宏定义,修改他们的值可以直接导致ov3640.c中是选择XGA配置还是QXGA配置。

Yaoming Qin:

你看看这个,这么细节的东西,只有通过读代码知道了

Yaoming Qin:

回复 Yaoming Qin:

链接 processors.wiki.ti.com/…/UserGuideOmap35xCaptureDriver_PSP_04.02.00.07

Jason Yuan:

回复 Yaoming Qin:

着篇文章里没有提到过Omap34xxcam这个“层”的作用(我觉得貌似是一个层)以及和v4l2的关系,但是却解释了V4L2层的很多函数的意义。同样遗憾的是我也没有能从看到从配置参数,比如文章中所说的图像格式、大小等是如何从Android层传到linux的驱动层的。这些还得麻烦您讲讲或给点资料。

Tuff Li:

回复 Jason Yuan:

Linux上的应用程序是先看到V4L2的,capture 驱动的是挂在V4L2下面的

所以这里你能看到两个ioctl,呵呵 😉

Jason Yuan:

回复 Tuff Li:

谢谢Tuff Li ,我表述下您的意思,您看看对不对。omap34xxcam相当于linux上的应用程序,所以会包含V4L2的ioctl,而capture驱动里是本来就有ioctl操作的。我这样理解对吗?

如果我理解的对的话,那么omap34xxcam中得ioctl和capture中得ioctl应该互相对应,请问他们是如何对应的呢?是名字一样的所以对应吗?

还有linux层面中得v4l2操作的ioctl和android层面的v4l2中得ioctl操作又是怎么碰上的呢?

Tuff Li:

回复 Jason Yuan:

不完全对,“omap34xxcam相当于linux上的应用程序”,这个理解不对

omap34xxcam是kernel driver,不是应该程序

Android是在v4l2上封了一层camera HAL的,Android上的应用程序是通过camera HAL来调用v4l2的

omap34xxcam有一个ops和v4l2关联的,Linux应用在调用v4l2的时候,会调用相关的omap34xxcam的ops

前提是omap34xxcam要注册到系统里才有

你仔细看看代码就明白了

Yaoming Qin:

回复 Tuff Li:

我还是建议您把时间都花在v4l2的接口上,也就是说camera hal上,具体driver里面的配置,暂时来看,需要修改的不多。

Tuff Li:

回复 Yaoming Qin:

通常情况下,如果需要修改和硬件相关的东西,比如sensor接口,sensor初始化,对焦等,才需要修改driver的东西(omap34xxcam),这个时候才需要调试v4l2

建议你找一个完全调试好的带camera的机器看看代码就明白了

Yaoming Qin:

回复 Tuff Li:

问题是,他们这个是module是带isp的,主要的驱动应该是在sesnor的驱动那边,,

Tuff Li:

回复 Yaoming Qin:

那和我讲的不矛盾,那就把相关的寄存器配置好就可以了

赞(0)
未经允许不得转载:TI中文支持网 » 关于AM3715 TI开发包里的Linux源码、Android源码中的摄像头的V4L2疑问
分享到: 更多 (0)