在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于linux嵌入式技術(shù)實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和圖象傳輸系統(tǒng)的設(shè)計(jì)

電子設(shè)計(jì) ? 來(lái)源:微計(jì)算機(jī)信息 ? 作者:楊暉,胡永健,林志 ? 2020-09-21 17:52 ? 次閱讀

1 引言

如何更好的獲得監(jiān)控現(xiàn)場(chǎng)的圖象數(shù)據(jù)一直是棘手的一個(gè)問(wèn)題,傳統(tǒng)的方法是采用CCD攝象機(jī)獲取現(xiàn)場(chǎng)的視頻信息,這種方法易于實(shí)現(xiàn),但成本較高。隨著ARM系列處理器應(yīng)用的越來(lái)越廣和基于linux嵌入式技術(shù)的迅速發(fā)展,利用linux自身帶有的TCP/IP協(xié)議來(lái)實(shí)現(xiàn)遠(yuǎn)程監(jiān)控、圖象傳輸已成為可能。本文提出的正是一種這樣的方法,利用市場(chǎng)上很常見的中星微系列的USB攝象頭來(lái)得到現(xiàn)場(chǎng)的圖象數(shù)據(jù),利用linux內(nèi)核中的Video4Linux編程接口函數(shù)采集圖象,并把得到的圖象通過(guò)Internet傳輸?shù)?a target="_blank">上位機(jī)PC上,在PC上實(shí)現(xiàn)圖象的保存和顯示。

2 硬件系統(tǒng)設(shè)計(jì)原理

系統(tǒng)的硬件功能框圖如圖1所示,CPU采用的是三星公司的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ǔ)上,平臺(tái)還進(jìn)行了相應(yīng)的配置和擴(kuò)展,配置了4MB16位的Flash和8MB32位的SDRAM,通過(guò)以太網(wǎng)控制芯片DM9000E擴(kuò)展了一個(gè)網(wǎng)口。引出了一個(gè)UART接口,通過(guò)RS232可以和宿主機(jī)做串口通訊。并引出了一個(gè)HOST USB接口,通過(guò)在USB接口上外接一個(gè)帶USB的攝象頭將采集到的圖象數(shù)據(jù)放入輸入緩沖區(qū)中。對(duì)緩沖區(qū)的數(shù)據(jù)進(jìn)行處理,最后通過(guò)網(wǎng)口發(fā)送到Internet上,在PC上保存和接收。

基于linux嵌入式技術(shù)實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和圖象傳輸系統(tǒng)的設(shè)計(jì)

3 軟件系統(tǒng)設(shè)計(jì)

本文的軟件系統(tǒng)設(shè)計(jì)采用C/S(客戶機(jī)/服務(wù)器)模式,以S3C2410平臺(tái)作為服務(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ī),并帶有RedHat9.0系統(tǒng),開發(fā)環(huán)境就建立在這個(gè)平臺(tái)上,其主要包括:交叉編譯器的的選擇和安裝、NFS和TFTP服務(wù)器的配置等。

對(duì)于嵌入式系統(tǒng)的開發(fā),由于沒(méi)有足夠的資源在目標(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ù)器。需要特別說(shuō)明的是為了支持TFTP服務(wù)器需要在安裝RedHat9.0時(shí)須選擇完全安裝,如果沒(méi)有選擇完全安裝,需要將第三張光盤里面的tftp-server-0.32-4.i386.rpm和tftp-0.32-4.i386.rpm安裝到宿主機(jī)下。

3.1.2 攝象頭驅(qū)動(dòng)程序的實(shí)現(xiàn)

系統(tǒng)采用的是最普通的USB攝像頭,主芯片為中星微ZC0301P。這種攝象頭的一個(gè)特點(diǎn)是可以實(shí)現(xiàn)硬件JPEG編碼。其驅(qū)動(dòng)程序的編寫重點(diǎn)包括下面的內(nèi)容:提供基本的I/O 操作接口函數(shù)open、read、write、close的實(shí)現(xiàn)、對(duì)中斷的處理實(shí)現(xiàn)、內(nèi)存映射功能以及對(duì)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í),Linux內(nèi)核將通過(guò)file_operations結(jié)構(gòu)訪問(wèn)驅(qū)動(dòng)程序提供的函數(shù)。

