新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于S3C2410的嵌入式圖象傳輸系統設計

        基于S3C2410的嵌入式圖象傳輸系統設計

        作者: 時間:2012-05-17 來源:網絡 收藏

        當然,現在網上已經有了這種攝象頭的通用驅動,可以從相關網站下載usb-2.4.31.patch.gz,然后將這個補丁打到內核對應的位置即可。但是對有些內核版本的linux系統,在打補丁時,會產生 Config.in.rej和Makefile.rej。這時只需要將這兩個文件中修改失敗的部分手動添加到對應的Config.in和Makefile 中去就可以了。

        3.1.3 linux內核配置

        對于已經做過基本移植的linux在配置內核的時有以下幾個方面是值得注意的:

        1)因為要用到內核中的編程接口函數,所以在配置內核時首先必須選中Video for Linux并且最好是直接編譯進內核而不用編譯成模塊的形式再加載;

        2)要選中USB Support、OHCI、UHCI。并在USB Support下的USB Multimedia devices中選中對應的攝象頭,對本系統來說,選擇USB SPCA5XX Sunplus Vimicro Sonix Cameras,并把它配置成Module。

        3)配置完內核后做make dep, make zImage, make module。則在對應的spca5xx目錄下會生成spc5xx..o,可以把spc5xx..o通過NFS mount到目標板上或者加到主文件系統ramdisk中的某個目錄下。然后在目標板上做 insmod spca5xx.o就會找到攝象頭。

        3.1.4 服務器端應用程序的編寫

        完成驅動程序和內核配置后就開始應用程序的編寫了,程序首先用交叉編譯器在宿主機上進行編譯連接,生成的的可執行文件通過NFS mount到目標板上進行調試。調試成功后再固化到文件系統ramdisk中去。其實現主要有下面幾個步驟:

        1)初始化設備基本信息

        2)打開設備文件,讀取設備基本信息和信號源基本信息,并設置video_mmap并為定義的幀結構分配緩沖區并初始化線程互斥量

        3)創建圖象獲取的線程。該線程函數實現以內存影射的方式讀取設備中的數據,鎖定線程互斥量,接著對幀結構的各個元素賦值。并解鎖互斥量。使該過程做一個死循環。

        4)創建一個基于連接的socket,并綁定到一個端口上,開始在該端口上偵聽。

        5)當有連接到來時,創建一個圖象發送的線程。該線程函數實現:如果確定讀取了客戶端的數據,則把緩沖區內的一幀數據發送到網絡上。讓這個過程也為死循環。

        6)控制兩個線程的同步

        7)如果程序退出,則關閉套接字,釋放分配的資源。

        可以看出,程序的內容主要有三個部分:部分,圖象的網絡發送部分和程序的多線程控制部分。下面分別介紹一下這三個部分主要涉及的內容。

        部分,定義了一個數據結構,它的主要成員變量有:

        Video_capability 包含基本的設備信息(設備名稱、支持的最大最小分辨率、信號源信息)

        video_channel 關于各個信號源的屬性

        video_mbuf 利用mmap進行映射的幀的信息

        video_buffer 最底層對buffer的描述

        video_mmap 用于mmap

        pthread_mutex_t 線程互斥量



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 日土县| 江门市| 休宁县| 潜山县| 新平| 乌拉特前旗| 西乌| 萨迦县| 民勤县| 香格里拉县| 鞍山市| 泸水县| 城口县| 金坛市| 安平县| 延长县| 和平县| 鄂伦春自治旗| 武城县| 黔东| 台南市| 济南市| 榆树市| 雅江县| 通州区| 巴彦县| 伽师县| 塘沽区| 唐河县| 达州市| 宁城县| 偏关县| 通化市| 翁牛特旗| 舞阳县| 陆河县| 安溪县| 横峰县| 珲春市| 怀仁县| 鹤庆县|