關(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簡介
1. 產(chǎn)品參數(shù)
品牌:Omnivision
型號: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ī)模塊,。
以下是測試用的攝像頭&擴(kuò)展板:
2. 特性
●鏡頭尺寸:1/3.06英寸 ●像素大小:1.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)源文件及對應(yīng)腳本
默認(rèn)sdk里面已經(jīng)將支持的所有攝像頭驅(qū)動(dòng)都添加到了內(nèi)核,所以不需要移植該驅(qū)動(dòng)了,,
但是還是要確認(rèn)下移植驅(qū)動(dòng)對應(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信號:GPIO3 B6
power down信號:GPIO4 B4
I2C通道:4
clock:cif
3)設(shè)備樹節(jié)點(diǎn)
參考sdk中其他平臺的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è)文件增加對應(yīng)攝像頭信息,,
一口君直接參考的其他文件,
然后找一個(gè)相近型號的攝像頭修改的
三,、查看攝像頭相關(guān)信息
1. 開機(jī)log
移植成功后,確認(rèn)下對應(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
它對應(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的簡稱
它的Source pad0 鏈接到"rockchip-csi2-dphy0"的pad0,并且當(dāng)前的狀態(tài)是 ENABLED,。
三,、拍照測試
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. 測試顯示信息test_pattern
參數(shù)test_pattern,,可以用于測試顯示圖像
0:攝像頭
1-3 測試圖片 命令實(shí)例:
5. 修改Entity的format、size
舉例一,,GC2053攝像頭支持多個(gè)分辨率的輸出,,默認(rèn)為1920x1080。現(xiàn)將輸出分辨率改為640x480:
五,、遇到問題解決
1. 解決閃退
主要是camera3_profiles_rk356x.xml和camera3_profiles.xml這兩個(gè)文件中沒有ov13850的信息
所以找到這兩個(gè)文件,,增加相對應(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è)置不對
六、后續(xù)
后面還有一些工作需要進(jìn)一步研究:
目前只調(diào)通了1個(gè)攝像頭,,后需要會(huì)再增加1個(gè)2lane的攝像頭
視頻顏色還有點(diǎn)發(fā)綠,,還需要進(jìn)一步調(diào)試
有一起玩瑞芯微平臺的老鐵,后臺猛戳我
更多信息可以來這里獲取==>>電子技術(shù)應(yīng)用-AET<<
電子技術(shù)應(yīng)用專欄作家 一口Linux
原文鏈接:瑞芯微 | 攝像頭ov13850移植筆記