ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

FIMC驱动实现V4L2框架与ov5640摄像头驱动——iTop4412平台

2019-03-12 15:51:53  阅读:481  来源: 互联网

标签:iTop4412 fimc FIMC 注册 驱动 i2c 摄像头 设备


FIMC驱动框架与ov5640摄像头驱动——iTop4412平台


一、i2c设备与驱动注册

    ov5640摄像头的i2c由设备和驱动两部分构成,设备注册和驱动注册。先说不同一般i2c设备注册部分,在平时我们添加i2c设备时,需要修改平台文件(.../iTop4412_Kernel_3.0/arch/arm/mach-exynos/mach-itop4412.c)在对应I2C总线的结构体下面添加项,例如在第七条总线下面添加设备。

然后会统一注册该总线下的所有设备。

这样就完成了I2C设备的注册(i2c_client),然后编写相应的驱动文件注册i2c_driver就可以完成i2c总线的初始化操作。

但在摄像头驱动中i2c却并不是这么注册的,摄像头驱动使用的V4L2框架,是作为V4L2的一个子设备,在申请调用/dev/video*时完成摄像头i2c设备的注册等操作。而iTop4412集成FIMC,那么相比以前的2440等Soc,在摄像头驱动和V4L2之间又增加了FIMC层,FIMC实现了V4L2框架的一些接口函数,而在FIMC中向下调用,实现对摄像头(ov5640)的操作。相关i2c注册流程大致如此.

1、i2c设备注册

(1)增加摄像头设备信息,图像像素,在这里可以理解为什么我们在调用摄像头设备时,需要写参数640X480。

(2)增加i2c摄像头设备结构体,名称和设备地址。


 

(3)增加平台摄像头结构体,并在结构体中引用I2C摄像头结构体。

从该结构体(ov5640)中也容易看出该摄像头的一些设备信息。例如:所使用的I2C总线号-7,设备类型CAM_TYPE_ITU,像素格式ITU_601_YCBCR422_8BIT,时钟频率24000000等等。

(4)注册平台fimc数组

(5)接下来所做的就是注册s3c_platform_fimc数组中的一系列结构体了。该数组中的设备项最终会在FIMC设备注册、初始化时被一一申请注册,当然,前提是在menuconfig中选中了设备对应的项。因为FIMC是完成V4L2框架的一些操作,对应的操作函数很多,我们先来针对ov5640设备,查看i2c设备注册部分。

    在fimc_dev.c文件的 fimc_probe()中调用fimc_init_global()函数,并在调用之后,获得摄像头的一些列信息。fimc_capture.c文件的 fimc_s_input()函数中调用fimc_configure_subdev()函数,根据获得的信息会去注册i2c设备。

可以看出在v4l2_i2c_new_subdev_board()函数中完成对摄像头i2c设备的注册。

至此一个摄像头的i2c设备就注册完成了。

问题来了,是谁调用的 fimc_s_input()函数呢?通过在工程中寻找该函数,容易发现该函数是在fimc_v4l2_ops结构体中。

而该结构体类型又是v4l2_ioctl_ops结构体,所以其必然属于video_device类型的fimc_video_device结构体。

至此,可以清楚的发现FIMC作为video设备,向上完成了v4l2接口,向下提供了摄像头的驱动操作。可以理解为,一个摄像头作为FIMC设备的一部分,完成了FIMC设备的视频或图像采集功能,而FIMC又向上完成了video_device设备的一系列功能,当我们在打开一个摄像头设备节点/dev/video*设备时,调用过程恰好是相反的。当然集成在4412中的FIMC模块还有很多功能,图像采集只是其中的一部分。

2、i2c驱动注册

     ov5640的驱动注册主要在ov5640.c文件中,注册过程和一般的i2c驱动注册并无本质区别。

至此就完成了ov5640摄像头的i2c操作部分。

参考博客:

https://blog.csdn.net/wh_19910525/article/details/18091915
https://blog.csdn.net/ke123456le/article/details/9851429#
https://blog.csdn.net/hktkfly6/article/details/51925348
https://blog.csdn.net/a1028732302/article/details/43689783
https://blog.csdn.net/yiheng528/article/details/17841039

*******疑问:那个ov5640_cym.c文件有什么作用?

二、V4L2框架

标签:iTop4412,fimc,FIMC,注册,驱动,i2c,摄像头,设备
来源: https://blog.csdn.net/Shaiwei/article/details/88417434

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有