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

電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>Linux和S3C2410的嵌入式圖象傳輸系統(tǒng)設(shè)計解析

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

2017-11-06 | rar | 0.2 MB | 次下載 | 1積分

資料介紹

 1 引言
  如何更好的獲得監(jiān)控現(xiàn)場的圖象數(shù)據(jù)一直是棘手的一個問題,傳統(tǒng)的方法是采用CCD攝象機獲取現(xiàn)場的視頻信息,這種方法易于實現(xiàn),但成本較高。隨著ARM系列處理器應(yīng)用的越來越廣和基于linux嵌入式技術(shù)的迅速發(fā)展,利用linux自身帶有的TCP/IP協(xié)議來實現(xiàn)遠程監(jiān)控、圖象傳輸已成為可能。本文提出的正是一種這樣的方法,利用市場上很常見的中星微系列的USB攝象頭來得到現(xiàn)場的圖象數(shù)據(jù),利用linux內(nèi)核中的Video4Linux編程接口函數(shù)采集圖象,并把得到的圖象通過Internet傳輸?shù)?a target='_blank' class='arckwlink_none'>上位機PC上,在PC上實現(xiàn)圖象的保存和顯示。
  2 硬件系統(tǒng)設(shè)計原理
  系統(tǒng)的硬件功能框圖如圖1所示,CPU采用的是三星公司的S3C2410。該處理器內(nèi)部集成了A R M 公司A R M 9 2 0 T 處理器核的3 2 位微控制器,并帶有獨立的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 個U S B 接口控制器、2路SPI,主頻最高可達203MHZ。在此基礎(chǔ)上,平臺還進行了相應(yīng)的配置和擴展,配置了4MB16位的Flash和8MB32位的SDRAM,通過以太網(wǎng)控制芯片DM9000E擴展了一個網(wǎng)口。引出了一個UART接口,通過RS232可以和宿主機做串口通訊。并引出了一個HOST USB接口,通過在USB接口上外接一個帶USB的攝象頭將采集到的圖象數(shù)據(jù)放入輸入緩沖區(qū)中。對緩沖區(qū)的數(shù)據(jù)進行處理,最后通過網(wǎng)口發(fā)送到Internet上,在PC上保存和接收。
  Linux和S3C2410的嵌入式圖象傳輸系統(tǒng)設(shè)計解析
  圖 1 S3C2410系統(tǒng)平臺的硬件功能框圖
  3 軟件系統(tǒng)設(shè)計
  本文的軟件系統(tǒng)設(shè)計采用C/S(客戶機/服務(wù)器)模式,以S3C2410平臺作為服務(wù)器,以PC作為客戶端。服務(wù)器的主要任務(wù)是把得到的圖象數(shù)據(jù)發(fā)送到Internet上去,客戶端的任務(wù)主要是從Internet上接收得到的數(shù)據(jù),并把數(shù)據(jù)以保存成文件。下面分別討論兩者的具體實現(xiàn)。
  3.1 服務(wù)器端軟件系統(tǒng)設(shè)計
  3.1.1 建立宿主機開發(fā)環(huán)境
  本文以PC為宿主機,并帶有RedHat9.0系統(tǒng),開發(fā)環(huán)境就建立在這個平臺上,其主要包括:交叉編譯器的的選擇和安裝、NFS和TFTP服務(wù)器的配置等。
  對于嵌入式系統(tǒng)的開發(fā),由于沒有足夠的資源在目標板上運行開發(fā)工具和調(diào)試工具,所以通常采用交叉編譯調(diào)試的方式。開發(fā)時使用宿主機上的交叉編譯、匯編及連接工具形成可執(zhí)行的二進制代碼。然后把可執(zhí)行文件下載到目標機上運行。本文采用的交叉編譯器為arm-linux-gcc,具體安裝不再贅述。為了方便調(diào)試和下載燒寫,可讓宿主機支持NFS和TFTP服務(wù)器。需要特別說明的是為了支持TFTP服務(wù)器需要在安裝RedHat9.0時須選擇完全安裝,如果沒有選擇完全安裝,需要將第三張光盤里面的tftp-server-0.32-4.i386.rpm和tftp-0.32-4.i386.rpm安裝到宿主機下。
  3.1.2 攝象頭驅(qū)動程序的實現(xiàn)
  系統(tǒng)采用的是最普通的USB攝像頭,主芯片為中星微ZC0301P。這種攝象頭的一個特點是可以實現(xiàn)硬件JPEG編碼。其驅(qū)動程序的編寫重點包括下面的內(nèi)容:提供基本的I/O 操作接口函數(shù)open、read、write、close的實現(xiàn)、對中斷的處理實現(xiàn)、內(nèi)存映射功能以及對I/O 通道的控制接口函數(shù)ioctl的實現(xiàn)等,并把它們定義在struct file_operations中。這樣當應(yīng)用程序?qū)υO(shè)備文件進行諸如open、close、read、write等系統(tǒng)調(diào)用操作時,Linux內(nèi)核將通過file_operations結(jié)構(gòu)訪問驅(qū)動程序提供的函數(shù)。
  當然,現(xiàn)在網(wǎng)上已經(jīng)有了這種攝象頭的通用驅(qū)動,可以從相關(guān)網(wǎng)站 下載usb-2.4.31.patch.gz,然后將這個補丁打到內(nèi)核對應(yīng)的位置即可。但是對有些內(nèi)核版本的linux系統(tǒng),在打補丁時,會產(chǎn)生Config.in.rej和Makefile.rej。這時只需要將這兩個文件中修改失敗的部分手動添加到對應(yīng)的Config.in和Makefile中去就可以了。
  3.1.3 linux內(nèi)核配置
  對于已經(jīng)做過基本移植的linux在配置內(nèi)核的時有以下幾個方面是值得注意的:
  1) 因為要用到內(nèi)核中的Video4Linux編程接口函數(shù),所以在配置內(nèi)核時首先必須選中Video for Linux并且最好是直接編譯進內(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到目標板上或者加到主文件系統(tǒng)ramdisk中的某個目錄下。然后在目標板上做 insmod spca5xx.o就會找到攝象頭。
  3.1.4 服務(wù)器端應(yīng)用程序的編寫
  完成驅(qū)動程序和內(nèi)核配置后就開始應(yīng)用程序的編寫了,程序首先用交叉編譯器在宿主機上進行編譯連接,生成的的可執(zhí)行文件通過NFS mount到目標板上進行調(diào)試。調(diào)試成功后再固化到文件系統(tǒng)ramdisk中去。其實現(xiàn)主要有下面幾個步驟:
  1) 初始化設(shè)備基本信息
  2) 打開設(shè)備文件,讀取設(shè)備基本信息和信號源基本信息,并設(shè)置video_mmap并為定義的幀結(jié)構(gòu)分配緩沖區(qū)并初始化線程互斥量
  3) 創(chuàng)建圖象獲取的線程。該線程函數(shù)實現(xiàn)以內(nèi)存影射的方式讀取設(shè)備中的數(shù)據(jù),鎖定線程互斥量,接著對幀結(jié)構(gòu)的各個元素賦值。并解鎖互斥量。使該過程做一個死循環(huán)。
  4) 創(chuàng)建一個基于連接的socket,并綁定到一個端口上,開始在該端口上偵聽。
  5) 當有連接到來時,創(chuàng)建一個圖象發(fā)送的線程。該線程函數(shù)實現(xiàn):如果確定讀取了客戶端的數(shù)據(jù),則把緩沖區(qū)內(nèi)的一幀數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上。讓這個過程也為死循環(huán)。
  6) 控制兩個線程的同步
  7) 如果程序退出,則關(guān)閉套接字,釋放分配的資源。
  可以看出,程序的內(nèi)容主要有三個部分:圖象采集部分,圖象的網(wǎng)絡(luò)發(fā)送部分和程序的多線程控制部分。下面分別介紹一下這三個部分主要涉及的內(nèi)容。
  在圖象采集部分,定義了一個數(shù)據(jù)結(jié)構(gòu),它的主要成員變量有:
  l Video_capability 包含基本的設(shè)備信息(設(shè)備名稱、支持的最大最小分辨率、信號源信息)
  l video_channel 關(guān)于各個信號源的屬性
  l video_mbuf 利用mmap進行映射的幀的信息
  l video_buffer 最底層對buffer的描述
  l video_mmap 用于mmap
  l pthread_mutex_t 線程互斥量
  截取圖象方法有兩種:直接讀取設(shè)備文件和內(nèi)存影射的方法,本文采用后面一種。采用這種方法后,普通文件被映射到內(nèi)存地址空間,進程可以象訪問普通文件一樣訪問內(nèi)存,這樣做的一個好處是可以提高效率。做視頻截取的兩個主要函數(shù)是:
  n ioctl(vd-》fd, VIDIOCMCAPTURE, &(vd-》mmap)) 若調(diào)用成功,開始一副圖象的截取。是否截取完畢留給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)體的定義后面加上_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。此外,程序中為了能更好的實現(xiàn)兩個進程的同步,還需要用到信號量機制的一些內(nèi)容。受篇幅所限,這些函數(shù)的具體定義和用法請參考相關(guān)資料 。
  3.2 客戶機端軟件系統(tǒng)設(shè)計
  客戶端是建立在一臺PC機上,用Visual C++ 6.0設(shè)計一個基于MFC的界面作為接收端。在接收端主要完成從網(wǎng)絡(luò)緩沖區(qū)內(nèi)讀取數(shù)據(jù),并保存成文件的形式,文件以接收到數(shù)據(jù)的時間為名。圖2為圖象采集時間間隔為1秒時程序執(zhí)行的結(jié)果。圖象大小為320 象素。需要說明的是:服務(wù)器端發(fā)送的數(shù)據(jù)采用了單字節(jié)對齊,對應(yīng)的在客戶端接收的時候也要采用單字節(jié)對齊。在WINDOWS下實現(xiàn)內(nèi)存單字節(jié)對齊的方法是在定義的幀結(jié)構(gòu)體前面加上#pragma pack (1),并在其定義之后加上#pragma pack ()。
  
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關(guān)電源基礎(chǔ)知識
  4. 5.73 MB  |  6次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費
  11. 6基于FPGA的C8051F單片機開發(fā)板設(shè)計
  12. 0.70 MB  |  2次下載  |  免費
  13. 751單片機窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費
  15. 8基于51單片機的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21548次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 欧美黄色免费网站 | 日本黄色小视频 | 国产精品视频网站你懂得 | 亚洲国产成人久久77 | 欧美一级视频在线观看欧美 | 欧美黄色片网站 | 99草在线观看 | 亚洲成年网站 | 亚洲视频黄 | 国产精品福利视频手机免费观看 | 天天做天天爱天天做天天吃中 | 色婷婷久久免费网站 | 性在线视频| 站长工具天天爽视频 | 男女那啥的视频免费 | 国产一级特黄老妇女大片免费 | 伦理片日本韩国电影三级在线观看 | 天堂成人在线 | 午夜激情小视频 | 黄色污网站在线观看 | 国产片在线 | 国产精品资源在线播放 | 久久久一本| 激情综合激情五月 | 四虎在线最新永久免费播放 | 日日躁夜夜躁狠狠天天 | 久久手机免费视频 | 欧美视频一区在线观看 | 奇米影视大全 | h网站免费在线观看 | 久久vs国产综合色大全 | 大又大又粗又爽女人毛片 | 国产亚洲欧美视频 | 五月花综合 | 四虎影院永久在线 | 18黄网站 | 无遮挡很爽很污很黄的网站w | 性欧美成人免费观看视 | 亚洲国产精品国产自在在线 | 亚洲性久久久影院 | 国产一区二区三区免费大片天美 |