第一時間看干貨文章
1、Camera歷史文章:《Camera | 1.Camera基礎(chǔ)知識》
上一篇我們講解了camera的一些基礎(chǔ)概念和知識。我們說了,現(xiàn)在的手機由于高分辨率的要求,現(xiàn)在基本上都是基于MIPI、CSI協(xié)議來實現(xiàn)的,
本篇講解MIPI、CSI的一些基礎(chǔ)知識。
攝像頭常用術(shù)語
下面這些術(shù)語是camera驅(qū)動中經(jīng)常用到的縮略語。
AE(Auto Exposure):自動曝光。
AF(Auto Focus)???:自動對焦。
AWB(Auto White Balance):自動白平衡。
3A ?:指自動曝光(AE)、自動對焦(AF)和自動白平衡(AWB)算法。
Async Sub Device:在Media Controller結(jié)構(gòu)下注冊的V4L2異步子設(shè)備,
例:Sensor、MIPI DPHY。
Bayer Raw(或Raw Bayer)??:Bayer是相機內(nèi)部的原始圖片,一般后綴為.raw。
.raw格式內(nèi)部的存儲方式有:RGGB、BGGR、GRBG等。
CIF ????:Rockchip芯片中的VIP模塊,接收Sensor數(shù)據(jù)并保存到內(nèi)存中,
僅轉(zhuǎn)存數(shù)據(jù),無ISP功能。
DVP(Digital Video Port)??:一種并行數(shù)據(jù)傳輸接口。
Entity ?:Media Controller架構(gòu)下的各節(jié)點。
Frame ??:幀。
HSYNC ??:行同步信號,HSYNC有效時,接收到的信號屬于同一行。
IOMMU(Input Output Memory Management Unit):Rockchip芯片中的
IOMMU模塊,用于將物理上分散的內(nèi)存頁映射成CIF、ISP可見的連續(xù)內(nèi)存。
IQ(Image Quality)?:指為Bayer Raw Camera調(diào)試的IQ xml,用于3A tunning。
ISP(Image Signal Processing)?:圖像信號處理。
Media Controller :Linux內(nèi)核中的一種媒體框架,用于拓撲結(jié)構(gòu)的管理。
MIPI-DPHY ????:Rockchip芯片中符合MIPI-DPHY協(xié)議的控制器。
MP(Main Path):Rockchip芯片ISP驅(qū)動的一個輸出節(jié)點,一般用來拍照和抓取Raw圖。
PCLK(Pixel Clock)?:指Sensor輸出的Pixel Clock。
Pipeline ?????????:Media Controller架構(gòu)的各Entity之間相互連接形成的鏈路。
SP(Self Patch)????:Rockchip芯片ISP驅(qū)動的一個輸出節(jié)點。
V4L2(Video4Linux2)???:指Linux內(nèi)核的視頻處理模塊。
VICAP(Video Capture)?:視頻捕獲。
VIP(Video?Input?Processor):在Rockchip芯片中,曾作為CIF的別名
VSYNC ?:場同步信號,VSYNC有效時,接收到的信號屬于同一幀。
一、基礎(chǔ)概念
1. MIPI
MIPI:移動產(chǎn)業(yè)處理器接口(Mobile Industry Processorinterface)是MIPI聯(lián)盟發(fā)起的為移動應(yīng)用處理器制定的開放標(biāo)準(zhǔn)。
https://www.mipi.org
MIPI聯(lián)盟即移動產(chǎn)業(yè)處理器接口(MIPI)聯(lián)盟,由美國德州儀器(TI)、 意法半導(dǎo)體(ST)、 英國ARM和芬蘭諾基亞(Nokia)4家公司共同成立, 旨在定義并推廣用于移動應(yīng)用處理器接口的開放標(biāo)準(zhǔn)。
2. CSI
MIPI-CSI-2協(xié)議是MIPI聯(lián)盟協(xié)議的子協(xié)議,專門針對攝像頭芯片的接口而設(shè)計。
由于其高速,低功耗的特點,MIPI-CSI2協(xié)議極大的支持了高清攝像頭領(lǐng)域的發(fā)展.
正是由于它的普及,手機上五百萬像素的攝像頭才得以變?yōu)榍爸脭z像頭,該類接口技術(shù)主要掌握在日本東芝,韓國三星以及美國豪威三家公司。
- CSI協(xié)議有兩個版本協(xié)議,分別為CSI-2和CSI-3;CSI-2協(xié)議遵循的物理標(biāo)準(zhǔn)有兩個,分別為C-PHY和D-PHY;CSI-3協(xié)議的物理標(biāo)準(zhǔn)對應(yīng)M-PHY,且應(yīng)用層協(xié)議棧還需要連接Uni-Pro層。
D-PHY與C-PHY區(qū)別:從實用角度來看,主要是數(shù)據(jù)線和時鐘線的區(qū)別,還有傳輸速率,C-PHY通過某些技術(shù)改良,使數(shù)據(jù)傳輸速度更快。
瑞芯微3568用的CSI-2 && D-PHY
所以內(nèi)核中,我們會看到CSI2 和 D-PHY相關(guān)代碼。
二、MIPI協(xié)議
MIPI并不是一個單一的接口或協(xié)議,而是包含了一套協(xié)議和標(biāo)準(zhǔn),以滿足各種子系統(tǒng)獨特的要求。MIPI的標(biāo)準(zhǔn)異常復(fù)雜,包含非常多的應(yīng)用領(lǐng)域。
由上圖可得:
- 顯示設(shè)備采用的DSI協(xié)議攝像頭采用的CSI協(xié)議RF IC采用的DigRF協(xié)議存儲設(shè)備采用的UFS
1. DCS(Display Command Set)
用于顯示模塊命令模式下的標(biāo)準(zhǔn)化命令集;
2. DBI, DPI (Display Bus Interface, Display Pixel Interface)
DBI:與具有顯示控制器和幀緩沖器的顯示模塊的并行接口。DPI:與顯示模塊的并行接口,不帶顯示控制器或幀緩沖器。
3. DSI, CSI (Display Serial Interface, Camera Serial Interface)
DSI:主機處理器與顯示模塊之間的高速串行接口;CSI:主機處理器與攝像頭模塊之間的高速串行接口;
4. D-PHY
為DSI(顯示屏)和CSI-2(攝像頭)提供物理層通路定義。
5. M-PHY
為DigRF、CSI-3、UFS、LLI、SSIC、M-PCIE提供物理層通路定義。
目前比較成熟的接口應(yīng)用有**DSI(顯示接口),和CSI(攝像頭接口)**,都具有比較復(fù)雜的協(xié)議結(jié)構(gòu),下圖表示某一個SOC可以作為一個CSI的接收器,同時也可以作為一個DSI的輸出器。
其物理層使用到了D-PHY,目前新的物理層C-PHY也逐漸被采用,我們常說的Camera I2C接口在MIPI中有專門的一個CCI(Camera Control Interface)來對應(yīng)。
三、CSI
根據(jù)層級,CSI協(xié)議分為五層:
名稱 | 解釋 | |
---|---|---|
Application | 應(yīng)用層 | 處理原始圖像數(shù)據(jù)的各種算法模塊 |
Packing Formats | 組包層 | 負責(zé)將數(shù)據(jù)按照一定的次序,切割成8bite數(shù)據(jù) |
Low Level Protocaol | 協(xié)議層 | 為新生成的數(shù)據(jù)加上爆頭包尾,形成符合協(xié)議要求的數(shù)據(jù)流 |
Lane Management | 通道管理層 | 將生成的數(shù)據(jù)流按照一定次序和要求,進行讀寫管理,輸出數(shù)據(jù)流 |
PHY Layer | PHY層 | 生成MIPI最后的信號波形 |
Pixel | 像素數(shù)據(jù) | 經(jīng)過圖像模塊處理過的數(shù)據(jù)流,或者原始的圖像數(shù)據(jù)流 |
Data | 傳輸數(shù)據(jù) | 經(jīng)過MIPI模塊切割或者加上包頭包尾數(shù)據(jù) |
Control | 控制信號 | 模塊間的控制數(shù)據(jù)流 |
Transmitter | 發(fā)送端 | 包括了MIPI數(shù)組部分,轉(zhuǎn)接板等實現(xiàn)MIPI信源傳輸?shù)牟糠?/td> |
Receiver | 接收端 | 包括了轉(zhuǎn)接板和商用接收端模塊,負責(zé)解析收到的MIPI信源 |
工作順序:
- 將原始的圖像數(shù)據(jù)在應(yīng)用層做相應(yīng)的圖像處理,包括白平衡/噪聲去除和色彩還原等;將處理的數(shù)據(jù)進入組包層做數(shù)據(jù)分割以及重組,然后將其傳輸給底層協(xié)議層;底層協(xié)議層會根據(jù)數(shù)據(jù)類型產(chǎn)生包頭,根據(jù)數(shù)據(jù)內(nèi)容產(chǎn)生構(gòu)成包圍的校驗序列,再將包頭、數(shù)據(jù)本身和包尾組成起來發(fā)送給通道管理層;通道管理層模塊按照通道的選通情況,合理分配數(shù)據(jù)到每個通道,之后數(shù)據(jù)經(jīng)過數(shù)模轉(zhuǎn)換進入到物理層傳輸;接收端在收到物理層數(shù)據(jù)后,再按照之前的逆序解包出原始的圖像數(shù)據(jù)。
1. 應(yīng)用層(Application Layer)
該層主要用于不同場景對數(shù)據(jù)的處理過程,對于發(fā)送方,多為camera生成數(shù)據(jù),對于接收方,多為SOC對數(shù)據(jù)進行處理。
2. 協(xié)議層(Protocol Layer)
CSI-2協(xié)議可以使用SOC上的一個物理接口實現(xiàn)多條數(shù)據(jù)流的傳輸。協(xié)議層規(guī)定了如何對多條數(shù)據(jù)流進行標(biāo)記和交織,從而使每條數(shù)據(jù)流能夠正確地重建。
1)像素字節(jié)轉(zhuǎn)換層(Pixel/Byte Packing/Unpacking Layer)
CSI-2能夠支持多種多樣的像素格式,對于發(fā)送方,在數(shù)據(jù)發(fā)送之前,需要根據(jù)像素格式,將像素數(shù)據(jù)轉(zhuǎn)換為對應(yīng)的字節(jié)流;對于接收方,在將數(shù)據(jù)提供給應(yīng)用層之前,需要將字節(jié)流數(shù)據(jù)轉(zhuǎn)換為像素數(shù)據(jù)。
2)低級協(xié)議層(Low Level Protocol)
LLP指的是SoT與EoT之間的數(shù)據(jù)包字節(jié)流協(xié)議,LLP的最小單元為字節(jié)。
3)Lane管理器(Lane Management)
為了適應(yīng)不同場景下對帶寬的要求,CSI-2規(guī)定了Lane的數(shù)量是可拓展的。因此,在面臨多Lane同時傳輸時,發(fā)送方需要對字節(jié)流進行公平分流(distributor),接收方則需要對多Lane數(shù)據(jù)進行合并(merger)。
3. 物理層(PHY Layer)
PHY層指定了傳輸媒介,在電氣層面從串行bit流中捕捉“0”與“1”,同時生成SoT與EoT等信號。CSI的硬件部分包括C-PHY、D-PHY,實際上使用的主要是D-PHY。
四、物理層 DPHY
D-PHY 描述了一同步、高速、低功耗、低代價的PHY。
D-PHY的最初版本設(shè)計目標(biāo)是500M bits/s,而D是羅馬數(shù)字的500,故而叫D-PHY。
1. D-PHY規(guī)范的2.0版的標(biāo)準(zhǔn):
- 在高速模式下的同步傳輸,比特率為80-2300Mb/s,具體取決于設(shè)備和速度等級;TX經(jīng)典配置為一個時鐘Lane和最多四個數(shù)據(jù)Lane組成;Rx經(jīng)典配置為一個時鐘Lane和最多八個數(shù)據(jù)Lane組成;在低功率模式下的異步傳輸,比特率為10Mb/s;物理協(xié)議接口(PPI)連接CSI-2和DSI的應(yīng)用;可選的AXI4-Lite接口,可進行注冊訪問。
上圖表明使用DPHY作為物理層時,Camera與SOC之間的硬件關(guān)系。
MIPI CSI設(shè)備由兩部分構(gòu)成,分別為CCI(Camera Control Interface)和CSI(Camera Serial Interface)。
- CCI:攝像頭控制接口。(在MIPI中,充當(dāng)著控制接口的作用,提供mipi接口sensor的控制傳輸通道)CSI:主機處理器與攝像頭模塊之間的高速串行接口(傳輸圖像數(shù)據(jù))。
- SOC的CCI組件通過I2C完成對Camera的配置,使其輸出mipi信號其中一對Clock+/-則由Clock Lane標(biāo)示,一對DataNBA+/-則由Data Lane標(biāo)示。
兩個Lane的 PHY配置如下圖 :
2. CCI (Camera Control Interface)
CCI是一個雙線、雙向、半雙工、串行接口。是I2C協(xié)議的子集,與I2C基本一致。
CCI是兼容I2C接口的快速模式變體。CCI應(yīng)支持400kHz操作和7位從屬尋址。
對于那些只支持RAW Bayer輸出格式的攝像頭,其CCI地址必須為011011xb(x=0,1);對于其他的攝像頭,其CCI地址必須為011110xb。
CCI可選擇支持速率:1Mbps (Fm+), 12.5Mbps (SDR), or 25Mbps (DDR).
CCI接口命名如下:
- CCI (I2C) :CCI 支持I2CCCI (I3C) :CCI 支持I3CCCI (I3C SDR) :CCI 支持I3C SDRCCI (I3C DDR) :CCI 支持I3C DDRCCI :表示同時支持 CCI (I2C) 和CCI (I3C).
3. DPHY工作于兩種工作模式:
-
- HS(High Speed Mode)
-
- 這種模式用于傳輸高速的數(shù)據(jù)信號,如視頻流;高速模式下,每對Lane都是工作在低電壓擺幅的差分狀態(tài)下,數(shù)據(jù)速率為80Mbps到1500Mbps。LP(Low Power Mode)
- 這種模式則可以用來傳輸控制信號;低速模式下,每對lane的2根導(dǎo)線都轉(zhuǎn)變?yōu)閱味藸顟B(tài),數(shù)據(jù)速率為10Mbps。
上圖為單個Lane模塊的內(nèi)部組成,包含了CIL(Lane控制器與借口邏輯器),LP驅(qū)動器,HS驅(qū)動器,LP沖突檢測。
CIL負責(zé)控制各個驅(qū)動器的工作狀態(tài),使得Dp、Dn的工作狀態(tài)可以在HS與LP之間進行切換。
處于HS模式下,差分信號電平擺幅約為200mV;處于LP模式下,單端信號電平擺幅約為1.2V。在LP模式下,根據(jù)各個Line的電平可以確定當(dāng)前Lane的State。
Data Lane差分線電平的高低表明了當(dāng)前處于何種狀態(tài),發(fā)送方通過驅(qū)動差分線一系列的狀態(tài)變化,進入不同的工作模式。
- Burst Mode:High-Speed下的唯一模式,高速數(shù)據(jù)傳輸模式,此時各個Lane的Line工作在差分模式Control Mode:Low Power下的一種模式,可以通過變化不同的state進入其他模式。Escape Mode:Low Power下的特殊模式,在這種模式下可以使用一些特別的功能。
4. CSI-2數(shù)據(jù)幀格式
CSI-2的數(shù)據(jù)包有兩種:長幀和短幀。無論長幀還是短幀,幀開頭都是SoT,幀結(jié)尾都是EoT。在兩次HS傳輸過之間,插入的是LP狀態(tài),一般是LP11等Control狀態(tài),當(dāng)然也可以進入Escape狀態(tài)、進入LPDT或者是進入UPLS。
1) 長幀結(jié)構(gòu)如下
以DPHY為例來分析具體的協(xié)議格式,DPHY長包主要由包頭、包負載、包尾三部分組成,具體如下圖:
長幀包括32bit的包頭(Packet Head,PH)、有效數(shù)據(jù)填充以及16bit的包尾(Packet Foot,PF)。
- PH包括:
數(shù)據(jù)標(biāo)識(Data Identity,DI):1個字節(jié),包括VC(Victual Channel)低兩位和DT(Data Type)的低六位;數(shù)據(jù)計數(shù)(Word Count,WC):2個字節(jié)。從PH結(jié)尾到PF的開頭中間的填充數(shù)據(jù)的長度,單位為字節(jié)。接收端通過WC來判斷報的結(jié)尾位置。錯誤檢測(ECC):1個字節(jié)。包括VC的高兩位,與DI中的VC低兩位構(gòu)成4bit虛擬通道標(biāo)識;低6位為糾錯碼,采用Hamming(漢明碼)的方式,用來糾正PH中一位的錯誤或者發(fā)現(xiàn)兩位的錯誤;
有效數(shù)據(jù)填充:長度=WC*8bit。低位在前,對內(nèi)容沒有任何限制(0~65535字節(jié))。
PF包括:檢驗(CHECKSUM):兩個字節(jié)。低位在前,CHECKSUM采用CCITT的16-bit的CRC校驗,即X16+X12+X5+X0。CRC只能檢測出一個或多個錯誤,并不能糾正錯誤。
2) 短幀結(jié)構(gòu)如下:
DI:1個字節(jié),包括VC的低兩位,和DT(5:0);
短包數(shù)據(jù)域:2個字節(jié),如果該短幀為Data Type的幀同步(Frame Synchronization),則數(shù)據(jù)域表示幀數(shù);如果短幀的Data Type為行同步(Line Synchronization),則數(shù)據(jù)域表示行數(shù)。
錯誤檢測(ECC):1個字節(jié),包括VC的高兩位和六位糾錯碼。
數(shù)據(jù)類型
- 數(shù)據(jù)類型表明了負載數(shù)據(jù)的格式和內(nèi)容,上文提到,根據(jù)長短包的不同,數(shù)據(jù)類型共有8種不同的分類。短包數(shù)據(jù)類型的詳細信息在上文已經(jīng)介紹了,這里說明下長包的5種數(shù)據(jù)類型,詳見下表:
數(shù)據(jù)類型舉例:
比如YUV420格式:4:2:0表示2:1的水平取樣,垂直2:1采樣(每四個Y共用一組UV分量)
數(shù)據(jù)格式如圖所示:
關(guān)于DPHY層,我們并不需要關(guān)注太多,就像網(wǎng)卡的PHY層一樣,我們只需要知道,通過CCI接口發(fā)送配置信息給Camera,通過CSI接口傳輸數(shù)據(jù)。
五、MIPI協(xié)議在手機中應(yīng)用
1. mipi插槽
MIPI攝像頭:
通常手機不會設(shè)計這個擴展槽,一般都會直接在板子上預(yù)留小的排線接口,直接將攝像頭模組插上去即可。
2. MIPI接口的手機內(nèi)部功能框圖
在手機內(nèi)部,各個部件與MIPI協(xié)議棧的關(guān)系如下圖:
其中攝像頭通過CSI與處理器相連。
我們再細化下攝像頭與cpu的模塊圖【以瑞芯微rk3568為例】:
MIPI接口在系統(tǒng)的實現(xiàn)如上圖所示,
-
- 通常一個camera的模組如圖所示,通常包括Lens、Sensor、CSI接口等,其中CSI接口用于視頻數(shù)據(jù)的傳輸;SoC的Mipi接口對接Camera,并通過I2C/SPI控制camera模組;MIPI DPHY提供了4 Lane的Rx接口,由Sensor提供Clock,并通過四條數(shù)據(jù)Lane輸入圖像數(shù)據(jù);DPHY與CSI-2 Host Contrller之間通過PPI(PHY-Protocol Interface)相連,該接口包括了控制,數(shù)據(jù),時鐘等多條信號CSI-2 Host Contrller通過PPI接口收到數(shù)據(jù)后進行解析,完成后通過IDI(Image Data Interface)或者IPI(Image Pixel Interface)輸出到SoC的其他模塊(VICAP或ISP,rk3568是送至VICAP模塊);ISP將處理過的圖片輸出到MP主通道或SP自身通道,SP一般用來預(yù)覽圖片,SP圖片的最大分辨率比MP低;SoC通過APB Slave總線控制CSI-2 Host Contrller的相關(guān)寄存器。
ISP含義
ISP(Image Signal Processor),即圖像信號處理器,用于處理圖像信號傳感器輸出的圖像信號。
它在相機系統(tǒng)中占有核心主導(dǎo)的地位,是構(gòu)成相機的重要設(shè)備。ISP 通過一系列數(shù)字圖像處理算法完成對數(shù)字圖像的效果處理。
瑞芯微rk3568平臺的ISP2.1 處理圖像數(shù)據(jù)的基本流程如下:
ISP 包括:
- MIPI serial camera interface(MIPI)RAW ProcessingRGB ProcessingYUV ProcessingMemory Interface(MI)
MI接口如下:
一般抓圖的順序:
- 攝像頭的初始化(輸出格式、分辨率、輸出速率)使能攝像頭接入主控板卡中的物理通道使能主控板卡中的ISP(圖像信號處理模塊)、并讓ISP知道當(dāng)前有效接入的攝像頭是哪一個(因為可以多個接入,但只能一個有效)。告訴ISP輸進來的數(shù)據(jù)如何處理(顏色空間轉(zhuǎn)換、縮放、裁剪、旋轉(zhuǎn)等)、經(jīng)由那個通道輸出到內(nèi)存/顯存(MP主通道、SP自身通道)。輸出到內(nèi)存
3. Camera-OV13850內(nèi)部結(jié)構(gòu)
下面看一款攝像頭模組OV13850的內(nèi)部結(jié)構(gòu)圖:
定時脈沖發(fā)生器輸出時鐘來訪問成像陣列的行,預(yù)先填充電荷并且按順序?qū)?shù)組的行進行采樣。
在預(yù)先填充電荷和采樣的時間間隔內(nèi),每個像素點的電荷曝光時減少入射光。
這是在滾動快門的體系結(jié)構(gòu)的曝光時間。
曝光時間通過調(diào)整預(yù)先填充電荷和采樣之間的時間間隔控制。
在每一行的像素數(shù)據(jù)采樣后,通過模擬電路(AMP)進一步處理:糾正偏移量和將數(shù)據(jù)乘以相應(yīng)的增益。
模擬處理后通過10位ADC的輸出數(shù)組中的每個像素的數(shù)據(jù)。
ISP(image sensor processor)通過圖像輸出接口單元,經(jīng)過MIPI接口(MCP/MDP)將圖像數(shù)據(jù)發(fā)送出去。
好了,本文暫時講到這里,
后面會繼續(xù)更新幾篇Camera文章。