色偷偷偷久久伊人大杳蕉,色爽交视频免费观看,欧美扒开腿做爽爽爽a片,欧美孕交alscan巨交xxx,日日碰狠狠躁久久躁蜜桃

x
x

嵌入式視頻圖像壓縮模塊的USB接口設(shè)計(jì)

發(fā)布時(shí)間:2010-7-22 14:48    發(fā)布者:vinda
視頻圖像監(jiān)控技術(shù)已經(jīng)得到了廣泛應(yīng)用。但是在一些特殊場合,雖然并不需要實(shí)時(shí)圖像監(jiān)控,對圖像的質(zhì)量卻有很高的要求。例如需要以圖像畫面作為證據(jù)的遠(yuǎn)程視頻監(jiān)視系統(tǒng),H.261和H.263圖像的質(zhì)量已無法勝任,而是需要高質(zhì)量的JPEG圖像。所以研究和設(shè)計(jì)滿足工業(yè)級要求的靜態(tài)圖像壓縮模塊對于特殊場合的視頻圖像監(jiān)控有非常重要的意義。  

在遠(yuǎn)程視頻監(jiān)控系統(tǒng)中,視頻采集及壓縮傳送是不可或缺的重要組成。本文介紹了一種基于CY7C68013的JPEG視頻壓縮模塊設(shè)計(jì)方案,它具有130萬像素圖像分辨率、壓縮率大、接口簡單等特點(diǎn),可以方便地和USB主控設(shè)備結(jié)合在一起,由上位機(jī)通過軟件指令控制拍攝、視頻壓縮和上傳壓縮圖像數(shù)據(jù),從而組成靜態(tài)視頻監(jiān)控系統(tǒng)。
  
硬件結(jié)構(gòu)  

本文所開發(fā)的這套嵌入式視頻圖像壓縮模塊,其硬件框圖見圖1。上位機(jī)是嵌人式智能工業(yè)控制器。它是以S3C4510B為核心處理器, 采用ARM7TDMI RISC內(nèi)核,在其上運(yùn)行WinCE.Net 5.0操作系統(tǒng)。下位機(jī)由三個(gè)主芯片構(gòu)成:CY7C68013、S1D13718和K9650FB模塊。CY7C68013是一款集成USB2.0的微處理器,在單片機(jī)上集成了USB2.0收發(fā)器、串行接口引擎(SIE)、增強(qiáng)的8051微控制器和可編程的外圍接口,支持USB1.1和USB2.0協(xié)議。S1D13718是圖像引擎芯片,負(fù)責(zé)JPEG編解碼。視頻采集模塊采用K9650FB模塊,它內(nèi)部包含CMOS攝像頭和圖像處理芯片OV9650,輸出圖像最大可為130萬像素,并具有標(biāo)準(zhǔn)的視頻接口和OmniVision公司自定義的SCCB配置總線。系統(tǒng)上位機(jī)與遠(yuǎn)程監(jiān)控系統(tǒng)組成局域網(wǎng),以接收遠(yuǎn)程監(jiān)控系統(tǒng)的命令和上傳圖片數(shù)據(jù)。上位機(jī)通過USB總線將各種與拍攝相關(guān)的命令發(fā)送給CY7C68013,最后在CY7C68013的固件程序里具體實(shí)現(xiàn)SID13718和K9650FB的初始化,并從S1D13718片內(nèi)RAM中取出壓縮好的JPEG圖片上傳。  


圖1 硬件結(jié)構(gòu)框圖  

軟件設(shè)計(jì)  

本設(shè)計(jì)中USB軟件設(shè)計(jì)包括3部分:固件程序、USB設(shè)備驅(qū)動程序和應(yīng)用程序。  

固件程序  

在外部EEPROM中存放有CY7C68013固件程序,該程序在上電后加載到8051內(nèi)核,主要完成兩項(xiàng)功能:對USB設(shè)備進(jìn)行配置及實(shí)現(xiàn)USB數(shù)據(jù)傳輸;實(shí)現(xiàn)對S1D13718和K9650FB的初始化。  

