新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM的嵌入式USB圖像采集與顯示

基于ARM的嵌入式USB圖像采集與顯示

作者: 時(shí)間:2011-11-14 來源:網(wǎng)絡(luò) 收藏

引言

本文引用地址:http://butianyuan.cn/article/150064.htm

  目前市場(chǎng)上大部分的與處理系統(tǒng)是DSP 芯片的,這種與處理系統(tǒng)成本高、功耗高、體積約束等特點(diǎn)并不適用于一些簡(jiǎn)單的應(yīng)用。隨著 攝像頭的普及和芯片的快速發(fā)展,將二者結(jié)合的便攜性越來越受人們歡迎。本文介紹了一種三星S3C2440A 芯片的 攝像頭方案,該方案具有良好的可移植性和擴(kuò)展性,并且成本、大小和實(shí)時(shí)處理都能夠滿足市場(chǎng)需求。

  1 系統(tǒng)架構(gòu)

  系統(tǒng)通過當(dāng)前市場(chǎng)上應(yīng)用最廣泛的中芯微公司生產(chǎn)的zc301p 芯片的 攝像頭進(jìn)行圖像采集,然后將圖像信息傳送到 芯片中進(jìn)行處理,最終通過基于Qt/Embedded 編寫的圖形程序在LCD 上實(shí)時(shí)。系統(tǒng)的整體架構(gòu)如圖1 所示。

  

  2 視頻圖像采集

  系統(tǒng)采用中芯微公司生產(chǎn)的zc301p 芯片的USB 攝像頭作為圖像采集設(shè)備,并介紹了基于Video4Linux 編程協(xié)議進(jìn)行視頻圖像采集的一般過程。

  2.1 USB 攝像頭驅(qū)動(dòng)

  Linux 內(nèi)核能夠很好地支持OHCI(開放式主機(jī)控制接口協(xié)議),并且能夠很好地支持包括OV511系列攝像頭在內(nèi)的各種各樣的USB 設(shè)備,但是并不包括zc301pUSB 攝像頭。直到后來2.6.27 版本左右的內(nèi)核中才增加了針對(duì)zc301 系列芯片的驅(qū)動(dòng),統(tǒng)稱為L(zhǎng)inux UVC.本文采用的是Linux2.6.32.2 版本內(nèi)核,只需要對(duì)內(nèi)核進(jìn)行簡(jiǎn)單的配置,就可以實(shí)現(xiàn)功能了。

  在配置菜單選項(xiàng)中,設(shè)備驅(qū)動(dòng)是最重要的配置項(xiàng)。選擇的配置項(xiàng)如下:

  Device Drivers - - - >

  Multimedia devices - - - >

  Video For Linux

  Enable Video For Linux API 1(DEPRECAteD)

  Video capture adapters - - - >

  V4L USB devices - - - >

  USB Video Class (UVC)

  UVC input events device support

  GSPCA based webcams - - - >

  ZC3XXX USB CAMEra Driver

  USB ZC0301 [P]Image Processor and Control

  Chip support

  現(xiàn)在,內(nèi)核被配置成可以支持Video4Linux 的視頻接口,并且加入了支持zc301pUSB 攝像頭的驅(qū)動(dòng)程序。

  2.2 基于Video4Linux 的視頻圖像采集程序設(shè)計(jì)

  Video4Linux(簡(jiǎn)稱V4L)為目前市場(chǎng)常見的電視捕獲卡和并口及USB 口的攝像頭提供統(tǒng)一的編程接口。在Linux 內(nèi)核中它為用戶空間提供統(tǒng)一的編程接口,V4L 分為兩層:底層是音頻和視頻設(shè)備驅(qū)動(dòng)程序的內(nèi)核;上層為系統(tǒng)提供一些API 接口信息。視頻圖像采集流程如圖2 所示。

  

  (1)打開視頻設(shè)備。

  在Linux 中視頻設(shè)備是被作為設(shè)備文件來執(zhí)行的,本文USB 攝像頭的設(shè)備文件名為/dev/video0.

  int my_v4l_open (char*dev,my_v4l_STruct*vd) 函數(shù)用于打開視頻設(shè)備并初始化攝像頭設(shè)備,該函數(shù)調(diào)用open 函數(shù)可以讀設(shè)備文件,成功返回設(shè)備描述符,失敗返回- 1.主要程序代碼如下:

  int my_v4l_open(char*dev,my_v4l_struct*vd){

  if((vd- >fd=open(vd- >videodevice,O_RDWR))= =- 1){

  printf(“ERROR opening V4L interface”);

  exit(1);}

  ……}

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁 1 2 下一頁

關(guān)鍵詞: 采集 顯示 圖像 USB ARM 嵌入式 基于

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