1、Camera 硬件介绍

1,Image Sensor类型

a)     YUV Sensor

YUV Sensor输出的Data格式为YUV,图像的效果处理使用Sensor内部的ISP,BB端接收YUV格式的data后只进行格式的转换,效果方面不进行处理,由于Sensor内部的ISP处理能力有限,且YUV Sensor的数据量比较大(YUV422的格式1个pixel2个byte),一般Size都比较小,常见的YUV sensor都是5M以下

b)    Raw Sensor

Raw Sensor输出的Data格式为Raw,图像的效果处理使用BB端的ISP,BB端接收Raw data后进行一系列的图像处理(OB,Shading,AWB,Gamma,EE,ANR等),效果方面由BB端控制,需要针对不同的模组进行效果调试,Raw sensor是目前的主流,数据量比YUV Sensor小(RAW10 格式的sensor 1个pixel 10个bit)使用平台ISP处理,能支持较大的size

2,硬件接口

简单说来,Camera的接口分为并行和串行两种方式,MTK平台主要支持的串行方式为mipi接口,Parallel接口和mipi接口的介绍可以参考下图

3,常见基本概念

a)       三路电压

camera包含的三路电压为模拟电压(VCAMA),数字电压(VCAMD),IO口电压(VCAMIO)

b)       I2C信号

BB与Sensor端通过I2C来通信(读写寄存器),包括SCL(I2C Clock) SDA(I2C Data)信号

c)       mipi几条lane

mipi data是成对的差分信号,MIPI_RDN和MIPI_RDP,有几对这样的pin脚,则说明是几条lane,同一颗sensor由于register setting不同,输出的信号有可能是2 lane或者4lane等

d)       parallel高低八位

Parallel接口一般Data有10根pin,分别叫做Data0~Data9,Parallel sensor输出的data信号是8根pin时,这八根pin接到的是Data0~Data7还是Data2~Data9,需要配置正确,叫做接到高八位或者低八位,接错了可能产生如下现象

e)       Data Format

Sensor输出的数据格式,对于YUV Sensor来说,Data Fomat一般有YUYV,YVYU,UYVY等,配置不对可能会导致颜色和亮度错掉,例如下图

对于Raw Sensor来说,Data Format就是First Pixel的颜色,分为R,Gr,Gb,B,配置不对会导致颜色错误

f)        MCLK

BB提供给Sensor的外部clock

g)       PCLK

Parallel接口的Sensor输出的clock,该clock变化一次,data更新一次

h)       mipi 信号

mipi信号包括mipi clock和mipi data,该信号是高速信号,用来传输mipi数据包

2 Camera软件架构

主要包含三个部分的介绍:

1)Android Camera 架构:Android系统原生架构简要介绍.

2)Mediatek Android Camera架构: 简要介绍Mediatek平台在Android系统基础上Camera 的架构.

3)Camera data path: 介绍在平台端Camera的数据流.

1.下图为Android Camera 架构

Camera根据Android 架构从上至下可分为

1)Applications: 最上层的应用,编译后生成Camera  APK;

2)Application Framework: 主要为Applications提供API;

3)JNI: 使Application Framework和Libraries可交互;

4)Libraries: 包括Camera Framework和Camera Service(camera service和camera client);

5)HAL: 硬件抽象层, 用来链接driver和 Camera Service;

6)Kernel: image sensor driver的实作.

其中2)~4)的部分基本为Android原生的架构和code,Mediatek会有一些拓展,而HAL和Kernel层为Mediatek主要实作的部分,Camera APK是Mediatek基于Android 原生Camera APK修改的应用.

2.下图为MT6589/82/72/92/88平台基于Android架构上, ,Camera从application到kernel层详细的架构.

1)蓝色部分主要由Java实现(偏向应用层)、黄色为JNI实现(C++,衔接Java层和Native层), 绿色由C++实现(通常称为Native层),而枣红色为C实现(Kernel 层).

2) HAL libraries为Mediatek在HAL层的实现,主要分Camera HAL和Camera Core两大部分.Camera HAL衔接Camera Service并响应它的需求,实现各个feature的scenario; 而Camera Core提供平台一些通用的数据流控制接口.

3.Camera的数据流简要介绍

说明:

1) TG(Timing Generate):从sensor获取数据,并送给ISP处理.

2) Platform Data Processor: 包括平台在后端对图像数据进行resize、rotate、flip、format convert等处理.它可以同时有两个buffer输出.

当normal preview时,port1输出给display,port2输出给face detection或者app preview callback

当normal capture时,port1输出大图给jpeg encoder,port2输出小图给回显和thumbnail encode.

