V4L2 驱动框架概览

OMAP 3 图像信号处理器 (ISP) 驱

Chinese translated version of Documentation/video4linux/omap3isp.txtIf you have any comment or update to the content, please contact the
original document maintainer directly.  However, if you have a problem
communicating in English you can also ask the Chinese maintainer for
help.  Contact the Chinese maintainer if this translation is outdated
or if there is a problem with the translation.Maintainer: Laurent Pinchart <laurent.pinchart@ideasonboard.com>Sakari Ailus <sakari.ailus@iki.fi>David Cohen <dacohen@gmail.com>
Chinese maintainer: Fu Wei <tekkamanninja@gmail.com>
---------------------------------------------------------------------
Documentation/video4linux/omap3isp.txt 的中文翻译如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文
交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
译存在问题,请联系中文版维护者。
英文版维护者: Laurent Pinchart <laurent.pinchart@ideasonboard.com>Sakari Ailus <sakari.ailus@iki.fi>David Cohen <dacohen@gmail.com>
中文版维护者: 傅炜 Fu Wei <tekkamanninja@gmail.com>
中文版翻译者: 傅炜 Fu Wei <tekkamanninja@gmail.com>
中文版校译者: 傅炜 Fu Wei <tekkamanninja@gmail.com>以下为正文
---------------------------------------------------------------------
OMAP 3 图像信号处理器 (ISP) 驱动Copyright (C) 2010 Nokia Corporation
Copyright (C) 2009 Texas Instruments, Inc.联系人: Laurent Pinchart <laurent.pinchart@ideasonboard.com>Sakari Ailus <sakari.ailus@iki.fi>David Cohen <dacohen@gmail.com>介绍
===本文档介绍了由 drivers/media/video/omap3isp 加载的德州仪器
(TI)OMAP 3 图像信号处理器 (ISP) 驱动。原始驱动由德州仪器(TI)
编写,但此后由诺基亚重写了两次。驱动已在以下 OMAP 3 系列的芯片中成功使用:343035303630驱动实现了 V4L2、媒体控制器和 v4l2_subdev 接口。支持内核中使用
v4l2_subdev 接口的传感器、镜头和闪光灯驱动。拆分为子设备
==========OMAP 3 ISP 被拆分为 V4L2 子设备,ISP中的每个模块都由一个子设备
来表示。每个子设备向用户空间提供一个 V4L2 子设备接口。OMAP3 ISP CCP2OMAP3 ISP CSI2aOMAP3 ISP CCDCOMAP3 ISP previewOMAP3 ISP resizerOMAP3 ISP AEWBOMAP3 ISP AFOMAP3 ISP histogramISP 中每个可能的连接都通过一个链接嵌入到媒体控制器接口中。详见例程 [2]。控制 OMAP 3 ISP
==============通常,对 OMAP 3 ISP 的配置会在下一帧起始时生效。在传感器垂直消隐期间,
模块变为空闲时完成配置。在内存到内存的操作中,视频管道一次处理一帧。
应用配置应在帧间完成。ISP 中的所有模块,除 CSI-2 和 (可能存在的)CCP2 接收器外,都必须
接收完整的帧数据。因此,传感器必须保证从不发送部分帧数据给ISP。Autoidle(自动空闲)功能至少在 3430 的 ISP 模块中确实存在一些问题。
当 omap3isp 模块参数 autoidle 非零时,autoidle(自动空闲)功能
仅在 3630 中启用了。事件机制
======OMAP 3 ISP 驱动在 CCDC 和统计(AEWB、AF 和 直方图)子设备中支持
V4L2 事件机制接口。CCDC 子设备通过 HS_VS 中断,处理 V4L2_EVENT_FRAME_SYNC 类型
事件,用于告知帧起始。早期版本的驱动则使用 V4L2_EVENT_OMAP3ISP_HS_VS。
当在 CCDC 模块中接收到起始帧的第一行时,会准确地触发事件。这个事件
可以在 CCDC 子设备中“订阅”。(当使用并行接口时,必须注意正确地配置 VS 信号极性。而当使用串行接收时
这个会自动校正。)每个统计子设备都可以产生事件。每当一个统计缓冲区可由用户空间应用程序
通过 VIDIOC_OMAP3ISP_STAT_REQ IOCTL 操作获取时,就会产生一个
事件。当前存在以下事件:V4L2_EVENT_OMAP3ISP_AEWBV4L2_EVENT_OMAP3ISP_AFV4L2_EVENT_OMAP3ISP_HIST这些 ioctl 的事件数据类型为 struct omap3isp_stat_event_status
结构体。如果出现计算错误的统计,也同样会产生一个事件,但没有相关的统计
数据缓冲区。这种情况下 omap3isp_stat_event_status.buf_err 会被
设置为非零值。私有 IOCTL
==========OMAP 3 ISP 驱动支持标准的 V4L2 IOCTL 以及可能存在且实用的控制。但
ISP 提供的许多功能都不在标准 IOCTL 之列,例如 gamma(伽马)表和统计
数据采集配置等。通常,会有一个私有 ioctl 用于配置每个包含硬件依赖功能的模块。支持以下私有 IOCTL:VIDIOC_OMAP3ISP_CCDC_CFGVIDIOC_OMAP3ISP_PRV_CFGVIDIOC_OMAP3ISP_AEWB_CFGVIDIOC_OMAP3ISP_HIST_CFGVIDIOC_OMAP3ISP_AF_CFGVIDIOC_OMAP3ISP_STAT_REQVIDIOC_OMAP3ISP_STAT_EN在 include/linux/omap3isp.h 中描述了这些 ioctl 使用的参数结构体。
与特定 ISP 模块相关的 ISP 自身的详细功能在技术参考手册 (TRMs)中有
描述,详见文档结尾。虽然在不使用任何私有 IOCTL 的情况下使用 ISP 驱动是可能的,但这样无法
获得最佳的图像质量。AEWB、AF 和 直方图(译者注:一般用于自动曝光和增益
控制,以及图像均衡等)模块无法在未使用适当的私有 IOCTL 配置的情况下使用。CCDC 和 preview(预览)模块 IOCTL
===============================VIDIOC_OMAP3ISP_CCDC_CFG 和 VIDIOC_OMAP3ISP_PRV_CFG IOCTL
被分别用于配置、启用和禁用 CCDC 和 preview(预览)模块的功能。在它们
所控制的模块中,两个 IOCTL 控制多种功能。VIDIOC_OMAP3ISP_CCDC_CFG IOCTL
接受一个指向 omap3isp_ccdc_update_config 结构体的指针作为它的参数。
同样的,VIDIOC_OMAP3ISP_PRV_CFG 接受一个指向 omap3isp_prev_update_config
结构体的指针。以上两个结构体定义位于 [1]。这些结构体中的 update 域标识是否针对指定的功能更新配置,而 flag 域
则标识是启用还是禁用此功能。update 和 flag 位接受以下掩码值。CCDC 和 preview(预览)模块的
每个单独功能都与一个 flag 关联(禁用或启用;在结构体中 flag 域的
一部分)和一个指向功能配置数据的指针。对于 VIDIOC_OMAP3ISP_CCDC_CFG,下面列出了 update 和 flag 域
中的有效值。 这些值可能会在同一个 IOCTL 调用中配置多个功能。OMAP3ISP_CCDC_ALAWOMAP3ISP_CCDC_LPFOMAP3ISP_CCDC_BLCLAMPOMAP3ISP_CCDC_BCOMPOMAP3ISP_CCDC_FPCOMAP3ISP_CCDC_CULLOMAP3ISP_CCDC_CONFIG_LSCOMAP3ISP_CCDC_TBL_LSC针对 VIDIOC_OMAP3ISP_PRV_CFG 的相应值如下:OMAP3ISP_PREV_LUMAENHOMAP3ISP_PREV_INVALAWOMAP3ISP_PREV_HRZ_MEDOMAP3ISP_PREV_CFAOMAP3ISP_PREV_CHROMA_SUPPOMAP3ISP_PREV_WBOMAP3ISP_PREV_BLKADJOMAP3ISP_PREV_RGB2RGBOMAP3ISP_PREV_COLOR_CONVOMAP3ISP_PREV_YC_LIMITOMAP3ISP_PREV_DEFECT_COROMAP3ISP_PREV_GAMMABYPASSOMAP3ISP_PREV_DRK_FRM_CAPTUREOMAP3ISP_PREV_DRK_FRM_SUBTRACTOMAP3ISP_PREV_LENS_SHADINGOMAP3ISP_PREV_NFOMAP3ISP_PREV_GAMMA在启用某个功能的时候,相关的配置数据指针不可为 NULL。在禁用某个功能时,
配置数据指针会被忽略。统计模块 IOCTL
=============统计子设备相较于其他子设备提供了更多动态配置选项。在图像处理流水线处于
工作状态时,它们可以被启用、禁用和重配。统计模块总是从 CCDC 中获取输入的图像数据(由于直方图内存读取未实现)。
统计数据可由用户通过统计子设备节点使用私有 IOCTL 获取。AEWB、AF 和 直方图子设备提供的私有 IOCTL 极大程度上反应了 ISP 硬件
提供的寄存器级接口。有些方面纯粹和驱动程序的实现相关,这些将在下面讨论。VIDIOC_OMAP3ISP_STAT_EN
-----------------------这个私有 IOCTL 启用/禁用 一个统计模块。如果这个申请在视频流启动前完成,
它将在视频流水线开始工作时生效。如果视频流水线已经处于工作状态了,它将在
CCDC 变为空闲时生效。VIDIOC_OMAP3ISP_AEWB_CFG, VIDIOC_OMAP3ISP_HIST_CFG and VIDIOC_OMAP3ISP_AF_CFG
-----------------------------------------------------------------------------这些 IOCTL 用于配置模块。它们要求用户应用程序对硬件有深入的认识。对
大多数域的解释可以在 OMAP 的 TRM 中找到。以下两个域对于以上所有的
私有 IOCTL 配置都很常见,由于他们没有在 TRM 中提及,故需要对其有
更好的认识。omap3isp_[h3a_af/h3a_aewb/hist]_config.buf_size:模块在内部处理自身缓冲。对模块数据输出所必需的缓存大小依赖于已申请的配置。
虽然驱动支持在视频流工作时重新配置,但对于所需缓存量大于模块启用时内部
所分配数量的情况,则不支持重新配置。在这种情况下将返回 -EBUSY。为了避免
此类状况,无论是禁用/重配/启用模块,还是第一次配置时申请必须的缓存大小,
都应在模块禁用的情况下进行。内部缓冲分配的大小需综合考虑所申请配置的最小缓存量以及 buf_size 域中
所设的值。如果 buf_size 域在[minimum(最小值), maximum(最大值)]
缓冲大小范围之外,则应该将其调整到其范围中。驱动则会选择最大值。正确的
buf_size 值将回写到用户应用程序中。omap3isp_[h3a_af/h3a_aewb/hist]_config.config_counter:由于配置并未在申请之后同步生效,驱动必须提供一个跟踪这类信息的方法,
以提供更准确的数据。在一个配置被申请之后,返回到用户空间应用程序的
config_counter 是一个与其配置相关的唯一值。当用户应用程序接收到
一个缓冲可用或一个新的缓冲申请事件时,这个 config_counter 用于
一个缓冲数据和一个配置的匹配。VIDIOC_OMAP3ISP_STAT_REQ
------------------------将内部缓冲队列中最早的数据发送到用户空间,然后丢弃此缓冲区。
omap3isp_stat_data.frame_number 域与视频缓冲的 field_count
域相匹配。技术参考手册 (TRMs) 和其他文档
==========================OMAP 3430 TRM:
<URL:http://focus.ti.com/pdfs/wtbu/OMAP34xx_ES3.1.x_PUBLIC_TRM_vZM.zip>
参考于 2011-03-05.OMAP 35xx TRM:
<URL:http://www.ti.com/litv/pdf/spruf98o> 参考于 2011-03-05.OMAP 3630 TRM:
<URL:http://focus.ti.com/pdfs/wtbu/OMAP36xx_ES1.x_PUBLIC_TRM_vQ.zip>
参考于 2011-03-05.DM 3730 TRM:
<URL:http://www.ti.com/litv/pdf/sprugn4h> 参考于 2011-03-06.参考资料
=======[1] include/linux/omap3isp.h[2] http://git.ideasonboard.org/?p=media-ctl.git;a=summary

