1. MIPI攝像頭簡介
1.1 MIPI CSI2接口簡介
MIPI (Mobile Industry Processor Interface):ARM, Nokia, ST ,TI等公司在2003年成立的一個聯(lián)盟所定的接口。目的是把手機(jī)等移動設(shè)備內(nèi)部的接口如:攝像頭、顯示屏接口、射頻/基帶接口等標(biāo)準(zhǔn)化,從而減少手機(jī)等移動設(shè)備設(shè)計(jì)的復(fù)雜程度和增加設(shè)計(jì)靈活性。
工作組(Work Group):MIPI聯(lián)盟下有許多的工作組,不同的工作組負(fù)責(zé)定義對應(yīng)設(shè)備的標(biāo)準(zhǔn)。其中包括有:Camera工作組、Display工作組、高速多端鏈接工作組等十幾個工作組。
MIPI CSI-2接口是由MIPI聯(lián)盟下的Camera工作組指定的CSI(Camera Serial Interface)的第2版接口標(biāo)準(zhǔn)。硬件層面:最大支持4個虛擬通道(Lane)傳輸數(shù)據(jù),1個Lane在硬件上體現(xiàn)就是一對差分信號線(見下方原理圖),每個Lane的最大通訊速率為2.0Gbps。軟件層面:MIPI CSI-2協(xié)議棧主要由應(yīng)用層、協(xié)議層、物理層組成,其中協(xié)議層又可以分為:像素/字節(jié)組包/解包層、底層協(xié)議層、通道管理層。
1.2 硬件接口資源介紹
EASY EAI Nano-TB開發(fā)板具有2路MIPI CSI-2接口。每路引出了4個Lane。位置定義如下所示。

EASY EAI Nano-TB默認(rèn)搭配IMX415單目攝像頭。同時配有一根0.5mm間距的40pin FPC反向線。
反向線:兩端的藍(lán)色標(biāo)識不在同一側(cè)面。
同向線:兩端的藍(lán)色標(biāo)識處于同一側(cè)面。


1.3 接線說明

* 接線必須在斷電時進(jìn)行操作。
* 采用反向線連接IMX415攝像頭與Cmaera1接口。(注意:用錯線會燒壞攝像頭或者核心板,因此在接線時務(wù)必要小心。)
* 接線端子卡扣與FPC線的藍(lán)色塑料標(biāo)識必須位于同一側(cè)。如下圖所示。

1.4 查看設(shè)備情況
可以通過dmesg命令,檢查MIPI-CSI2接口模塊是否正常工作。
dmesg | grep "csi2-.phy"攝像頭正常掛載的情況如下所示??梢钥吹剑?/p>
在dphy0接口上有一個sensor型號為:imx415的攝像頭,MIPI-CSI2地址為:1-0036;
在dphy3接口上有一個sensor型號為:imx415的攝像頭,MIPI-CSI2地址為:4-0036。

當(dāng)沒能出現(xiàn)目標(biāo)camera節(jié)點(diǎn)時,就需要檢查FPC排線是否正常連接,請檢查排線的連接是否與“1.3接線說明”一致。
1.5 尋找可用的設(shè)備節(jié)點(diǎn)
rockchip平臺,一個MIPI-CSI接口會對應(yīng)20多個video節(jié)點(diǎn)(設(shè)備樹定了就會生成這么多個),如下圖所示。

注意:CSI0并不一定是對應(yīng)著video0~24,這個要根據(jù)設(shè)備樹的實(shí)際情況對應(yīng)生成。
而且MIPI-CSI camera對應(yīng)的節(jié)點(diǎn),會在修改內(nèi)核設(shè)備樹的時候固定下來(即:內(nèi)核配好了MIPI-CSI Camera個數(shù),無論MIPI-CSI攝像頭是否有接上,它的video節(jié)點(diǎn)情況都是不會根據(jù)MIPI-CSI Camera的接入情況而【動態(tài)】改變)。
因此,用戶需要找到這些節(jié)點(diǎn)所對應(yīng)的描述信息是什么。Linux的v4l2框架會把這些節(jié)點(diǎn)的描述信息統(tǒng)一放在/sys/class/video4linux/目錄下,如下圖所示。

隨便進(jìn)入一個描述,如video22。

通過cat命令,可以用查看這個name的內(nèi)容是什么。rockchip芯片定義:如果這個name是mainpath或者selfpath。則這個“video22”就是可用節(jié)點(diǎn)。
在終端任意目錄執(zhí)行下面這條命令,可以快速掃描所有的節(jié)點(diǎn)的“name”描述。
grep "mainpath" /sys/class/video4linux/video*/name
因此,/dev/video22和/dev/video23都是MIPI-CSI0的可用節(jié)點(diǎn)。
2. 快速上手
2.1 開發(fā)環(huán)境準(zhǔn)備
如果您初次閱讀此文檔,請閱讀《入門指南/開發(fā)環(huán)境準(zhǔn)備/Easy-Eai編譯環(huán)境準(zhǔn)備與更新》,并按照其相關(guān)的操作,進(jìn)行編譯環(huán)境的部署。
在PC端Ubuntu系統(tǒng)中執(zhí)行run腳本,進(jìn)入EASY-EAI編譯環(huán)境,具體如下所示。
cd ~/develop_environment
./run.sh 
2.2 源碼下載以及例程編譯
首先,在虛擬機(jī)后臺終端,執(zhí)行以下命令,創(chuàng)建外設(shè)單例源碼管理目錄:
cd /opt
mkdir -p EASY-EAI-Nano-TB/demo 首先,到【百度網(wǎng)盤】上下載相關(guān)的單例程序:
鏈接:https://pan.baidu.com/s/1Br608Hiff2Xs65PzWO_qWQ?pwd=1234
提取碼:1234
比如把單例程序下載到:此電腦\D:\BaiduNetdisk (無規(guī)定,用戶可自主選擇),如下圖所示。