当video record时,port1输出给display,port2输出给video encoder.

MTK 驱动开发(22)---camera 硬件和软件概述相关推荐

  1. 详解关于MTK驱动开发学习教程

    MTK驱动开发学习教程是本文要介绍的内容,主要是来了解MTK的驱动开发的过程,文章中很详细的讲解了这个问题,具体内容来看本文详解. 一.Charge Parameters. 1.相关文件chr_par ...

  2. MTK 驱动开发 (1)---GPIO架构

    转自:http://blog.csdn.net/loongembedded/article/details/41179749 1.     GPIO驱动功能 用来配置GPIO引脚,主要的功能如下: ( ...

  3. MTK 驱动开发(33)---Vibrator

    Vibrator 驱动开发相对比较简单 1.配置功能及参数 vibrator0:vibrator@0 {compatible = "mediatek,vibrator";vib_t ...

  4. 无人驾驶1——自动驾驶硬件、软件概述

    课程网站:https://www.bilibili.com/video/BV18m4y1S7Hd?p=2 汽车行业117页深度研究报告:https://mbd.baidu.com/newspage/d ...

  5. MTK 驱动开发(20)---camera 基础知识1

    一.快门与曝光 1. 快门 快门是镜头前阻挡光线进来的装置,一般而言快门的时间范围越大越好. 秒数低适合拍运动中的物体,某款相机就强调快门最快能到1/16000秒,可轻松抓住急速移动的目标.不过当你要 ...

  6. MTK 驱动开发(24)---camera模块的制作

    分辨率越高,当照片放大时可以看到更细节的部分. 03:00 Sensor结构: lens /color filter/感光区, lens搜集特定颜色光,color filter过滤其他颜色光,将一种颜 ...

  7. MTK驱动开发(21)---camera基础知识2

    Lens shading: 镜头边缘的光线与光轴有较大夹角,使得通光路径变长,最后投射到画面的亮度也会变暗.因此最后的效果就是中间亮,边缘暗这样.虽然是硬件自身问题,但是可以通过软件补偿.1:00 F ...

  8. MTK 驱动开发(23)---MTK camera AF 及tuning

    基本概念: FV: Focus Value, 用来衡量图像AF的清晰度.  DOF: Deep Of Field, 景深,表示物距清晰的范围,景深越长表示物距前后清晰的范围越大.    抛物线的顶点即 ...

  9. MTK 驱动开发(35)---待机功耗分析流程

    1.目的 2.MTK平台各个场景功耗数据测试方法 很多功耗问题都是因为测试手法不对,列出一些常用场景功耗测试手法.  测试功耗数据之前,请先确认以下配置:  1.关闭 WIFI/BT/GPS,关闭数据 ...

最新文章

  1. Xamarin.FormsShell基础教程(4)Shell项目内容列表页面运行效果
  2. 51单片机的工作寄存器R0~R7位于内部RAM什么位置
  3. Linux 下文件打包和压缩
  4. Java内存之栈与堆
  5. Maximum.TV 发布西班牙语Silverlight TV网站
  6. 兰州中考计算机考试,宜昌、兰州发布中考新政新消息:增加口语考试,采取人机对话形式...
  7. 前端工程化-webpack-cli(官方开发中。。。)
  8. 清空oracle的注册表,一键清除 Oracle注册表.bat
  9. 疯狂星期四,但是程序员
  10. 又发现几个宝藏网站系列(二)
  11. PLC通过智能网关,实现HTTP协议的POST请求,与服务端JSON格式双向通讯
  12. Matlab画图线型、符号及颜色汇总
  13. JAVA-计算两篇文章的相似度
  14. 【Jquery练习】tab栏切换
  15. JVM -verbose参数详解
  16. gluster volume
  17. 【奇葩瑞萨-002】调教Renesas RX130独立看门狗
  18. xp电脑自动锁定计算机,WinXP系统如何设置电脑自动关机?
  19. Dart中Map的使用
  20. Redis(狂神说 )学习使用笔记

热门文章

  1. 嵌入式Linux系统编程学习之十五sigaction信号处理机制
  2. 报送数据标准校验java_Java:数据校验 - osc_gaqp1a2z的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. 【高校宿舍管理系统】第六章 用户管理和年级管理
  4. GIT 自动转换行符的案例
  5. 使用正态分布变换(Normal Distributions Transform)进行点云配准
  6. 二分查找的平均查找长度详解【转】
  7. 【转】linux /centos 中OpenSSL升级方法详解
  8. rdlc实现动态插入图片
  9. notepad快捷键大全
  10. python面试题之如何用Python输出一个斐波那契数列