1. USB簡介
USB:Universal Serial Bus(通用串行總線)。是一種常用于電子設備間通訊的通用標準接口。USB 總線作為一種高速串行總線,其極高的傳輸速度可以滿足高速數據傳輸的應用環境要求。
具有供電簡單(可總線供電)、安裝配置便捷(支持即插即用和熱插拔)、 擴展端口簡易(通過集線器最多可擴展127 個外設)、傳輸方式多樣化(4 種傳輸模式),以及兼容良好(產品升級后向下兼容)等優點。
1.1 EASY EAI Nano-TB USB資源介紹
EASY EAI Nano-TB有一路USB3.0HOST,經過一個USB Hub芯片擴展出了2個USB3.0HOST接口,另外還有一路直出的USB2.0 HOST接口。

1.2 USB攝像頭接入說明
通常我們建議只接入一個USB攝像頭。
如果需要接入多個USB攝像頭,可考慮采用Hub擴展多路USB的方式。雖然理論上可擴展127個設備,但在實際接入多個USB攝像頭時需要考慮USB通道的帶寬,USB集線層數(最大層數為7層--含RootHub),以及要解決設備ID相同的問題,因此非必要【不建議】這么接。

注意:雖然USB支持熱插拔,但在沒給底板加裝外殼保護的情況下,很容易觸碰到底板上的器件,甚至板卡附近有金屬零件很容易造成板卡短路。因此也建議在插拔外設時,最好確保電源已經完全切斷。
1.3 USB設備的接入管理介紹
在USB攝像頭或者USB Hub進行物理連接后,我們需要知道這些USB設備是否被系統識別出來,則需要通過lsusb命令查看。
lsusb

另外,在文件系統中,USB Device管理目錄為/sys/bus/usb/devices,可在此處查看到從root_hub開始掛載的USB設備以及Hub設備的拓撲關系。
USB設備的設備命名方式規則如下:

1.4 尋找可用的設備節點
rockchip平臺,一個MIPI-CSI接口會對應20多個video節點(設備樹定了就會生成這么多個)而且MIPI-CSI camera對應的節點,會在修改內核設備樹的時候固定下來(即:內核配好了MIPI-CSI Camera個數,無論MIPI-CSI攝像頭是否有接上,它的video節點情況都是不會根據MIPI-CSI Camera的接入情況而【動態】改變)。
而一個USB camera會對應2個video節點,【一般會】排列在MIPI-CSI camera的后面。通過拔插USB,觀察對比video節點的變化,就可以判斷出哪2個是USB camera的設備節點了。

但是【最準確】的方法,還是要看一下這個video節點的【描述信息】。Linux的v4l2框架會把這些節點的描述信息統一放在/sys/class/video4linux/目錄下,如下圖所示。

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

通過cat命令,可以用查看這個name的內容是什么。
cat /sys/class/video4linux/video22/name

那么,我們則需要使用以下命令,對【所有video節點】進行掃描與【篩選】。
grep -i "usb" /sys/class/video4linux/video*/name

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

運行例程命令如下所示(51,就是/dev/video51):
./test-usbCam-single 51
2.4 運行效果
執行效果如下所示。

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

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

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

3.1 源碼說明
int main() { if(1 == argc){ printf("\nerr: Missing parameter!\n"); printf("================= [usage] ==================\n"); printf("example:\n"); printf("\t%s <51/52>\n", argv[0]); printf("--------------------------------------------\n"); return 0; } int cameraIndex = atoi(argv[1]); char *pbuf = NULL; int ret = 0; int skip = 0; FILE *fp = NULL; ret = usbcamera_init(CAMERA_INDEX, 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 = usbcamera_getframe(CAMERA_INDEX, pbuf); if (ret) { printf("error: %s, %d\n", __func__, __LINE__); goto exit1; } } /* tips: 可以在Ubuntu下用mplayer播放錄制圖像 * mplayer -demuxer rawvideo -rawvideo w=1280:h=720: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: usbcamera_exit(CAMERA_INDEX); exit3: return ret; }
其中usbcamera_init(),usbcamera_getframe(),usbcamera_exit()是對v4l2接口調用的易用化封裝。具體實現于02_camera/commonApi/usb_camera/usb_camera.c。
-
攝像頭
+關注
關注
61文章
5108瀏覽量
103425 -
瑞芯微
+關注
關注
27文章
822瀏覽量
54623 -
EASY-EAI靈眸科技
+關注
關注
4文章
82瀏覽量
3710 -
RV1126B
+關注
關注
0文章
70瀏覽量
229
發布評論請先 登錄
瑞芯微(EASY EAI)RV1126B 音頻輸入
瑞芯微(EASY EAI)RV1126B PWM使用
瑞芯微(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)開發板試用】+1、開箱上電
【EASY EAI Nano-TB(RV1126B)開發板試用】桌面系統功能測試-驅動攝像頭-Mediapipe人體姿態檢測1
【EASY EAI Nano-TB(RV1126B)開發板試用】介紹、系統安裝
【飛凌嵌入式RV1126B開發板】+兩款開發板之比較
RV1126系列選型指南:從RV1126到RV1126B,一文看懂升級差異
【免費試用】EASY EAI Nano-TB(RV1126B)開發套件評測
替代升級實錘!實測RV1126B,CPU性能吊打RV1126
瑞芯微(EASY EAI)RV1126B 人體關鍵點識別
瑞芯微(EASY EAI)RV1126B USB攝像頭
評論