<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM+Linux的視頻采集編碼系統設計

基于A(yíng)RM+Linux的視頻采集編碼系統設計

作者: 時(shí)間:2014-06-18 來(lái)源:網(wǎng)絡(luò ) 收藏

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

本文引用地址:http://dyxdggzs.com/article/248474.htm

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

  (1)PCI 接口處理

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

  (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 后綴的驅動(dòng)文件。

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

  4 視頻采集

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

  

 

  1) 定義數據結構

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

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

  2) 采集程序實(shí)現過(guò)程

  1. 打開(kāi)視頻設備

  在linux中視頻設備對應的設備文件為/dev/video0 ,采用open 函數來(lái)打開(kāi)視頻設備。

  2. 獲取設備信息和視頻信息并進(jìn)行設置

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

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

linux相關(guān)文章:linux教程


攝像頭相關(guān)文章:攝像頭原理


關(guān)鍵詞: ARM Linux

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>