Camera驅動開發知識講解


第一章 Camera基礎

1,Image Sensor

a)     YUV Sensor

YUV Sensor輸出的Data格式為YUV,圖像的效果處理使用Sensor內部的ISPBB端接收YUV格式的data后只進行格式的轉換,效果方面不進行處理,由於Sensor內部的ISP處理能力有限,且YUV Sensor的數據量比較大(YUV422的格式1pixel2byte),一般Size都比較小,常見的YUV sensor都是5M以下

b)    Raw Sensor

Raw Sensor輸出的Data格式為Raw,圖像的效果處理使用BB端的ISPBB端接收Raw data后進行一系列的圖像處理(OBShadingAWBGammaEEANR等),效果方面由BB端控制,需要針對不同的模組進行效果調試,Raw sensor是目前的主流,數據量比YUV Sensor小(RAW10 格式的sensor 1個pixel 10個bit)使用平台ISP處理,能支持較大的size

 

2,硬件接口

簡單說來,Camera的接口分為並行和串行兩種方式,而目前我們平台主要支持的串行方式為mipi接口,Parallel接口mipi接口的介紹可以參考下圖

3,常見基本概念

a)       三路電壓

camera包含的三路電壓為模擬電壓(VCAMA),數字電壓(VCAMD),IO口電壓(VCAMIO

b)       I2C信號

BBSensor端通過I2C來通信(讀寫寄存器),包括SCLI2C Clock SDAI2C Data)信號

c)       mipi幾條lane

mipi data是成對的差分信號,MIPI_RDNMIPI_RDP,有幾對這樣的pin腳,則說明是幾條lane,同一顆sensor由於register setting不同,輸出的信號有可能是2 lane或者4lane

d)       parallel高低八位

Parallel接口一般Data10pin,分別叫做Data0~Data9Parallel sensor輸出的data信號是8pin時,這八根pin接到的是Data0~Data7還是Data2~Data9,需要配置正確,叫做接到高八位或者低八位,接錯了可能產生如下現象

e)       Data Format

Sensor輸出的數據格式,對於YUV Sensor來說,Data Fomat一般有YUYVYVYUUYVY等,配置不對可能會導致顏色和亮度錯掉,例如下圖

對於Raw Sensor來說,Data Format就是First Pixel的顏色,分為RGrGbB,配置不對會導致顏色錯誤

f)        MCLK

BB提供給Sensor的外部clock

g)       PCLK

Parallel接口的Sensor輸出的clock,該clock變化一次,data更新一次

h)       mipi 信號

mipi信號包括mipi clockmipi data,該信號是高速信號,用來傳輸mipi數據包

 

第二章 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架構上Cameraapplicationkernel層詳細的架構.

 

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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM