關于瑞芯微的文章,之前寫了3篇,鏈接如下:
《1.瑞芯微rk356x板子快速上手》
《2.Linux驅動|瑞芯微rtc-hym8563移植筆記》
《3.Linux驅動 | Linux內核 RTC時間架構-基于瑞芯微》
后面會持續(xù)更新瑞芯微相關文章,有興趣的老鐵加關注。
0、環(huán)境
一、ov13850簡介
1. 產品參數(shù)
品牌:Omnivision
型號:CMK-OV13850
接口:MIPI
像素:1320W
OV13850彩色圖像傳感器是一款低電壓、高性能1/3.06英寸1320萬像素CMOS圖像傳感器,使用OmniBSI+?技術提供了單-1320萬像素(4224×3136)攝像頭的功能。通過串行攝像頭控制總線(SCCB)接口的控制,它提供了全幀、下采樣、開窗的10位MIPI圖像。
OV13850擁有一個能夠在10位1320萬像素分辨率下以每秒24幀(fps)的速度運行的圖像陣列,用戶可以完全控制圖像質量、格式和輸出數(shù)據(jù)傳輸。所有需要的圖像處理功能,包括曝光控制、白平衡、缺陷像素消除等,都可以通過SCCB接口進行編程。
此外,OmniBSI圖像傳感器使用專有的傳感器技術,通過減少或消除固定圖案噪聲、污跡等常見的圖像污染光源來提高圖像質量,從而產生干凈、完全穩(wěn)定的彩色圖像。
為了提供定制信息,OV13850包括一個單編程(OPT)存儲器。OV13850擁有最多4車道的MIPI接口。
OV13850適用于低功耗相機模塊。
以下是測試用的攝像頭&擴展板:
2. 特性
●鏡頭尺寸:1/3.06英寸 ●像素大?。?.12毫米×1.12毫米 ●31.2°CRA為6mm z高度 ●可編程控制幀速率,鏡像和翻轉,裁剪和窗口 ●1320萬像素AT30fps ●雙線串行總線控制(SCCB) ●閃光燈輸出控制閃光 ●支持輸出格式:10位RAW RGB ●支持圖像大小:13.2MP(4224×3136)、10MP(4224×2376)、4K2K(3840×2160)、EIS 1080P(2112×1188)、EIS 720P(1408×792)、more3 ●支持2×2 Binning ●可達4車道MIPI串行輸出接口 ●標準系列SCCB接口 ●8k bit的嵌入式一次性可編程(OTP)存儲器(見側注) ●兩個片上鎖相環(huán)(PLLs) ●可編程控制:增益、曝光、幀率、圖像大水、水平反射鏡、垂直翻轉裁剪和平移 ●內置溫度傳感器 ●圖像質量控制:缺陷校正,自動黑電平校準,鏡頭陰影校正,和高度計行HDR?!癖WC傳感器結溫:-300C到+850C ●電源核心:1.14V-1.26V;模擬:2.6-3.0V輸入/輸出:1.7-3.0V ●封裝:PLCC40
3. ov13850引腳圖
4. ov13850功能模塊
定時脈沖發(fā)生器輸出時鐘來訪問成像陣列的行,預先填充電荷并且按順序對數(shù)組的行進行采樣。
在預先填充電荷和采樣的時間間隔內,每個像素點的電荷曝光時減少入射光。
這是在滾動快門的體系結構的曝光時間。
曝光時間通過調整預先填充電荷和采樣之間的時間間隔控制。
在每一行的像素數(shù)據(jù)采樣后,通過模擬電路(AMP)進一步處理:糾正偏移量和將數(shù)據(jù)乘以相應的增益。
模擬處理后通過10位ADC的輸出數(shù)組中的每個像素的數(shù)據(jù)。
ISP(image sensor processor)通過圖像輸出接口單元,經(jīng)過mipi接口(MCP/MDP)將圖像數(shù)據(jù)發(fā)送出去。
5. 像素數(shù)組
OV13850傳感器的圖像數(shù)組4256列3152行(13414912像素)
顏色過濾器是安排在Bayer模式
Binning mode 2x2 binning
Binning mode 通常用于低分辨率
6. mirror 和 flip
OV13850提供圖像mirror(左右翻轉) 和 flip(上下翻轉)模式
二、驅動移植
瑞芯微支持的攝像頭,有個support list,
此次從該list中選擇了ov13850
1. 驅動源文件及對應腳本
默認sdk里面已經(jīng)將支持的所有攝像頭驅動都添加到了內核,所以不需要移植該驅動了,
但是還是要確認下移植驅動對應的一些信息
2. 設備樹
1)典型ov系列攝像頭鏈接示意圖
ov系列攝像頭與SOC連接的主要的引腳有:i2c、rst、pwdn、mclk、MIPI Clk、MIPI DATA
這幾根線是驅動工程師必須捋清楚的
2)電路圖
本次我們直接將攝像頭插在公版的視頻接口,用的是通道0,使用了4個lane【不知道具體硬件信息就問硬件工程師】
由電路圖可知,幾個關鍵引腳關系:
reset信號:GPIO3 B6
power down信號:GPIO4 B4
I2C通道:4
clock:cif
3)設備樹節(jié)點
參考sdk中其他平臺的ov13850節(jié)點來填寫
設備樹的信息最終轉換成i2c_client,并傳遞給ov13850驅動ov13850_probe()compatible = "ovti,ov13850";與驅動的of_match_table 保持一致
關于攝像頭驅動,
彭老師后面會繼續(xù)更一篇文章講解。
3. 安卓配置文件
在以下兩個文件增加對應攝像頭信息,
一口君直接參考的其他文件,
然后找一個相近型號的攝像頭修改的
三、查看攝像頭相關信息
1. 開機log
移植成功后,確認下對應的驅動log
2. 查看ov13850設備
驅動加載成功后,會有以下信息
查看攝像頭設備節(jié)點:
3. 查看sys文件系統(tǒng)中文件信息
內核會為攝像頭在目錄/sys/class/video4linux下分配設備信息描述文件
4. 查看拓撲 media-ctl -d /dev/media0 -p
從entity70信息中可以看到:
該Entity完整的名稱是:m00_b_ov13850 4-0010
它是一個V4L2 subdev(Sub-Device) Sensor
它對應的節(jié)點是/dev/v4l-subdev3,應用程序(如v4l2-ctl)可以打開它,并進行配置
它僅有一個輸出(Source)節(jié)點,記為pad0
它的輸出格式是[fmt:SBGGR10/4224x3136],其中SBGGR10是一種mbus-code的簡稱
它的Source pad0 鏈接到"rockchip-csi2-dphy0"的pad0,并且當前的狀態(tài)是 ENABLED。
三、拍照測試
1. 抓幀
【看到<<<<<<<<< 7.51 fps 說明成功】
參數(shù)說明
2. 顯示圖片:
將文件**/sdcard/out.yuv從板子通過adb pull**命令拷貝出來,
再拷貝到ubuntu中,執(zhí)行以下命令顯示圖片【用其他可以打開yuv格式圖片的工具也可以】
【拍照時選擇其他較高分辨率會出錯,暫時還沒解決這個問題,有知道的可以聯(lián)系我:yikoupeng】
四、參數(shù)設置
1. 顯示攝像頭參數(shù)
2. 增加曝光exposure
exposure值區(qū)間為: 4-3324 命令實例:
3. 增加圖片亮度analogue_gain
analogue_gain用于設置顯示的圖像的亮度
analogue_gain值區(qū)間:16-248
命令實例:
analogue_gain=244現(xiàn)象【效果非常明顯】
4. 測試顯示信息test_pattern
參數(shù)test_pattern,可以用于測試顯示圖像
0:攝像頭
1-3 測試圖片 命令實例:
5. 修改Entity的format、size
舉例一,GC2053攝像頭支持多個分辨率的輸出,默認為1920x1080?,F(xiàn)將輸出分辨率改為640x480:
五、遇到問題解決
1. 解決閃退
主要是camera3_profiles_rk356x.xml和camera3_profiles.xml這兩個文件中沒有ov13850的信息
所以找到這兩個文件,增加相對應的攝像頭信息 改文件位于sdk的目錄如下:
文件camera3_profiles.xml參數(shù)的說明,瑞芯微官方有相應的說明文檔
2. app 提示沒有權限連接&打開設備失敗
同時將設備樹文件 將mipi_in_ucam0里的reg修改為1,如果有其他攝像頭信息,一次往后填寫或者刪除。
【這個reg是什么意思,有知道的老鐵可以給我留言】
3. APP打開設備失敗
從log看,沒有任何permission問題,攝像頭也打開了,但是就是連接失敗,主要是xml文件的sensorType 設置不對
六、后續(xù)
后面還有一些工作需要進一步研究:
目前只調通了1個攝像頭,后需要會再增加1個2lane的攝像頭
視頻顏色還有點發(fā)綠,還需要進一步調試
有一起玩瑞芯微平臺的老鐵,后臺猛戳我
更多信息可以來這里獲取==>>電子技術應用-AET<<
電子技術應用專欄作家 一口Linux
原文鏈接:瑞芯微 | 攝像頭ov13850移植筆記