USB傳輸方式分為4種:控制傳輸、批量傳輸、同步傳輸和中斷傳輸。考慮到實(shí)際應(yīng)用環(huán)境和復(fù)雜度,在開發(fā)中使用了控制傳輸和批量傳輸。控制傳輸主要用來完成主機(jī)對設(shè)備的配置和各種控制操作。批量傳輸主要用來完成上位機(jī)和CY7C68013之間的圖像數(shù)據(jù)傳輸。固件程序流程如圖2所示。  


圖2 固件程序流程  

在這里,步驟①"⑤主要是完成USB接口的初始化工作,而步驟⑥"⑩可以看作是任務(wù)派發(fā)階段,完成USB事務(wù)及用戶特定的任務(wù)。

驅(qū)動程序  

WinCE.Net的USB系統(tǒng)軟件由兩層組成:上層為USB設(shè)備驅(qū)動程序?qū)?即本文所研究的內(nèi)容;底層為USB功能的實(shí)現(xiàn)層,包括主機(jī)控制器驅(qū)動HCD以及USB協(xié)議棧USBD兩部分,這一層次由WinCE.Net操作系統(tǒng)本身提供。  

WinCE.Net系統(tǒng)提供的兩種驅(qū)動模型是本機(jī)驅(qū)動程序和流接口驅(qū)動程序。前者通常適用于集成到平臺上的設(shè)備,后者為一般類型的驅(qū)動程序,適用于大部分平臺外部連接的設(shè)備。流接口驅(qū)動程序表現(xiàn)為在用戶一級的動態(tài)鏈接庫DLL,用來實(shí)現(xiàn)一組固定的函數(shù)——流接口函數(shù),這些流接口函數(shù)使得應(yīng)用程序可以通過文件系統(tǒng)訪問這些驅(qū)動程序。本文采用了流接口驅(qū)動程序。圖3說明了流接口驅(qū)動程序的工作結(jié)構(gòu)。應(yīng)用程序通過文件系統(tǒng)的API函數(shù)調(diào)用流接口函數(shù),然后由流接口驅(qū)動程序調(diào)用本機(jī)驅(qū)動,或者通過設(shè)備管理器與系統(tǒng)內(nèi)核或外圍設(shè)備打交道。 


圖3 流接口驅(qū)動程序的工作結(jié)構(gòu)
 
編寫Wi nCE.Net系統(tǒng)下USB總線設(shè)備的驅(qū)動程序必須實(shí)現(xiàn)的三個(gè)入口函數(shù)USBDeviceAttach()、 USBInstallDriver()、USBUninstallDriver(),這是WinCE.Net系統(tǒng)編寫的USB協(xié)議棧的要求,這三個(gè)函數(shù)本身也體現(xiàn)了USB總線設(shè)備與其他設(shè)備驅(qū)動程序不同的編寫特征。在設(shè)備接到主機(jī)上后,系統(tǒng)底層的USB總線功能實(shí)現(xiàn)層會將檢測到的設(shè)備基本信息及設(shè)備某功能接口的有關(guān)信息提供給上層,USBDeviceAttach()等函數(shù)會接受該信息,從而為客戶端驅(qū)動的下一步工作打下基礎(chǔ);另外,也能更好地進(jìn)行必要的注冊表項(xiàng)設(shè)置。在WinCE.Net系統(tǒng)中,設(shè)備的配置信息都是存儲在系統(tǒng)注冊表中,因此,有關(guān)具體設(shè)備的必要信息和一些附加信息可以在USBInstallDriver()中實(shí)現(xiàn)注冊,而USBUninstallDriver()函數(shù)負(fù)責(zé)卸載這些注冊的設(shè)備信息。  

一個(gè)具體的流接口驅(qū)動程序跟注冊表部分肯定是分不開的。這里,我們將自己寫的一個(gè)注冊表文件通過添加組件的方式添加到內(nèi)核中。下面是這個(gè)注冊表文件的內(nèi)容。  

[HKEY_LOCAL_MACHINE\ Drivers\USB\LoadClients\JPEG]
“Index”=dword:1
“Prefix”=“JPEG”
//設(shè)備名稱為JPEG
“DLL”=“MyDriver.dll”
//驅(qū)動名稱,其中包括上文提到的三個(gè)入口函數(shù)和DLL接口函數(shù)
“Order”=dword:0  

