新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM+Linux的視頻采集編碼系統設計

        基于ARM+Linux的視頻采集編碼系統設計

        作者: 時間:2014-06-18 來源:網絡 收藏

           系統通過URB實現USB 傳輸。為提高有效數據的傳輸速度可擴大 URB的緩沖來降低每個USB 事務中握手信息所占比例。每次 USB 傳輸都需要在操作系統中進行URB的建立、發出、回收和數據整理等階段。可建立兩個URB,當等待一個 URB被回收時,也就是圖像正在被傳感器采集時同時處理、初始化另一個 URB,并在回收后立刻將其發出。兩個URB交替使用,大大提高了系統處理的時間效率。

        本文引用地址:http://www.104case.com/article/248474.htm

          在編譯器部分將 下的攝像頭驅動程序中Makefile 文件中相關行修改為CC=/opt/host/armv4l/bin/armv4l-unknown-gcc-linux,修改 Config.in 文件,這樣在配置內核的時候才可以看見驅動程序的名稱。同時對下列與處理器相關的部分進行修改,即可實現對S3C2440 的USB 驅動的移植。

          (1)PCI 接口處理

          由于S3C2440 的USB 主機控制器不包含 PCI 接口,因此需要刪除 usb-ochi.c中與PCI接口相關的代碼。

          (2)寄存器地址設置

          在usb-ochi.c中,使S3C2440 的USB 主機控制器寄存器的起始地址(0x49000000) 初始化ochi->regs。

          (3)主機控制器中斷設置

          在usb-ochi.c中,使S3C2440 的USB 主機控制器寄存器的中斷向量初始化 ochi->irq 。

          (4)根HUB端口數目設置

          在usb-ochi.c 中,定義根HUB的下行端口數目為 2(#define MAX_ROOT_PORTS

          2),MAX_ ROOT_PORTS 的默認值為150。

          (5)修改 Makefile和Config.in 文件

          修改完成后執行 make命令,即可生成所需要的帶有.o 后綴的驅動文件。

          驅動程序設計完成并編譯成功后,使用動態加載的方法添加到內核中。首先在宿主機上交叉編譯好驅動模塊,然后通過串口下載到開發板上,再使用 insmod 命令將驅動掛載,攝像頭驅動便可成功添加,通過 lsmod 命令可以查看當前馭動添加的情況。

          4 視頻采集

          系統軟件基于VFL 開發,基本流程原理如圖3。其中最關鍵的步驟就是視頻數據的采集,一般有兩種實現方法,一是直接讀取,二是內存映射的方法。

          

         

          1) 定義數據結構

          程序中需要定義一些數據結構,如:video_capability ,包含攝像頭的基本信息;video_picture,包含設備采集圖像的各種屬性;video_mmap,用于內存映射;video_mbuf ,利用mmap 進行映射的幀信息,實際上是輸入到攝像頭存儲器緩沖中的幀信息;video_Window,包括設備采集窗口的各種參數。

           系統中把設備看成設備文件,在用戶空間可以通過標準的 I/O 系統調用函數操作設備文件,從而達到與設備通信交互的目的。用 ioctl 函數來控制1/O 通道。

          2) 采集程序實現過程

          1. 打開視頻設備

          在linux中視頻設備對應的設備文件為/dev/video0 ,采用open 函數來打開視頻設備。

          2. 獲取設備信息和視頻信息并進行設置

          開啟設備文件后,通過調用 camera_get_capability() 和camera_get_picture() 函數來實現對設備信息以及圖像信息的獲取。這兩個函數均通過調用ioctl() 函數來取得設備和圖像的相關信息,并將取得的信息放到 video_capability 結構里。若需對圖像信息進行設置時,先給video_picture 數據結構對象中所要修改的變量進行重新賦值,然后通過 ioctl 函數的VIDIOCGPICT來進行設置。通過調用 ioctl VIDIOCGPICT可設置所采集圖像的屬性。

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

        linux相關文章:linux教程


        攝像頭相關文章:攝像頭原理


        關鍵詞: ARM Linux

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宣武区| 阿坝县| 佛山市| 比如县| 昌乐县| 湟中县| 临颍县| 泗洪县| 墨竹工卡县| 龙泉市| 保康县| 昭觉县| 台江县| 张家口市| 金坛市| 临安市| 朝阳区| 伊宁市| 安陆市| 苏尼特右旗| 姚安县| 浦城县| 富蕴县| 太康县| 延吉市| 霍林郭勒市| 车致| 固始县| 台南县| 三门县| 偃师市| 大关县| 遵化市| 偏关县| 禹州市| 紫金县| 太康县| 莱西市| 宿松县| 平阳县| 通化县|