當(dāng)然,現(xiàn)在網(wǎng)上已經(jīng)有了這種攝象頭的通用驅(qū)動(dòng),可以從相關(guān)網(wǎng)站 下載usb-2.4.31.patch.gz,然后將這個(gè)補(bǔ)丁打到內(nèi)核對(duì)應(yīng)的位置即可。但是對(duì)有些內(nèi)核版本的linux系統(tǒng),在打補(bǔ)丁時(shí),會(huì)產(chǎn)生Config.in.rej和Makefile.rej。這時(shí)只需要將這兩個(gè)文件中修改失敗的部分手動(dòng)添加到對(duì)應(yīng)的Config.in和Makefile中去就可以了。

3.1.3 linux內(nèi)核配置

對(duì)于已經(jīng)做過(guò)基本移植的linux在配置內(nèi)核的時(shí)有以下幾個(gè)方面是值得注意的:

1)因?yàn)橐玫絻?nèi)核中的Video4Linux編程接口函數(shù),所以在配置內(nèi)核時(shí)首先必須選中Video for Linux并且最好是直接編譯進(jìn)內(nèi)核而不用編譯成模塊的形式再加載;

2)要選中USB Support、OHCI、UHCI。并在USB Support下的USB Multimedia devices 中選中對(duì)應(yīng)的攝象頭,對(duì)本系統(tǒng)來(lái)說(shuō),選擇USB SPCA5XX Sunplus Vimicro Sonix Cameras,并把它配置成Module。

3)配置完內(nèi)核后做make dep, make zImage, make module。則在對(duì)應(yīng)的spca5xx目錄下會(huì)生成spc5xx..o,可以把spc5xx..o通過(guò)NFS mount到目標(biāo)板上或者加到主文件系統(tǒng)ramdisk中的某個(gè)目錄下。然后在目標(biāo)板上做 insmod spca5xx.o就會(huì)找到攝象頭。

3.1.4 服務(wù)器端應(yīng)用程序的編寫

完成驅(qū)動(dòng)程序和內(nèi)核配置后就開始應(yīng)用程序的編寫了,程序首先用交叉編譯器在宿主機(jī)上進(jìn)行編譯連接,生成的的可執(zhí)行文件通過(guò)NFS mount到目標(biāo)板上進(jìn)行調(diào)試。調(diào)試成功后再固化到文件系統(tǒng)ramdisk中去。其實(shí)現(xiàn)主要有下面幾個(gè)步驟:

1) 初始化設(shè)備基本信息

2) 打開設(shè)備文件,讀取設(shè)備基本信息和信號(hào)源基本信息,并設(shè)置video_mmap并為定義的幀結(jié)構(gòu)分配緩沖區(qū)并初始化線程互斥量

3) 創(chuàng)建圖象獲取的線程。該線程函數(shù)實(shí)現(xiàn)以內(nèi)存影射的方式讀取設(shè)備中的數(shù)據(jù),鎖定線程互斥量,接著對(duì)幀結(jié)構(gòu)的各個(gè)元素賦值。并解鎖互斥量。

使該過(guò)程做一個(gè)死循環(huán)。

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

5) 當(dāng)有連接到來(lái)時(shí),創(chuàng)建一個(gè)圖象發(fā)送的線程。該線程函數(shù)實(shí)現(xiàn):如果確定讀取了客戶端的數(shù)據(jù),則把緩沖區(qū)內(nèi)的一幀數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上。讓這個(gè)

過(guò)程也為死循環(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è)備名稱、支持的最大最小分辨率、信號(hào)源信息)

video_channel 關(guān)于各個(gè)信號(hào)源的屬性

video_mbuf 利用mmap進(jìn)行映射的幀的信息

video_buffer 最底層對(duì)buffer的描述

video_mmap 用于mmap

pthread_mutex_t 線程互斥量

截取圖象方法有兩種:直接讀取設(shè)備文件和內(nèi)存影射的方法,本文采用后面一種。采用這種方法后,普通文件被映射到內(nèi)存地址空間,進(jìn)程可以象訪問(wèn)普通文件一樣訪問(wèn)內(nèi)存,這樣做的一個(gè)好處是可以提高效率。做視頻截取的兩個(gè)主要函數(shù)是:

n ioctl(vd-》fd, VIDIOCMCAPTURE, &(vd-》mmap)) 若調(diào)用成功,開始一副圖象的截取。是否截取完畢留給VIDIOCSYNC來(lái)判斷。

n ioctl(vd-》fd, VIDIOCSYNC, &frame)若調(diào)用成功,表明一幀截取已完成。可以開始做下一次截取