當(dāng)有外設(shè)插入后,系統(tǒng)在取得VID/PID后將自動在注冊表中尋找是否有這一項(xiàng),依據(jù)注冊表找到驅(qū)動程序dll文件后,將首先調(diào)用USBInstallDriver函數(shù),該函數(shù)使用USBD.dll中的函數(shù)注冊設(shè)備,并依據(jù)VID/PID設(shè)置注冊表項(xiàng),這樣在這個(gè)項(xiàng)不丟失的時(shí)候,下次插入將能夠自動找到;如果這個(gè)函數(shù)的VID/PID和實(shí)際設(shè)備不符,將返回失敗;USBInstallDriver成功之后,系統(tǒng)調(diào)用USBDeviceAttach函數(shù);該函數(shù)的主要實(shí)現(xiàn)內(nèi)容有三個(gè):

(1) 分配設(shè)備對象結(jié)構(gòu),利用系統(tǒng)傳遞上來的設(shè)備接口數(shù)據(jù)填寫該設(shè)備對象結(jié)構(gòu)成員變量值,從而在流驅(qū)動函數(shù)中作為參數(shù)傳遞設(shè)備信息;
(2) 創(chuàng)建獲取中斷設(shè)備數(shù)據(jù)的線程,注冊線程處理回調(diào)函數(shù);
(3) 在設(shè)備對象結(jié)構(gòu)填寫完畢后調(diào)用ActivateDevice()系統(tǒng)函數(shù),并向系統(tǒng)注冊該驅(qū)動程序,激活該設(shè)備驅(qū)動程序。最后調(diào)用 RegisterNotificationRoutine()函數(shù)登記注冊DeviceNotify函數(shù)——這個(gè)函數(shù)是必須的,在設(shè)備被移走后調(diào)用這個(gè)函數(shù)完成善后工作。  
驅(qū)動加載完成后,用戶程序再用CreateFile打開設(shè)備的時(shí)候,將返回驅(qū)動程序上下文給用戶程序,這樣用戶程序和驅(qū)動就可以交互了。在本驅(qū)動中,所有對S1D13718和K9650FB模塊的操作都是通過DeviceIoControl()函數(shù)映射到JPEG_Iocontrol來完成。下面是部分驅(qū)動程序。

BOOL JPEG_IOControl( DWORD hOpenConext, DWORD dwCode,DWORD* pBufin,DWORD dwLenIn,PBYTE pBufOut,DWORD dwLenOut,PDWORD pdwActualOut)
{ switch(dwCode)
{
case Cameral_INITIAL:
//初始化數(shù)字Camera接口
Break;
case Enable_JPEG:
//使能JPEG模塊
Break;
case Initial_JPEG:
//初始化JPEG模塊并啟動JPEG編碼
Break;
case READ_JPEG
//讀取一幅圖片
Break;
Else:
Break;
}
}  

應(yīng)用程序  

本文上位機(jī)的應(yīng)用程序是在Embedded Visual C++開發(fā)環(huán)境下使用WIN32 API開發(fā)的。由于在Win32系統(tǒng)中,每一外部設(shè)備都可以抽象為文件,USB設(shè)備同樣可以作為系統(tǒng)文件來進(jìn)行操作,所以在應(yīng)用程序調(diào)用文件操作API函數(shù),就可以實(shí)現(xiàn)與驅(qū)動程序中的USB設(shè)備通信。在本系統(tǒng)中,利用CreateFile()、CloseFile()函數(shù)取得或關(guān)閉USB設(shè)備句柄,用DeviceloControl()函數(shù)來進(jìn)行系統(tǒng)控制,ReadFile()函數(shù)進(jìn)行讀取圖像。  

結(jié)語  

本文介紹了嵌入式視頻圖像壓縮模塊的USB接口設(shè)計(jì)方案,可以成功地進(jìn)行每秒一幀1300×1028的圖片拍攝、JPEG壓縮和在USB1.1協(xié)議下的上傳,最后通過以太網(wǎng)將圖片傳到遠(yuǎn)程監(jiān)控中心,從而組成靜態(tài)視頻監(jiān)控系統(tǒng)。該模塊已經(jīng)得到實(shí)現(xiàn)并在防竊電遠(yuǎn)程監(jiān)控系統(tǒng)中得到應(yīng)用。
本文地址:http://m.54549.cn/thread-16018-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表