OMAP 3 图像信号处理器 (ISP) 驱动相关推荐

  1. 键盘摄影(七)——深入理解图像信号处理器 ISP

    写在前面,本文为笔者参考了很多篇博客,传感器手册,芯片手册,汇总了 ISP 可能涉及到的步骤流程,整理所得万字长文,并针对 ISP 芯片流程图总结画出了题图的 ISP流程图,如有错误轻喷. 主要包含: ...

  2. 相机内部“图像信号处理器(ISP)”等阶段的说明

    本文来自对论文<Reconfiguring the Image Pipeline for Computer Vision>的附录关于ISP内容的整理. 从数码单反相机到智能手机,现代的任何 ...

  3. ISP 图像信号处理器数字IP实现

    ZynqMP-ISP Demo基于KV260(ARM+FPGA)平台,设计实现了CIS(AR1335接在IAS1口)配置,MIPI接收,ISP处理,DP显示.3MP-RAW10@30FPS.Demo软 ...

  4. 图像信号处理器及其架构演进

    图像信号处理器及其架构演进 对于一个成像系统,其图像信号采集部分包括光学器件的镜头组和光电器件的CMOS/CCD成像传感器,由于其在设计和制造阶段的缺陷,在按下快门采集得到的图像信号上有各种各样的缺陷 ...

  5. 芯原图像信号处理器IP获得汽车功能安全标准ISO 26262认证

    通过该认证将加速芯原在电动汽车和自动驾驶等汽车领域的战略布局 2021年11月24日,中国上海--领先的芯片设计平台即服务(Silicon Platform as a Service,SiPaaS®) ...

  6. CPU-AMD处理器的驱动下载地址

    AMD处理器的驱动下载地址: https://www.amd.com/zh-hans/support/chipsets/amd-socket-strx4/trx40 有的时候主板芯片组驱动打不上,打不 ...

  7. ISP(图像信号处理器)是什么?

    由于刚接触到开发版,认识到了图像处理器(image processor),又名 image processing engine, image processing unit (IPU), image ...

  8. 海思处理器sensor驱动调用过程与源码解析与实战

    准备知识: 在mpp/sample/makefile.param /*gcc 的 -D选项作用要注意*/ CFLAGS += -Wall -g $(INC_FLAGS) -D$(HIARCH) -DH ...

  9. 英特尔12代酷睿处理器正式发布,驱动人生助力相关驱动下载升级

    英特尔Intel正式揭晓了12代酷睿处理器,在延续多年的旧工艺后,英特尔带领其全新的工艺.全新的混合架构Alder Lake.全新的外型与接口.英特尔像是在宣告他的崛起,未来已来,将掀起一场属于英特尔 ...

