freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于linux系統(tǒng)的遠(yuǎn)程視頻監(jiān)控畢業(yè)設(shè)計(jì)說明書-資料下載頁

2025-06-23 06:42本頁面
  

【正文】 t/studyarm/rootfs install編譯完后,在 rootfs 目錄下會(huì)生成目錄 bin、sbin、usr 和文件 linuxrc 的內(nèi)容。b)、填充etc目錄下的一些重要的系統(tǒng)文件,、inittab、fstab、profile。c)、制作根文件系統(tǒng)鏡像cd /mnt/hgfs/share tar –zxvf –C / mkyaffs2image rootfs d)、燒寫根文件系統(tǒng)(root)啟動(dòng)vivi,在vivi 狀態(tài)下,燒寫根文件系統(tǒng)。 Linux下調(diào)試技術(shù)調(diào)試是程序開發(fā)過程中必不可少的一個(gè)重要環(huán)節(jié),通用PC機(jī)的程序調(diào)試與嵌入式操作系統(tǒng)的調(diào)試環(huán)境上有著明顯的區(qū)別,前者調(diào)試器和被調(diào)試的程序往往是運(yùn)行在同一臺(tái)機(jī)器上,是相同操作系統(tǒng)下的兩個(gè)不同的進(jìn)程,調(diào)試器通過操作系統(tǒng)專用調(diào)用接口控制訪問被調(diào)試進(jìn)程,后者通常為遠(yuǎn)程調(diào)試,調(diào)試器一般運(yùn)行于桌面操作系統(tǒng)上,而被調(diào)試的程序則運(yùn)行在嵌入式系統(tǒng)之上,因此需要協(xié)調(diào)這兩個(gè)程序之間的通信。Linux下的調(diào)試工具非常的少,而且通常都是基于命令行,相比之下Windows下的集成開發(fā)環(huán)境要更容易使用,gdb是Linux下最著名的調(diào)試工具,它是GNU C自帶的調(diào)試工具,它可以使開發(fā)人員了解程序運(yùn)行的詳細(xì)細(xì)節(jié),從而消除程序的錯(cuò)誤,達(dá)到調(diào)試的目的,gdb還具有遠(yuǎn)程調(diào)試功能,可以滿足嵌入式系統(tǒng)調(diào)試的要求,在調(diào)試過程中PC機(jī)也稱為宿主機(jī)和嵌入式系統(tǒng)通過串口協(xié)議或者TCP/IP協(xié)議連接起來,遠(yuǎn)程主機(jī)上運(yùn)行被gdb規(guī)范斷點(diǎn)改造過的內(nèi)核,當(dāng)條件成立時(shí),斷點(diǎn)被激活,然后等待本地宿主機(jī)的連接命令,一旦連接成功,宿主機(jī)就可以向遠(yuǎn)程嵌入式系統(tǒng)發(fā)送調(diào)試命令了。在調(diào)試過程中g(shù)db通過調(diào)試stub來完成通信功能,調(diào)試stub是嵌入式操作系統(tǒng)中一小段代碼,它提供了運(yùn)行g(shù)db的宿主機(jī)和嵌入式系統(tǒng)進(jìn)程之間交互的一個(gè)媒介[22]。除了使用調(diào)試器外還可以直接在程序中使用printf()或printk()打印函數(shù),這種方法功能比較弱,效率低下,但在內(nèi)核模塊調(diào)試時(shí)這是唯一的方法。 本章小結(jié)本章主要內(nèi)容是構(gòu)建嵌入式Linux系統(tǒng)平臺(tái)。首先搭建了嵌入式開發(fā)的交叉編譯環(huán)境,然后介紹了BootLoader的基本概念和vivi的啟動(dòng)過程,并針對(duì)本系統(tǒng)硬件對(duì)vivi進(jìn)行了修改和移植,對(duì)如何修改、編譯和移植Linux內(nèi)核以及對(duì)、YAFFS文件系統(tǒng)制作也做了詳細(xì)的研究,最后簡要闡述了linux下的調(diào)試技術(shù)。嵌入式Linux平臺(tái)的構(gòu)建為本課題視頻采集系統(tǒng)的開發(fā)打下了堅(jiān)實(shí)的基礎(chǔ)。5 服務(wù)器端應(yīng)用軟件平臺(tái)的設(shè)計(jì) 本章是整個(gè)課題最重要的一章。首先我們得開發(fā)移植針對(duì)mini2440開發(fā)板的CMOS攝像頭驅(qū)動(dòng),該驅(qū)動(dòng)包含三個(gè)子文件。其次有了驅(qū)動(dòng)就等于可以從底層獲得數(shù)據(jù)了,所以接下來的第二小節(jié)我們利用linux系統(tǒng)提供的V4L接口函數(shù)來對(duì)數(shù)據(jù)進(jìn)行采集,采集完后就是編碼數(shù)據(jù)以便于發(fā)送,這是第三小節(jié)的內(nèi)容。編碼完成后就建立服務(wù)器,將數(shù)據(jù)發(fā)送給有連接請(qǐng)求的客戶端。整個(gè)服務(wù)器端軟件設(shè)計(jì)流程轉(zhuǎn)換成框圖如下: 服務(wù)器端軟件設(shè)計(jì)流程 CMOS攝像頭設(shè)備驅(qū)動(dòng)程序設(shè)計(jì) Linux設(shè)備驅(qū)動(dòng)程序概述系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核和應(yīng)用程序之間的接口,設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)內(nèi)核和機(jī)器硬件之間的接口。設(shè)備驅(qū)動(dòng)程序?yàn)閼?yīng)用程序屏蔽了硬件的細(xì)節(jié),這樣在應(yīng)用程序看來,硬件設(shè)備只是一個(gè)設(shè)備文件,應(yīng)用程序可以像操作普通文件一樣對(duì)硬件設(shè)備進(jìn)行操作。設(shè)備驅(qū)動(dòng)程序是內(nèi)核的一部分,它完成以下功能[23]:對(duì)設(shè)備初始化和釋放;把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù);讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請(qǐng)求的數(shù)據(jù);檢測(cè)和處理設(shè)備出現(xiàn)的錯(cuò)誤。 在Linux操作系統(tǒng)下有三種類型的設(shè)備驅(qū)動(dòng)程序:字符設(shè)備驅(qū)動(dòng)程序、塊設(shè)備驅(qū)動(dòng)程序和網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序。字符設(shè)備是以字節(jié)為單位逐個(gè)進(jìn)行I/O操作的設(shè)備,在對(duì)字符設(shè)備發(fā)出讀寫請(qǐng)求時(shí),實(shí)際的硬件I/O緊接著就發(fā)生了,一般來說字符設(shè)備中的緩存是可有可無的,而且也不支持隨機(jī)訪問。塊設(shè)備主要是針對(duì)磁盤等慢速設(shè)備設(shè)計(jì)的,其目的是避免耗費(fèi)過多的CPU時(shí)間來等待操作的完成。它利用一塊系統(tǒng)內(nèi)存作為緩沖區(qū),當(dāng)用戶進(jìn)程對(duì)設(shè)備進(jìn)行讀寫請(qǐng)求時(shí),驅(qū)動(dòng)程序先查看緩沖區(qū)中的內(nèi)容,如果緩沖區(qū)中的數(shù)據(jù)能滿足用戶的要求就返回相應(yīng)的數(shù)據(jù),否則就調(diào)用相應(yīng)的請(qǐng)求函數(shù)來進(jìn)行實(shí)際的I/O操作。網(wǎng)絡(luò)設(shè)備是一個(gè)能夠和其他主機(jī)交換數(shù)據(jù)的設(shè)備,它通常是個(gè)物理設(shè)備,但也可能是個(gè)軟件設(shè)備,如回環(huán)設(shè)備(loopback)。網(wǎng)絡(luò)驅(qū)動(dòng)程序負(fù)責(zé)驅(qū)動(dòng)設(shè)備發(fā)送和接收數(shù)據(jù)包。除了設(shè)備類型以外,內(nèi)核還使用了一個(gè)主設(shè)備號(hào)和一個(gè)次設(shè)備號(hào)來唯一標(biāo)識(shí)設(shè)備,主設(shè)備號(hào)標(biāo)識(shí)了設(shè)備對(duì)應(yīng)的驅(qū)動(dòng)程序,而次設(shè)備號(hào)僅由驅(qū)動(dòng)程序解釋,一般用于識(shí)別在若干可能的硬件設(shè)備中,I/O請(qǐng)求所涉及到的那個(gè)設(shè)備[24]。 設(shè)備驅(qū)動(dòng)與文件系統(tǒng)關(guān)系設(shè)備驅(qū)動(dòng)程序的任務(wù)包括自動(dòng)配置與初始化子程序,負(fù)責(zé)檢測(cè)所要驅(qū)動(dòng)程序的設(shè)備硬件是否存在和是否能正常工作,這部分驅(qū)動(dòng)程序僅在初始化的時(shí)候被調(diào)用一次。服務(wù)于I/O請(qǐng)求的子程序成為驅(qū)動(dòng)程序的上半部分。調(diào)用這部分是系統(tǒng)調(diào)用的結(jié)果。在執(zhí)行這部分程序的時(shí)候,系統(tǒng)仍會(huì)認(rèn)為和進(jìn)行調(diào)用的進(jìn)程屬于同一個(gè)進(jìn)程,只是有用戶態(tài)改變?yōu)閮?nèi)核態(tài),并具有進(jìn)行此系統(tǒng)調(diào)用的用戶程序的運(yùn)行環(huán)境,所以可以在其中調(diào)用sleep()等與進(jìn)程運(yùn)行相關(guān)的函數(shù)。在系統(tǒng)內(nèi)部,I/O設(shè)備的存取通過一組固定的入口點(diǎn)來進(jìn)行,這組入口點(diǎn)是由每個(gè)設(shè)備的設(shè)備驅(qū)動(dòng)程序提供的。一般來說,字符型設(shè)備驅(qū)動(dòng)程序能夠提供如下接口函數(shù):(1)open():打開設(shè)備準(zhǔn)備1/O操作。對(duì)字符特別設(shè)備文件進(jìn)行打開操作,都會(huì)調(diào)用設(shè)備的open入口點(diǎn)。open子程序必須對(duì)將要進(jìn)行的操作做好必要的準(zhǔn)備工作,如清除緩沖區(qū)等。如果設(shè)備是獨(dú)占的,即同一時(shí)刻只能有一個(gè)程序訪問此設(shè)備,則open子程序必須設(shè)置一些標(biāo)志以表示設(shè)備處于忙狀態(tài)。(2)colse():關(guān)閉一個(gè)設(shè)備。當(dāng)最后一次使用設(shè)備終結(jié)后,調(diào)用close子程序。獨(dú)占設(shè)備必須清楚標(biāo)志。(3)read():從設(shè)備上讀數(shù)據(jù)。對(duì)于有緩沖區(qū)的1/O操作,一般是從緩沖區(qū)里讀數(shù)據(jù)。對(duì)于字符型設(shè)備文件進(jìn)行讀操作將調(diào)用read子程序。(4)write():向設(shè)備寫數(shù)據(jù)。對(duì)于有緩沖區(qū)的1/O操作,一般是把數(shù)據(jù)寫入緩沖區(qū)里。對(duì)字符型設(shè)備文件進(jìn)行寫操作將調(diào)用write子程序。(5)ioctl():執(zhí)行讀、寫之外的操作,一般由自己實(shí)現(xiàn)。 驅(qū)動(dòng)程序的模塊化設(shè)計(jì)Linux下對(duì)于一個(gè)硬件的驅(qū)動(dòng),可以有兩種方式:直接加載到內(nèi)核代碼中,啟動(dòng)內(nèi)核時(shí)就會(huì)驅(qū)動(dòng)此硬件設(shè)備。另一種就是以模塊方式。模塊(modoule)是在內(nèi)核空間運(yùn)行的程序,實(shí)際上是一種目標(biāo)對(duì)象文件,沒有鏈接,不能獨(dú)立運(yùn)行,但是可以裝載到系統(tǒng)中作為內(nèi)核的一部分運(yùn)行,從而可以動(dòng)態(tài)擴(kuò)充內(nèi)核的功能。模塊最主要的用處就是用來實(shí)現(xiàn)設(shè)備驅(qū)動(dòng)程序。當(dāng)應(yīng)用程序需要時(shí)再加載進(jìn)內(nèi)核空間運(yùn)行。通常所指的一個(gè)硬件的驅(qū)動(dòng)程序就是指一個(gè)驅(qū)動(dòng)模塊[25]。設(shè)備驅(qū)動(dòng)程序在加載時(shí)首先調(diào)用的入口函數(shù)是module_init (),該函數(shù)完成設(shè)備驅(qū)動(dòng)程序的初始化工作,如寄存器復(fù)位、結(jié)構(gòu)體賦值等。其中最重要的一項(xiàng)任務(wù)就是向內(nèi)核注冊(cè)驅(qū)動(dòng)模塊設(shè)備,對(duì)于字符設(shè)備的注冊(cè)函數(shù)為register_chrdev(),對(duì)于塊設(shè)備注冊(cè)函數(shù)為register_blkdev()。注冊(cè)成功后,模塊設(shè)備將獲得系統(tǒng)分配的主設(shè)備號(hào)、自定義的次設(shè)備號(hào),并建立起與文件系統(tǒng)的關(guān)聯(lián)。:用戶調(diào)用Moudule_initModule_exit設(shè)備注冊(cè)設(shè)備功能設(shè)備卸載內(nèi)核InsmodRmmod 設(shè)備驅(qū)動(dòng)模塊加載對(duì)于一個(gè)硬件,Linux是這樣來進(jìn)行驅(qū)動(dòng)的:首先。我們要使用這個(gè)驅(qū)動(dòng)程序,首先要加載運(yùn)行它。這樣驅(qū)動(dòng)就會(huì)根據(jù)自己的類型(字符設(shè)備類型等)向系統(tǒng)注冊(cè),注冊(cè)成功系統(tǒng)會(huì)返回一個(gè)主設(shè)備號(hào),這個(gè)主設(shè)備號(hào)就是系統(tǒng)對(duì)它的唯一標(biāo)識(shí)。驅(qū)動(dòng)就是根據(jù)此主設(shè)備號(hào)來創(chuàng)建一個(gè)一般放置在/dev目錄下的設(shè)備文件。當(dāng)我們要訪問此硬件時(shí),就可以對(duì)設(shè)備文件通過open, read, write等命令進(jìn)行。而驅(qū)動(dòng)就會(huì)接收到相應(yīng)的read,write操作而根據(jù)自己的模塊中的相應(yīng)函數(shù)進(jìn)行了。在/lib/modules/,是針對(duì)當(dāng)前內(nèi)核版本的模塊。只要模塊依賴關(guān)系正確,你就可以通過modprobe命令加載而不需要知道具體模塊文件位置。另一個(gè)是/etc/,它定義了一些常用設(shè)備的別名。系統(tǒng)就可以在需要此設(shè)備支持時(shí),正確尋找驅(qū)動(dòng)模塊。 S3C2440的攝像頭接口 S3C2440處理器有一個(gè)專用的camera接口(CAMIF),該接口支持ITUR、BT.601/656 、YCbCr 8位數(shù)據(jù)格式視頻數(shù)據(jù)輸入,最大輸入視頻圖像大小為409* 096像素。攝像接口包括8位來自攝像頭的輸入數(shù)據(jù)信號(hào),一個(gè)輸出主時(shí)鐘信號(hào),三個(gè)來自攝像頭的輸入同步時(shí)鐘信號(hào)和一個(gè)輸出復(fù)位信號(hào)。攝像接口的主時(shí)鐘信號(hào)由USB PLL產(chǎn)生,它的頻率為96MHz,再經(jīng)過分頻處理后輸出給攝像頭,攝像頭再根據(jù)該時(shí)鐘信號(hào)產(chǎn)生三個(gè)同步時(shí)鐘信號(hào)(像素時(shí)鐘、幀同步時(shí)鐘和行同步時(shí)鐘),反過來再輸入回S3C2440。視頻輸入后分兩個(gè)通道逐幀保存圖像數(shù)據(jù),一個(gè)為預(yù)覽通道(即P通道),另一個(gè)為編解碼通道(即C通道)。兩個(gè)通道均通過DMA方式將一幀圖像保存到系統(tǒng)內(nèi)存SDRAM中,在系統(tǒng)內(nèi)存開辟了4組幀圖像緩沖,從而保證了用戶應(yīng)用程序在讀取幀圖像數(shù)據(jù)時(shí)不影響另一幀圖像數(shù)據(jù)寫入。其特性如下[25]:◆支持ITUR、/656 、YCbCr 8位數(shù)據(jù)格式視頻數(shù)據(jù)輸入,并可調(diào)整Y、Cb、Cr三個(gè)信號(hào)的順序,以適應(yīng)不同的視頻信號(hào)源;◆具有DZI功能,相當(dāng)于數(shù)碼變焦;◆C通道輸出圖像最大為4 09* 096像素;◆P通道輸出圖像最大為640480像素;◆P通道輸出圖像格式可配置為RGBl6或GRB24;◆C通道輸出圖像格式可配置為YCbCr 4:2:2或YCbCr 4:2:0;◆輸出圖像可X方向鏡像翻轉(zhuǎn)、Y方向鏡像翻轉(zhuǎn),或180176。旋轉(zhuǎn);◆DMA數(shù)據(jù)傳輸,4組幀圖像緩沖,2個(gè)對(duì)應(yīng)的中斷處理,保證視頻實(shí)時(shí)采集;◆2個(gè)通道不同圖像數(shù)據(jù)格式輸出,便于用戶程序開發(fā)。CAMIF對(duì)外接口信號(hào)定義如下: CAMPCLK:輸入的視頻像素同步時(shí)鐘。 CAMVSYNC:輸入的視頻幀同步時(shí)鐘。 CAMHREF:輸入的視頻行同步時(shí)鐘。 CAMDATA[7:0] :輸入的視頻8位數(shù)據(jù)。 CAMCLKOUT:輸出的時(shí)鐘,用于外接的沒有獨(dú)立時(shí)鐘的camera芯片的主時(shí)鐘。當(dāng)外接的camera芯片有獨(dú)立的時(shí)鐘時(shí),該信號(hào)可不用。 CAMRESET:輸出的軟件復(fù)位信號(hào),可對(duì)外接的camera芯片進(jìn)行復(fù)位。: 信號(hào)時(shí)序圖使用CAMIF時(shí),必須對(duì)CAMIF相關(guān)寄存器進(jìn)行正確配置,下面介紹主要寄存器的配置原理: CAMRCFMT:選擇輸入視頻信號(hào)源格式寄存器①選擇輸入視頻信號(hào)源為ITUR、 YCbCr 8位數(shù)據(jù)格式,或ITUR、BT.656 、YCbCr 8位數(shù)據(jù)格式。②選擇輸入視頻信號(hào)源水平像素大小和垂直像素大小,一定要和外接的camera設(shè)備分辨率一致。③選擇輸入視頻信號(hào)Ycbcr信號(hào)順序,一定要和外接camera信號(hào)的實(shí)際順序一致。CIWDOFST:從輸入信號(hào)中截取中心部分的圖像寄存器 原理是:從輸入信號(hào)中截取中心部分的圖像輸出到大小不變的輸出圖像緩沖中,從而實(shí)現(xiàn)對(duì)圖像的放大或縮小。①配置該寄存器允許縮放或不允許縮放。②X方向圖像放大或縮小控制,原理是截切掉左部和右部的圖像像素?cái)?shù)。③Y方向圖像放大或縮小控制,原理是截切掉上部和下部的圖像像素?cái)?shù)。CIGCTRL:全局控制寄存器通過該寄存器對(duì)外接的camera進(jìn)行復(fù)位,即控制CAMRESET信號(hào)的電平高低。 CICOTRGFMT :C通道輸出圖像格式及大小配置寄存器①可將C通道輸出圖像格式配置為YCbCr 4:2:2或YCbCr 4:2:0格式。②可設(shè)置C通道輸出圖像X方向像素?cái)?shù)。③可設(shè)置C通道輸出圖像Y方向像素?cái)?shù)。④可設(shè)置C通道輸出圖像X方向鏡像。⑤可設(shè)置C通道輸出圖像Y方向鏡像。⑥可設(shè)置C通道輸出圖像180176。旋轉(zhuǎn)。 CIPRTRGFMT:P通道輸出圖像大小配置寄存器①可設(shè)置P通道輸出圖像X方向像素?cái)?shù)。②可設(shè)置P通道輸出圖像Y方向像素?cái)?shù)。③可設(shè)置P通道輸出圖像X方向鏡像。④可設(shè)置P通道輸出圖像Y方向鏡像。⑤可設(shè)置P通道輸出圖像180176。旋轉(zhuǎn)。 CICOSTATUS和CIPRSTATUS:狀態(tài)寄存器 CICOSTATUS反映C通道數(shù)據(jù)的寫入狀態(tài),即4組緩沖的哪一組;CIPRSTATUS反映P通道數(shù)據(jù)的寫入狀態(tài),即4組緩沖的哪一組。用戶程序采集圖像數(shù)據(jù)時(shí),應(yīng)根據(jù)狀態(tài)寄存器當(dāng)前狀態(tài),決定從哪一組讀出數(shù)據(jù)。 此外,CICOYSAl~CICOYSA4分別為C通道第1~4幀Y信號(hào)數(shù)據(jù)緩沖起始地址寄存器;CICOCBSAl~CICOCBSA4分別為C通道第1~4幀Cb信號(hào)數(shù)據(jù)緩沖起始地址寄存器;CICOCRSAl~CICOCRSA4分別為C通道第1~4幀Cr信號(hào)數(shù)據(jù)緩沖起始地址寄存器;CIPRCLRSAl~CIPRCLRSA4分別為P通道第1~4幀RGB信號(hào)數(shù)據(jù)緩沖起始地址寄存器。 OV9650的操作我們的攝像頭中用的圖像采集芯片為OV9650圖像傳感器,該圖像傳感器具有10位的數(shù)據(jù)接口和標(biāo)準(zhǔn)的SCCB接口,采用CSP一28封裝,體積小。: S3C2440與CMOS攝像頭接口該芯片支持RGB(4:2:2),YUV(4:2:2),YCrCb(4:2:2)三種數(shù)據(jù)輸出格式,內(nèi)置138個(gè)設(shè)備控制寄存器,地址分別從0x00~0x8A。OV9650的數(shù)據(jù)接口稱為SCCB(串行攝像控制總線)[26],通過SCCB接口可以方便地設(shè)置傳感器視窗大小、增益、白平衡校正、曝光控制、飽和度、色調(diào)等參數(shù)。它由兩條數(shù)據(jù)線組成:一個(gè)是用于傳輸時(shí)鐘信號(hào)的SIO_C,另一個(gè)是用于傳輸數(shù)據(jù)信號(hào)的SIO_D。SCCB的傳輸協(xié)議與IIC的極其相似,只不過IIC在每傳輸完一個(gè)
點(diǎn)擊復(fù)制文檔內(nèi)容
化學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1