下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于Linux和S3C2410的嵌入式圖象傳輸系統(tǒng)設(shè)計(jì),Linux,S3C2410,嵌入式,圖象傳輸系統(tǒng) 1引言如何更好的獲得監(jiān)控現(xiàn)場的圖象數(shù)據(jù)一直是棘手的一個(gè)問題,傳統(tǒng)的方法是采用CCD攝象機(jī)獲取現(xiàn)場的視頻信息,這種方法易于實(shí)現(xiàn),但成本較高。隨著ARM系列處理器應(yīng)用的越來越廣和基于linux的嵌入式技術(shù)的迅速發(fā)展,利用linux自身帶有的TCP/IP協(xié)議來實(shí)現(xiàn)遠(yuǎn)程監(jiān)控、圖象傳輸已成為可能。本文提出的正是一種這樣的方法,利用市場上很常見的中星微系列的USB攝象頭來得到現(xiàn)場的圖象數(shù)據(jù),利用linux內(nèi)核中的Video4Linux編程接口函數(shù)采集1 引
2、言如何更好的獲得監(jiān)控現(xiàn)場的圖象數(shù)據(jù)一直是棘手的一個(gè)問題,傳統(tǒng)的方法是采用CCD攝象機(jī)獲取現(xiàn)場的視頻信息,這種方法易于實(shí)現(xiàn),但成本較高。隨著ARM系列處理器應(yīng)用的越來越廣和基于linux的嵌入式技術(shù)的迅速發(fā)展,利用linux自身帶有的TCP/IP協(xié)議來實(shí)現(xiàn)遠(yuǎn)程監(jiān)控、圖象傳輸已成為可能。本文提出的正是一種這樣的方法,利用市場上很常見的中星微系列的USB攝象頭來得到現(xiàn)場的圖象數(shù)據(jù),利用linux內(nèi)核中的Video4Linux編程接口函數(shù)采集圖象,并把得到的圖象通過Internet傳輸?shù)缴衔粰C(jī)PC上,在PC上實(shí)現(xiàn)圖象的保存和顯示。2 硬件系統(tǒng)設(shè)計(jì)原理系統(tǒng)的硬件功能框圖如圖1所示,CPU采用的是三星公司
3、的S3C2410。該處理器內(nèi)部集成了A R M 公司A R M 9 2 0 T 處理器核的3 2 位微控制器,并帶有獨(dú)立的16KB的指令Cache 和16KB的數(shù)據(jù)Cache、L C D 控制器、R A M 控制器、NAND 閃存控制器、3路UART、4路DMA、4路帶PWM 的Timer、并行I/O口、8路10位ADC、觸摸屏接口、I2C接口、I2S接口、2個(gè)U S B 接口控制器、2路SPI,主頻最高可達(dá)203MHZ。在此基礎(chǔ)上,平臺還進(jìn)行了相應(yīng)的配置和擴(kuò)展,配置了4MB16位的Flash和8MB32位的SDRAM,通過以太網(wǎng)控制芯片DM9000E擴(kuò)展了一個(gè)網(wǎng)口。引出了一個(gè)UART接口,通
4、過RS232可以和宿主機(jī)做串口通訊。并引出了一個(gè)HOST USB接口,通過在USB接口上外接一個(gè)帶USB的攝象頭將采集到的圖象數(shù)據(jù)放入輸入緩沖區(qū)中。對緩沖區(qū)的數(shù)據(jù)進(jìn)行處理,最后通過網(wǎng)口發(fā)送到Internet上,在PC上保存和接收。3 軟件系統(tǒng)設(shè)計(jì)本文的軟件系統(tǒng)設(shè)計(jì)采用C/S(客戶機(jī)/服務(wù)器)模式,以S3C2410平臺作為服務(wù)器,以PC作為客戶端。服務(wù)器的主要任務(wù)是把得到的圖象數(shù)據(jù)發(fā)送到Internet上去,客戶端的任務(wù)主要是從Internet上接收得到的數(shù)據(jù),并把數(shù)據(jù)以保存成文件。下面分別討論兩者的具體實(shí)現(xiàn)。3.1 服務(wù)器端軟件系統(tǒng)設(shè)計(jì)3.1.1 建立宿主機(jī)開發(fā)環(huán)境本文以PC為宿主機(jī),并帶有R
5、edHat9.0系統(tǒng),開發(fā)環(huán)境就建立在這個(gè)平臺上,其主要包括:交叉編譯器的的選擇和安裝、NFS和TFTP服務(wù)器的配置等。對于嵌入式系統(tǒng)的開發(fā),由于沒有足夠的資源在目標(biāo)板上運(yùn)行開發(fā)工具和調(diào)試工具,所以通常采用交叉編譯調(diào)試的方式。開發(fā)時(shí)使用宿主機(jī)上的交叉編譯、匯編及連接工具形成可執(zhí)行的二進(jìn)制代碼。然后把可執(zhí)行文件下載到目標(biāo)機(jī)上運(yùn)行。本文采用的交叉編譯器為arm-linux-gcc,具體安裝不再贅述。為了方便調(diào)試和下載燒寫,可讓宿主機(jī)支持NFS和TFTP服務(wù)器。需要特別說明的是為了支持TFTP服務(wù)器需要在安裝RedHat9.0時(shí)須選擇完全安裝,如果沒有選擇完全安裝,需要將第三張光盤里面的tftp-s
6、erver-0.32-4.i386.rpm和tftp-0.32-4.i386.rpm安裝到宿主機(jī)下。3.1.2 攝象頭驅(qū)動程序的實(shí)現(xiàn)系統(tǒng)采用的是最普通的USB攝像頭,主芯片為中星微ZC0301P。這種攝象頭的一個(gè)特點(diǎn)是可以實(shí)現(xiàn)硬件JPEG編碼。其驅(qū)動程序的編寫重點(diǎn)包括下面的內(nèi)容:提供基本的I/O 操作接口函數(shù)open、read、write、close的實(shí)現(xiàn)、對中斷的處理實(shí)現(xiàn)、內(nèi)存映射功能以及對I/O 通道的控制接口函數(shù)ioctl的實(shí)現(xiàn)等,并把它們定義在struct file_operations中。這樣當(dāng)應(yīng)用程序?qū)υO(shè)備文件進(jìn)行諸如open、close、read、write等系統(tǒng)調(diào)用操作時(shí),Li
7、nux內(nèi)核將通過file_operations結(jié)構(gòu)訪問驅(qū)動程序提供的函數(shù)。當(dāng)然,現(xiàn)在網(wǎng)上已經(jīng)有了這種攝象頭的通用驅(qū)動,可以從相關(guān)網(wǎng)站 下載usb-2.4.31.patch.gz,然后將這個(gè)補(bǔ)丁打到內(nèi)核對應(yīng)的位置即可。但是對有些內(nèi)核版本的linux系統(tǒng),在打補(bǔ)丁時(shí),會產(chǎn)生Config.in.rej和Makefile.rej。這時(shí)只需要將這兩個(gè)文件中修改失敗的部分手動添加到對應(yīng)的Config.in和Makefile中去就可以了。3.1.3 linux內(nèi)核配置對于已經(jīng)做過基本移植的linux在配置內(nèi)核的時(shí)有以下幾個(gè)方面是值得注意的:1)因?yàn)橐玫絻?nèi)核中的Video4Linux編程接口函數(shù),所以在配置
8、內(nèi)核時(shí)首先必須選中Video for Linux并且最好是直接編譯進(jìn)內(nèi)核而不用編譯成模塊的形式再加載;2)要選中USB Support、OHCI、UHCI。并在USB Support下的USB Multimedia devices 中選中對應(yīng)的攝象頭,對本系統(tǒng)來說,選擇USB SPCA5XX Sunplus Vimicro Sonix Cameras,并把它配置成Module。3)配置完內(nèi)核后做make dep, make zImage, make module。則在對應(yīng)的spca5xx目錄下會生成spc5xx.o,可以把spc5xx.o通過NFS mount到目標(biāo)板上或者加到主文件系統(tǒng)ram
9、disk中的某個(gè)目錄下。然后在目標(biāo)板上做 insmod spca5xx.o就會找到攝象頭。3.1.4 服務(wù)器端應(yīng)用程序的編寫完成驅(qū)動程序和內(nèi)核配置后就開始應(yīng)用程序的編寫了,程序首先用交叉編譯器在宿主機(jī)上進(jìn)行編譯連接,生成的的可執(zhí)行文件通過NFS mount到目標(biāo)板上進(jìn)行調(diào)試。調(diào)試成功后再固化到文件系統(tǒng)ramdisk中去。其實(shí)現(xiàn)主要有下面幾個(gè)步驟:1) 初始化設(shè)備基本信息2) 打開設(shè)備文件,讀取設(shè)備基本信息和信號源基本信息,并設(shè)置video_mmap并為定義的幀結(jié)構(gòu)分配緩沖區(qū)并初始化線程互斥量3) 創(chuàng)建圖象獲取的線程。該線程函數(shù)實(shí)現(xiàn)以內(nèi)存影射的方式讀取設(shè)備中的數(shù)據(jù),鎖定線程互斥量,接著對幀結(jié)構(gòu)的
10、各個(gè)元素賦值。并解鎖互斥量。使該過程做一個(gè)死循環(huán)。4) 創(chuàng)建一個(gè)基于連接的socket,并綁定到一個(gè)端口上,開始在該端口上偵聽。5) 當(dāng)有連接到來時(shí),創(chuàng)建一個(gè)圖象發(fā)送的線程。該線程函數(shù)實(shí)現(xiàn):如果確定讀取了客戶端的數(shù)據(jù),則把緩沖區(qū)內(nèi)的一幀數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上。讓這個(gè)過程也為死循環(huán)。6) 控制兩個(gè)線程的同步7) 如果程序退出,則關(guān)閉套接字,釋放分配的資源??梢钥闯?,程序的內(nèi)容主要有三個(gè)部分:圖象采集部分,圖象的網(wǎng)絡(luò)發(fā)送部分和程序的多線程控制部分。下面分別介紹一下這三個(gè)部分主要涉及的內(nèi)容。在圖象采集部分,定義了一個(gè)數(shù)據(jù)結(jié)構(gòu),它的主要成員變量有:Video_capability 包含基本的設(shè)備信息(設(shè)備名
11、稱、支持的最大最小分辨率、信號源信息)video_channel 關(guān)于各個(gè)信號源的屬性video_mbuf 利用mmap進(jìn)行映射的幀的信息video_buffer 最底層對buffer的描述video_mmap 用于mmappthread_mutex_t 線程互斥量截取圖象方法有兩種:直接讀取設(shè)備文件和內(nèi)存影射的方法,本文采用后面一種。采用這種方法后,普通文件被映射到內(nèi)存地址空間,進(jìn)程可以象訪問普通文件一樣訪問內(nèi)存,這樣做的一個(gè)好處是可以提高效率。做視頻截取的兩個(gè)主要函數(shù)是:n ioctl(vd->fd, VIDIOCMCAPTURE, &(vd->mmap) 若調(diào)
12、用成功,開始一副圖象的截取。是否截取完畢留給VIDIOCSYNC來判斷。n ioctl(vd->fd, VIDIOCSYNC, &frame)若調(diào)用成功,表明一幀截取已完成??梢蚤_始做下一次截取對于網(wǎng)絡(luò)發(fā)送部分,主要是linux下的socket編程,調(diào)用的主要函數(shù)有:創(chuàng)建套接字函數(shù)socket、端口綁定函數(shù)bind、監(jiān)聽函數(shù)listen、等到連接函數(shù)accept、數(shù)據(jù)接收函數(shù)read、數(shù)據(jù)發(fā)送函數(shù)write等。這些函數(shù)的具體定義和用法具體可以查閱相關(guān)資料 。需要說明的是為了能夠正確發(fā)送一幀數(shù)據(jù),要把定義的幀的結(jié)構(gòu)體設(shè)置為單字節(jié)對齊,具體方法是在結(jié)構(gòu)體的定義后面加上_attribu
13、te_(packed)。多線程編程部分用到的主要函數(shù)有:互斥量初始化函數(shù)pthread_mutex_init、互斥量鎖定函數(shù)pthread_mutex_lock、互斥量解鎖函數(shù)pthread_mutex_unlock、互斥量注銷函數(shù)pthread_ mutex _destroy、線程創(chuàng)建函數(shù)pthread _ create、線程同步函數(shù)pthread_join。此外,程序中為了能更好的實(shí)現(xiàn)兩個(gè)進(jìn)程的同步,還需要用到信號量機(jī)制的一些內(nèi)容。受篇幅所限,這些函數(shù)的具體定義和用法請參考相關(guān)資料 。3.2 客戶機(jī)端軟件系統(tǒng)設(shè)計(jì)MFC的界面作為接收端。在接收端主要完成從網(wǎng)絡(luò)緩沖區(qū)內(nèi)讀取數(shù)據(jù),并保存成文件的形式,文件以接收到數(shù)據(jù)的時(shí)間為名。圖2為圖象采集時(shí)間間隔為1秒時(shí)程序執(zhí)行的結(jié)果。圖象大小為320 象素。需要說明的是:服務(wù)器端發(fā)送的數(shù)據(jù)采用了單字節(jié)對齊,對應(yīng)的在客戶端接收的時(shí)候也要采用單字節(jié)對齊。在WINDOWS下實(shí)現(xiàn)內(nèi)存單字節(jié)對齊的方法是在定義的幀結(jié)構(gòu)體前
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國PEN(聚萘二甲酸乙二醇酯)市場十三五規(guī)劃及投資風(fēng)險(xiǎn)評估報(bào)告
- 乙方與丙方就2024年度產(chǎn)品代理達(dá)成的代理合同3篇
- 二零二五年影視制作公司攝影棚租賃合同
- 2025年外研版三年級起點(diǎn)必修2物理上冊階段測試試卷
- 2024年遼河石油職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 二零二五版?zhèn)€體廂貨車租賃與物流信息平臺接入合同3篇
- 2024版工傷一次性賠償協(xié)商合同范例版B版
- 2024年遼寧廣告職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 2025年冀教新版七年級生物下冊月考試卷含答案
- 二零二五年高空玻璃安裝與玻璃清潔保養(yǎng)合同3篇
- 外配處方章管理制度
- 2025年四川長寧縣城投公司招聘筆試參考題庫含答案解析
- 中國的世界遺產(chǎn)智慧樹知到期末考試答案2024年
- 大廈物業(yè)管理保潔服務(wù)標(biāo)準(zhǔn)5篇
- 神經(jīng)內(nèi)科國家臨床重點(diǎn)專科建設(shè)項(xiàng)目評分標(biāo)準(zhǔn)(試行)
- 城市設(shè)計(jì)與城市更新培訓(xùn)
- 2023年貴州省銅仁市中考數(shù)學(xué)真題試題含解析
- 世界衛(wèi)生組織生存質(zhì)量測量表(WHOQOL-BREF)
- 某送電線路安全健康環(huán)境與文明施工監(jiān)理細(xì)則
- PEP-3心理教育量表-評估報(bào)告
- 控制性詳細(xì)規(guī)劃編制項(xiàng)目競爭性磋商招標(biāo)文件評標(biāo)辦法、采購需求和技術(shù)參數(shù)
評論
0/150
提交評論