再將下載好的單例復(fù)制進(jìn)入虛擬機(jī)的文件系統(tǒng),過程如下圖所示。



最后,進(jìn)入到對應(yīng)的例程目錄執(zhí)行編譯操作,具體命令如下所示:
cd EASY-EAI-Nano-TB/demo/02_camera
./build.sh 注:
* 由于依賴庫部署在板卡上,因此交叉編譯過程中必須保持/mnt掛載。

2.3 例程運(yùn)行
通過串口調(diào)試或ssh調(diào)試,進(jìn)入板卡后臺,定位到例程部署的位置,如下所示:
cd /userdata
運(yùn)行例程命令如下所示:
./test-mipiCam 222.4 運(yùn)行效果
執(zhí)行效果如下所示。

例程運(yùn)行完之后,會在/tmp目錄下得到一張photo圖片?;氐教摂M機(jī)里,新開一個終端窗口,通過scp命令把圖片拷回來:

然后把photo用mplayer命令播放出來,如下所示。
mplayer -demuxer rawvideo -rawvideo w=1920:h=1080:format=bgr24 photo -loop 0例程默認(rèn)分辨率為1920x1080,故w和h的參數(shù)對應(yīng)填入1920和1080。當(dāng)出現(xiàn)圖片異常時,說明分辨率等不太對應(yīng)于手頭的攝像頭,所以需要調(diào)整mipicamera_init()的分辨率,例如1280x720。命令執(zhí)行如下所示。

3. MIPI攝像頭測試案例
示例代碼路徑為:02_camera/test-mipiCam/main.c。MIPI Camera API的測試案例代碼邏輯流程如下所示:

3.1 源碼說明
int main(int argc, char **argv)
{
int ret = 0;
if(1 == argc){
printf("\nerr: Missing parameter!\n");
printf("================= [usage] ==================\n");
printf("example:\n");
printf("\t%s <22/30>\n", argv[0]);
printf("--------------------------------------------\n");
return 0;
}
char *pbuf = NULL;
int skip = 0;
FILE *fp = NULL;
int cameraIndex = atoi(argv[1]); //通常是video22
ret = mipicamera_init(cameraIndex, CAMERA_WIDTH, CAMERA_HEIGHT, 0);
if (ret) {
printf("error: %s, %d\n", __func__, __LINE__);
goto exit3;
}
pbuf = (char *)malloc(IMAGE_SIZE);
if (!pbuf) {
printf("error: %s, %d\n", __func__, __LINE__);
ret = -1;
goto exit2;
}
//跳過前10幀
skip = 10;
while(skip--) {
ret = mipicamera_getframe(cameraIndex, pbuf);
if (ret) {
printf("error: %s, %d\n", __func__, __LINE__);
goto exit1;
}
}
/* tips: 可以在Ubuntu下用mplayer播放錄制圖像
* mplayer -demuxer rawvideo -rawvideo w=1920:h=1080:format=bgr24 photo -loop 0
*/
fp = fopen("/tmp/photo", "w");
if (!fp) {
printf("error: %s, %d\n", __func__, __LINE__);
ret = -1;
goto exit2;
}
fwrite(pbuf, 1, IMAGE_SIZE, fp);
fclose(fp);
exit1:
free(pbuf);
pbuf = NULL;
exit2:
mipicamera_exit(cameraIndex);
exit3:
return ret;
}其中mipicamera_init(),mipicamera_getframe(),mipicamera_exit()是對v4l2接口調(diào)用的易用化封裝。具體實(shí)現(xiàn)于02_camera/commonApi/mipi_camera.c。
-
瑞芯微
+關(guān)注
關(guān)注
27文章
838瀏覽量
54643 -
攝像頭模組
+關(guān)注
關(guān)注
2文章
60瀏覽量
6792 -
EASY-EAI靈眸科技
+關(guān)注
關(guān)注
4文章
93瀏覽量
3720 -
RV1126B
+關(guān)注
關(guān)注
0文章
81瀏覽量
238
發(fā)布評論請先 登錄
瑞芯微(EASY EAI)RV1126B AHD攝像頭
瑞芯微(EASY EAI)RV1126B 音頻輸入
瑞芯微(EASY EAI)RV1126B PWM使用
瑞芯微(EASY EAI)RV1126B 音頻輸出
瑞芯微(EASY EAI)RV1126B AOV方案
【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】開箱測評
【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】+1、開箱上電
【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】桌面系統(tǒng)功能測試-驅(qū)動攝像頭-Mediapipe人體姿態(tài)檢測1
【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】介紹、系統(tǒng)安裝
【飛凌嵌入式RV1126B開發(fā)板試用體驗(yàn)】初識飛凌嵌入式RV1126B開發(fā)板試
RV1126系列選型指南:從RV1126到RV1126B,一文看懂升級差異
【免費(fèi)試用】EASY EAI Nano-TB(RV1126B)開發(fā)套件評測
瑞芯微RV1126B特性概述
瑞芯微(EASY EAI)RV1126B 人員檢測方案
瑞芯微(EASY EAI)RV1126B 網(wǎng)絡(luò)攝像頭方案
瑞芯微(EASY EAI)RV1126B MIPI-CSI攝像頭
評論