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