最新文章

  1. 对计算机科学技术的看法
  2. 最新版idea如何在包下建立子包(dao包下建立impl包)
  3. php 代码如何使用,PHP如何使用strval()函数?用法和代码示例
  4. js string转number_Node.js 和 C++ 之间的类型转换
  5. 7. SVM松弛变量
  6. 如何对Javascript代码进行二次压缩(混淆)
  7. fcm 服务器接入 golang_Golang 写的即时通讯服务器 im(服务组件形式)
  8. springboot链接数据库的bug
  9. Delphi的StringReplace 字符串替换函数
  10. 【mysql优化 2】索引条件下推优化
  11. 圣经 英文有声 android,英文有声+Epub Foundation Series 7部 Isaac Asimov - Audiobook
  12. JavaSceipt核心语法——运算符
  13. SSM框架整合(以黑马程序员2022最新SSM框架教程P59为例)
  14. 组态王图素制作_组态王主界面制作
  15. 阿里云视频点播服务SDK的使用,视频文件上传测试
  16. linux配置https不安全链接,配置HTTPS证书后,浏览器出现不安全提示的解决方法
  17. linux 查看efi分区命令,一次修复linux的efi引导的集中方法总结记录
  18. select2切换事件如何生效
  19. html特效代码 枫叶,jQuery飘落的枫叶
  20. Linux上测试网速

热门文章

  1. 戴尔科技 赢在“边缘”
  2. bootStrap常用样式
  3. 魅族人看魅族:我亲历的魅族发布会
  4. 专题|从智能家居的“精智生活”谈谈边缘计算的落地生根
  5. Android开发——“adb”不是内部或外部命令,也不是可运行的程序或批处理文件——解决方案
  6. 世界名模刘金金称赞续元金方是国宝,表示:振兴国医,义不容辞
  7. RK3288RK3399 GMAC以太网调试
  8. Win10没有wifi选项也没网络图标怎么办
  9. android netd和kernelframeworks的通信逻辑
  10. 2048Game/2048游戏(自制版)