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

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


1.3 接線說明

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

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

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

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

隨便進入一個描述,如video22。

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

再將下載好的單例復制進入虛擬機的文件系統,過程如下圖所示。



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

2.3 例程運行
通過串口調試或ssh調試,進入板卡后臺,定位到例程部署的位置,如下所示:
cd /userdata
運行例程命令如下所示:
./test-mipiCam 222.4 運行效果
執行效果如下所示。

例程運行完之后,會在/tmp目錄下得到一張photo圖片。回到虛擬機里,新開一個終端窗口,通過scp命令把圖片拷回來:

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

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接口調用的易用化封裝。具體實現于02_camera/commonApi/mipi_camera.c。
-
瑞芯微
+關注
關注
27文章
708瀏覽量
53628 -
攝像頭模組
+關注
關注
2文章
59瀏覽量
6749 -
EASY-EAI靈眸科技
+關注
關注
4文章
43瀏覽量
3429 -
RV1126B
+關注
關注
0文章
26瀏覽量
64
發布評論請先 登錄
瑞芯微(EASY EAI)RV1126B AHD攝像頭
瑞芯微(EASY EAI)RV1126B 音頻輸入
【EASY EAI Nano-TB(RV1126B)開發板試用】+初識篇
【EASY EAI Nano-TB(RV1126B)開發板試用】開箱測評
【EASY EAI Nano-TB(RV1126B)開發板試用】命令行功能測試-shell腳本進行IO控制-燈閃
【EASY EAI Nano-TB(RV1126B)開發板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈項目
【EASY EAI Nano-TB(RV1126B)開發板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈按鈕項目
請問各位大佬,如何解決,瑞芯微 RV1126B 使用 mpp 自帶工具 調試時,內核直接報錯崩潰!
【EASY EAI Nano-TB(RV1126B)開發板試用】+1、開箱上電
芯微Rockchip RV1109和RV1126芯片規格
RV1126系列選型指南:從RV1126到RV1126B,一文看懂升級差異
【免費試用】EASY EAI Nano-TB(RV1126B)開發套件評測
替代升級實錘!實測RV1126B,CPU性能吊打RV1126

瑞芯微(EASY EAI)RV1126B MIPI-CSI攝像頭
評論