對(duì)于網(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)資料 。需要說(shuō)明的是為了能夠正確發(fā)送一幀數(shù)據(jù),要把定義的幀的結(jié)構(gòu)體設(shè)置為單字節(jié)對(duì)齊,具體方法是在結(jié)構(gòu)體的定義后面加上_attribute_((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)程的同步,還需要用到信號(hào)量機(jī)制的一些內(nèi)容。受篇幅所限,這些函數(shù)的具體定義和用法請(qǐng)參考相關(guān)資料 。

3.2 客戶機(jī)端軟件系統(tǒng)設(shè)計(jì)

客戶端是建立在一臺(tái)PC機(jī)上,用Visual C++ 6.0設(shè)計(jì)一個(gè)基于MFC的界面作為接收端。在接收端主要完成從網(wǎng)絡(luò)緩沖區(qū)內(nèi)讀取數(shù)據(jù),并保存成文件

的形式,文件以接收到數(shù)據(jù)的時(shí)間為名。圖2為圖象采集時(shí)間間隔為1秒時(shí)程序執(zhí)行的結(jié)果。圖象大小為320 象素。需要說(shuō)明的是:服務(wù)器端發(fā)送的數(shù)據(jù)采用了單字節(jié)對(duì)齊,對(duì)應(yīng)的在客戶端接收的時(shí)候也要采用單字節(jié)對(duì)齊。在WINDOWS下實(shí)現(xiàn)內(nèi)存單字節(jié)對(duì)齊的方法是在定義的幀結(jié)構(gòu)體前面加上#pragma pack (1),并在其定義之后加上#pragma pack ()。

4 結(jié)束語(yǔ)

本文提出了一套基于S3C2410平臺(tái)和linux系統(tǒng)的嵌入式圖象采集、傳輸系統(tǒng)的具體實(shí)現(xiàn),并給出了實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)結(jié)果證明:系統(tǒng)很好的完成了圖象采集和傳輸。得到的圖象清晰。服務(wù)器可以穩(wěn)定運(yùn)行,不會(huì)發(fā)生斷開或退出的現(xiàn)象。本系統(tǒng)可應(yīng)用于工業(yè)現(xiàn)場(chǎng)的監(jiān)控,也可以與其他系統(tǒng)如門禁系統(tǒng)相結(jié)合獲得門開或關(guān)時(shí)現(xiàn)場(chǎng)的重要圖象數(shù)據(jù)。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7596

    瀏覽量

    151738
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19384

    瀏覽量

    230494
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11329

    瀏覽量

    209967
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式智能家居遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    嵌入式智能家居遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
    發(fā)表于 08-20 10:26

    【OK210申請(qǐng)】基于嵌入式Linux遠(yuǎn)程視頻監(jiān)控系統(tǒng)

    視頻監(jiān)控系統(tǒng)實(shí)現(xiàn)方案。系統(tǒng)嵌入式Linux嵌入式
    發(fā)表于 06-28 12:41

    如何利用FPGA和嵌入式系統(tǒng)設(shè)計(jì)遠(yuǎn)程監(jiān)控系統(tǒng)

    系統(tǒng)立足于利用Intemet實(shí)現(xiàn)核環(huán)境信息的遠(yuǎn)程采集。告訴大家,如何利用FPGA和嵌入式系統(tǒng)設(shè)計(jì)遠(yuǎn)程
    發(fā)表于 08-02 08:07

    嵌入式系統(tǒng)怎么實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和升級(jí)?

    偏遠(yuǎn)無(wú)人地區(qū),通常這些采集系統(tǒng)基于GPRS無(wú)線網(wǎng)絡(luò)來(lái)傳輸遠(yuǎn)程數(shù)據(jù),但系統(tǒng)的維護(hù)和升級(jí)受到距離和環(huán)境的較大限制,不但成本高,而且周期長(zhǎng)。為實(shí)現(xiàn)
    發(fā)表于 08-02 06:49

    嵌入式Linux平臺(tái)怎么實(shí)現(xiàn)視頻采集發(fā)送端?

    隨著嵌入式技術(shù)的迅猛發(fā)展和Linux在信息行業(yè)中的廣泛應(yīng)用,視頻采集與傳輸系統(tǒng)作為遠(yuǎn)程視頻
    發(fā)表于 03-16 07:57

    基于嵌入式linux遠(yuǎn)程桌面技術(shù)分析及實(shí)現(xiàn)

    基于嵌入式linux遠(yuǎn)程桌面技術(shù)分析及實(shí)現(xiàn)-analysis and implementation of remote desktop t
    發(fā)表于 12-24 08:24

    嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    本文介紹了嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),該系統(tǒng)嵌入式
    發(fā)表于 06-18 09:38 ?16次下載

    Linux嵌入式視頻直播監(jiān)控系統(tǒng)

    本文以嵌入式處理器和Linux 為開發(fā)平臺(tái),利用嵌入式軟件開發(fā)技術(shù)Linux 下圖像采集技術(shù)
    發(fā)表于 08-13 10:02 ?12次下載

    嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    設(shè)計(jì)實(shí)現(xiàn)了B/S 架構(gòu)的嵌入式遠(yuǎn)程網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng),介紹了linux 下Spcaserv流媒體服
    發(fā)表于 08-15 16:04 ?42次下載

    嵌入式家庭遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)

    本文結(jié)合32位嵌入式系統(tǒng)技術(shù),給出了一種基于嵌入式Web服務(wù)器的家庭遠(yuǎn)程監(jiān)控
    發(fā)表于 09-02 09:58 ?9次下載

    基于嵌入式Linux遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)???

    【摘 要】 提出了一種基于嵌入式Linux遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)方案,詳細(xì)分析了它的系統(tǒng)結(jié)構(gòu),并給
    發(fā)表于 05-10 19:48 ?1028次閱讀
    基于<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>的<b class='flag-5'>遠(yuǎn)程</b><b class='flag-5'>監(jiān)控</b><b class='flag-5'>系統(tǒng)</b>的設(shè)計(jì)???

    嵌入式Linux平臺(tái)的圖像采集與傳輸設(shè)計(jì)

    嵌入式Linux平臺(tái)的圖像采集與傳輸設(shè)計(jì) O 概述 隨著嵌入式技術(shù)的迅猛發(fā)展和Linux
    發(fā)表于 04-03 10:58 ?671次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>平臺(tái)的圖像采集與<b class='flag-5'>傳輸</b>設(shè)計(jì)

    嵌入式和碼分多址實(shí)現(xiàn)遠(yuǎn)程視頻監(jiān)控系統(tǒng)

    嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng)就是充分利用CDMA無(wú)線網(wǎng)絡(luò)技術(shù)嵌入式
    發(fā)表于 08-23 11:16 ?1125次閱讀
    <b class='flag-5'>嵌入式</b>和碼分多址<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>遠(yuǎn)程</b>視頻<b class='flag-5'>監(jiān)控</b><b class='flag-5'>系統(tǒng)</b>

    Linux和S3C2410的嵌入式象傳輸系統(tǒng)設(shè)計(jì)解析

    嵌入式技術(shù)的迅速發(fā)展,利用linux自身帶有的TCP/IP協(xié)議來(lái)實(shí)現(xiàn)遠(yuǎn)程監(jiān)控
    發(fā)表于 11-06 10:30 ?0次下載
    <b class='flag-5'>Linux</b>和S3C2410的<b class='flag-5'>嵌入式</b><b class='flag-5'>圖</b><b class='flag-5'>象傳輸</b><b class='flag-5'>系統(tǒng)</b>設(shè)計(jì)解析

    基于ARM和Linux嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì)

    基于ARM和Linux嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì)(嵌入式開發(fā)板如何刷程序)-本文根據(jù)大樓電梯
    發(fā)表于 07-30 12:56 ?9次下載
    基于ARM和<b class='flag-5'>Linux</b>的<b class='flag-5'>嵌入式</b><b class='flag-5'>遠(yuǎn)程</b>視頻<b class='flag-5'>監(jiān)控</b><b class='flag-5'>系統(tǒng)</b>的設(shè)計(jì)
    主站蜘蛛池模板: 午夜网站在线播放| 四虎永久在线精品免费影视| 波多野结衣在线网站| 三级黄色一级视频| 亚洲毛片网| 国产亚洲一区二区三区啪| 好大好硬好深好爽的视频| 黑人xxxx精品| 哪个网站可以看av| 亚洲一区中文字幕在线| 亚洲a区视频| 中文字幕在线观看一区二区三区| 国产免费高清视频在线观看不卡| 99久久伊人一区二区yy5099| 欧美黄又粗暴一进一出抽搐| 天天摸天天躁天天添天天爽| 2018天天射| 天天爱天天做天天爽天天躁| 国产精品自在线天天看片| se97se成人亚洲网站在线观看 | 日本怡红| 精品一区二区三区自拍图片区| 欧美色视频网| 日本色免费| 精品国产成人系列| 综综综综合网| 九色综合网| 国产精品免费看久久久| 好爽好大www视频在线播放| 美女露出尿口让男人桶爽网站 | 亚洲人成网站色7799在线观看| 成人黄网大全在线观看| 91在线视频免费| 与子乱刺激对白在线播放| 色妞导航| 国产免费一级高清淫曰本片| 国产农村妇女毛片精品久久久 | 免费在线成人| 夜夜操天天| 天天干天天干天天干天天| q2002韩国理论|