Camera知識體系架構之驅(qū)動
點擊上方「嵌入式云IOT技術圈」,選擇「置頂公眾號」第一時間查看嵌入式筆記!C
Camera知識體系龐大、又雜、又難,雖然資料也不少,但是都很亂,很容易讓人感到迷茫,失去學習的信心。對于初入這個體系的小白很難找到自己的學習的目標和方法。眾所周知,學好Camera相關的知識,能夠在音視頻相關等行業(yè)拿到非常高的報酬:
根據(jù)最近自己調(diào)試瑞芯微RV1109平臺Camera的一些心得體會,我將它們一一總結出來分享給大家:
1、瑞芯微平臺Camera調(diào)試知識體系
1.1、調(diào)試RK
平臺攝像頭的一些關鍵縮寫語
縮寫 | 全稱 |
---|---|
3A =>(AWB, AE, AF) | 表示AWB, AE, AF的簡寫 |
AE =>(Auto Exposure) | 表示自動曝光 |
AF =>(Auto Focus) | 表示自動對焦 |
AWB =>(Auto White Balance) | 表示自動白平衡 |
FBC =>(Frame Buffer Compressed) | 表示幀緩沖壓縮 |
FBC0 =>f(Rockchip yuv420sp fbc encoder) | 表示RK平臺yuv420sp fbc 編碼 |
FBC2 =>(Rockchip yuv422sp fbc encoder) | 表示RK平臺yuv422sp fbc 編碼 |
RkAiq =>(Rockchip Automatical Image Quality) | 表示RK平臺自動圖像質(zhì)量 |
IQ =>(Image Quality) | 表示圖像質(zhì)量 |
ISP =>(Image Signal Process) | 表示圖像信號處理 |
ISPP =>(Image Signal Post Process) | 表示圖像信號后處理 |
1.2、瑞芯微平臺Camera調(diào)試知識體系劃分
以上分為:軟件控制流程、圖像算法、圖像效果,這是相對于Android平臺來劃分的(圖片來源于韋東山老師專家計劃的Camera相關章節(jié)的學習筆記)。對于驅(qū)動工程師,我們只需要關注以下兩個點:圖像算法:ISP算法(硬件)、3A算法(AE(曝光),AF(自動對焦),AWB(自動白平衡)、后處理算法(HDR、MFNR)圖像效果調(diào)試(Tunning):ISP調(diào)試、3A調(diào)試、后處理算法調(diào)試1.3、瑞芯微平臺中Camera的數(shù)據(jù)流通路
如上圖(圖片來源于瑞芯微原廠文檔)所示,這張圖反饋了以下信息:Camera數(shù)據(jù)經(jīng)過ISP20采集,ISP20再輸出經(jīng)過一系列圖像處理算法后的數(shù)據(jù),RkAiq不斷從ISP20獲取統(tǒng)計數(shù)據(jù),并經(jīng)過3A等算法生成新的參數(shù)反饋給ISP20,如上所示,以上的設備節(jié)點并不是固定的,它可能會改變,我們可以使用media-ctl查看對應的節(jié)點。RKISP
驅(qū)動主要是依據(jù)v4l2 / media framework
實現(xiàn)硬件的配置、中斷處理、控制 buffer輪轉,以及控制subdevice
(如mipi dphy
及sensor)的上下電等功能,它的處理過程其實是非常復雜的,我們來看下面這張圖(圖片來源于瑞芯微原廠文檔)就知道了:1.3.1、通過搜索/sys
目錄下查找對應的節(jié)點名稱
grep?""?/sys/class/video4linux/*/name
來獲取相應的節(jié)點,如下所示,這是通過grep "" /sys/class/video4linux/*/name
來獲取的節(jié)點信息:ISP
節(jié)點有多個video節(jié)點的對應關系,其實它們是位于不同的media設備下的,因此在不同的media下所對應的video節(jié)點也是不同的。其中,冒號前面的一部分表示video節(jié)點,冒號后面一部分就是ISP
節(jié)點:如上所示,video節(jié)點為:/sys/class/video4linux/v4l-subdev0/name
ISP
節(jié)點為:rkispp-subdev
1.3.2、通過media-ctl獲取拓撲信息
我們可以通過media-ctl
獲取拓撲信息,然后找到相應的數(shù)據(jù)通路,分別輸入以下指令:media-ctl?-p?-d?/dev/media0
media-ctl?-p?-d?/dev/media1
media-ctl?-p?-d?/dev/media2
media-ctl?-p?-d?/dev/media3
然后我們就可以找到ISP20輸出的四路數(shù)據(jù)的信息了:也就是說,我們在應用程序中只需要去操作:/dev/video30??或??rkispp_m_bypass
/dev/video31??或??rkispp_scale0
/dev/video32??或??rkispp_scale1
/dev/video33??或??rkispp_scale2
就可以對攝像頭進行驅(qū)動了,另外:rkispp_m_bypass這路數(shù)據(jù)流比較特殊,其不支持設置分辨率,其輸出分辨率由ISP輸入的分辨率決定,可以通過media-ctl查看拓撲結構確定ISP輸入的分辨率:如上所示,rkispp_m_bypass這路輸出的分辨率為1920x1080。其它三路數(shù)據(jù):rkispp_scale0、rkispp_scale1、rkispp_scale2節(jié)點支持縮放,每一路支持的最大分辨率如下所示:節(jié)點名稱 | 視頻設備ID | 最大支持寬度 | 支持輸出格式 |
---|---|---|---|
rkispp_m_bypass | /dev/video30 | 不支持設置分辨率,不支持縮放 | NV12/NV16/YUYV/FBC0/FBC2/ |
rkispp_scale0 | /dev/video31 | max width: 3264,最大支持8倍縮放 | NV12/NV16/YUYV |
rkispp_scale1 | /dev/video32 | max width: 1280,最大支持8倍縮放 | NV12/NV16/YUYV |
rkispp_scale2 | /dev/video33 | max width: 1280,最大支持8倍縮放 | NV12/NV16/YUYV |
1.3.3、圖像優(yōu)化調(diào)試3A算法
當Sensor輸出RAW BAYER RGB格式時,如RGGB,BGGR,GBRG,GRBG等,需要ISP20提供一系列圖像處理算法來優(yōu)化圖像效果,此時需要RkAiq模塊介入。SDK提供了一種3A獨立進程的方式(ispserver)集成了RkAiq庫librkaiq.so,當我們使用RK提供的RKMEDIA進行編程獲取據(jù)流時,能夠得到具有ISP調(diào)試效果的圖像。2、RKISP
調(diào)試
21、查看攝像頭sensor驅(qū)動的適配情況
我選用的是gc2053
這款攝像頭,并且在Linux設備樹中已經(jīng)做了相應的支持,故我們可以通過獲取內(nèi)核啟動信息來查看攝像頭驅(qū)動的加載情況,獲取方法:dmesg?|?grep?"gc2053"
我們可以看到如下信息:其中,如果能在內(nèi)核信息中看到以上兩行信息:[????0.831096]?gc2053?1-0037:?Detected?GC2053?sensor
[????0.831201]?rockchip-mipi-dphy-rx?ff4b0000.csi-dphy:?match?m00_f_gc2053?1-0037:bus?type?4
即表示攝像頭已經(jīng)適配成功了!2.2、獲取驅(qū)動版本號
搜索相應的字段:dmesg?|?grep?"rkisp?driver?version"
dmesg?|?grep?"rkispp?driver?version"
如下:或者通過以下命令獲?。?/p>cat?/sys/module/video_rkisp/parameters/version
cat?/sys/module/video_rkispp/parameters/version
如下:2.3、如何判斷RKISP
驅(qū)動加載狀態(tài)
RKISP
驅(qū)動如果加載成功,會有video及media設備存在于/dev/
目錄下。系統(tǒng)中可能存在多個/dev/video
設備,通過/sys可以查詢到RKISP
注冊的video節(jié)點:grep?''?/sys/class/video4linux/video*/name
查詢信息如下:當然也可以通過media-ctl
命令來打印拓撲結構查看pipeline的狀態(tài)是否正常,如果RKISP驅(qū)動加載成功,則在內(nèi)核中能看到如下打?。?/p>dmesg?|?grep?Async
往期精彩
超輕量級網(wǎng)紅軟件定時器multi_timer(51 stm32雙平臺實戰(zhàn))使您的軟件運行起來: 防止緩沖區(qū)溢出(C語言精華帖)RT-Thread UART設備驅(qū)動框架初體驗(中斷方式接收帶\r\n的數(shù)據(jù))
數(shù)顯儀表盤顯示“速度、方向、計數(shù)器”的跑馬燈
MCU串口命令解析器的實現(xiàn)TKM32F499評估板串口通信學習與實踐筆記
覺得本次分享的文章對您有幫助,隨手點
[在看]
并轉發(fā)分享,也是對我的支持。