• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

    基于S3C2410的的圖像采集系統(tǒng)

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

    引言

    本文引用地址:http://www.czjhyjcfj.com/article/149480.htm

    與存儲(chǔ)功能構(gòu)成的嵌入式監(jiān)控是安全防范技術(shù)體系中不可缺少的重要組成部分,隨著微電子技術(shù)和軟件技術(shù)的發(fā)展,嵌入式技術(shù)也有了長(zhǎng)足的進(jìn)步。因此,嵌入式技術(shù)的數(shù)據(jù)與存儲(chǔ)監(jiān)控以其直觀、方便、信息內(nèi)容豐富的特點(diǎn),廣泛應(yīng)用于許多場(chǎng)合。

    監(jiān)控工作于特定的環(huán)境下,具有很特殊的環(huán)境和結(jié)構(gòu)要求,這對(duì)監(jiān)控系統(tǒng)的軟硬件平臺(tái)提出了很高的要求。處理器性能的提高,接口傳輸數(shù)據(jù)能力的增強(qiáng),特別是未來(lái)高容量存儲(chǔ)器的出現(xiàn),監(jiān)控系統(tǒng)的小型化、多功能化是易于實(shí)現(xiàn)的,嵌入式技術(shù)引入圖像監(jiān)控系統(tǒng)后,兩個(gè)問(wèn)題需要解決,一是靈活的圖像監(jiān)控系統(tǒng)結(jié)構(gòu)調(diào)整,二是適合監(jiān)控規(guī)范、集圖像和信號(hào)檢測(cè)與控制一體的交互式軟件的設(shè)計(jì)。

    1 系統(tǒng)平臺(tái)的搭建

    1.1 硬件平臺(tái)的搭建

    ARM(AdvancedRISCMachines),既可以認(rèn)為是一個(gè)公司的名字,也可以認(rèn)為是對(duì)一類微處理器的統(tǒng)稱,還可以認(rèn)為是一種技術(shù)的名字。

    處理器是Samsung公司ARM公司的ARM920T處理器核,采用0.18um制造工藝的32位微控制器。該處理器擁有:獨(dú)立的16KB指令Cache和16KB數(shù)據(jù)Cache,MMU,支持TFT的LCD控制器,NAND閃存控制器,3路UART,4路DMA,4路帶PWM的Timer,I/O口,RTC,8路10位ADC,TouchScreen接口,IIC-BUS接口,IIS-BUS接口,2個(gè)USB主機(jī),1個(gè)USB設(shè)備,SD主機(jī)和MMC接口,2路SPI。處理器最高可運(yùn)行在203MHz。

    為核心的圖像系統(tǒng)的硬件結(jié)構(gòu)如圖1所示。因?yàn)镾3C2410內(nèi)部只有很小的存儲(chǔ)空間,所以我必須外擴(kuò)系統(tǒng)的存儲(chǔ)器,作為32位的微處理器,S3C2410支持8位,16位和32位尋址方式,有16M×32位的尋址能力,可方便地構(gòu)建較大地存儲(chǔ)空間,系統(tǒng)的存儲(chǔ)器由FLASH和SDRAM構(gòu)成。數(shù)碼攝像頭通過(guò)USB接口與S3C2410芯片連接,通過(guò)S3C2410芯片來(lái)控制數(shù)碼攝像頭對(duì)圖像進(jìn)行采集,并存儲(chǔ)在存儲(chǔ)器中。

    1.2 軟件平臺(tái)的搭建

    嵌入式Linux(EmbeddedLinux)是指對(duì)Linux經(jīng)過(guò)裁剪小型化后,可固化在存儲(chǔ)器或單片機(jī)中,應(yīng)用于特定嵌入式場(chǎng)合的專用Linux操作系統(tǒng)。具體的搭建流程如圖2所示。

    2 USB攝像頭設(shè)備驅(qū)動(dòng)的開(kāi)發(fā)

    在Linuxkernel源碼目錄中driver/usb/usb_skeletON.c提供了一個(gè)最基礎(chǔ)的USB驅(qū)動(dòng)程序,我們稱為USB骨架。通過(guò)他僅需要修改極少的部分,就可以完成一個(gè)USB設(shè)備的驅(qū)動(dòng)。我們的USB驅(qū)動(dòng)開(kāi)發(fā)也是從它開(kāi)始的。USB驅(qū)動(dòng)程序結(jié)構(gòu)如下:

    該結(jié)構(gòu)指明了USB設(shè)備驅(qū)動(dòng)所要做的工作,具體內(nèi)容如下:

    (1)在驅(qū)動(dòng)模塊加載的時(shí)候,向USB核心子系統(tǒng)注冊(cè),并告訴子系統(tǒng)需要支持的設(shè)備。

    (2)在卸載USB設(shè)備驅(qū)動(dòng)程序向USB核心子系統(tǒng)注銷。

    (3)當(dāng)獲支持的設(shè)備插入或者拔出的時(shí)候,調(diào)用哪些功能。

    在初始化函數(shù)中,USB設(shè)備驅(qū)動(dòng)調(diào)用usb_regiSTer函數(shù)進(jìn)行注冊(cè)。

    以上介紹了簡(jiǎn)單USB設(shè)備驅(qū)動(dòng)程序的框架。但是我們要進(jìn)行的攝像頭驅(qū)動(dòng)開(kāi)發(fā)比上述驅(qū)動(dòng)稍微復(fù)雜些。除了之前講到的USB驅(qū)動(dòng)還包括圖像采集部分的設(shè)備驅(qū)動(dòng)。

    首先,我們需要定義一個(gè)數(shù)據(jù)結(jié)構(gòu),其中一個(gè)包括圖片信息、采集模式、解碼方式。具體定義如下。

    LinuxUSB驅(qū)動(dòng)程序需要做的第一件事情就是在LinuxUSB子系統(tǒng)里注冊(cè),并提供一些相關(guān)信息,例如這個(gè)驅(qū)動(dòng)程序支持哪種設(shè)備,當(dāng)被支持的設(shè)備從系統(tǒng)插入或拔出時(shí),會(huì)有哪些動(dòng)作。所有這些信息都將傳送到USB子系統(tǒng)中。以下代碼完成USB攝像頭的注冊(cè)功能:

    以上定義的數(shù)據(jù)含義如下ZC301是客戶端驅(qū)動(dòng)程序的名稱,用于避免驅(qū)動(dòng)程序的重復(fù)安裝和卸載。

    zc301_probe則指向USB驅(qū)動(dòng)程序的探測(cè)函數(shù)指針,提供給USB內(nèi)核的函數(shù),用于判斷驅(qū)動(dòng)程序是否能對(duì)設(shè)備的某個(gè)接口進(jìn)行驅(qū)動(dòng)。

    zc301_disconnect指向USB驅(qū)動(dòng)程序中的斷開(kāi)函數(shù)的指針,當(dāng)從系統(tǒng)中被移除或者驅(qū)動(dòng)程序正在從USB核心中卸載時(shí),USB核心將調(diào)用該函數(shù)。

    zc301_table列表包含了一系列該驅(qū)動(dòng)程序可以支持的所有不同類型的USB設(shè)備,如沒(méi)有設(shè)置該列表,則該驅(qū)動(dòng)程序中的探測(cè)回調(diào)函數(shù)不會(huì)被調(diào)用。


    上一頁(yè) 1 2 3 下一頁(yè)

    評(píng)論


    相關(guān)推薦

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

    關(guān)閉
    主站蜘蛛池模板: 九龙城区| 道孚县| 化德县| 鄂温| 宁晋县| 禄丰县| 舞阳县| 那坡县| 射洪县| 格尔木市| 海阳市| 塔河县| 太湖县| 贵南县| 洛阳市| 泉州市| 容城县| 通城县| 哈尔滨市| 武定县| 比如县| 曲沃县| 福清市| 华容县| 合川市| 独山县| 阜新| 定州市| 虹口区| 江山市| 息烽县| 永胜县| 宜兴市| 墨江| 隆化县| 都江堰市| 余干县| 阆中市| 丹江口市| 太白县| 嘉黎县|