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

正文內(nèi)容

基于arm的網(wǎng)絡視頻監(jiān)控系統(tǒng)的設計與實現(xiàn)-資料下載頁

2024-11-17 22:08本頁面

【導讀】信協(xié)議連接到網(wǎng)絡中,這個系統(tǒng)可以支持雙向通信。用戶可以使用手機或互聯(lián)。有效便捷的網(wǎng)絡視頻監(jiān)控系統(tǒng)能夠給人們的生活帶來安全和便。因此,網(wǎng)絡視頻監(jiān)控得到了越來越多的關注和發(fā)展。介紹―網(wǎng)絡視頻監(jiān)控‖背景及國內(nèi)外研究的現(xiàn)狀;分析各種監(jiān)控設備原理結構;網(wǎng)絡監(jiān)控系統(tǒng)的硬件設計及實現(xiàn);對系統(tǒng)進行測試與分析;方案要求視頻的實時傳輸、實時監(jiān)控。本系統(tǒng)以IntelXscale芯片和嵌入式。機中,遠程PC只需在網(wǎng)頁中便能實時的看到監(jiān)控端的視頻圖像。程序的編譯和移植,研究了嵌入式一般驅動程序的使用。隨后,本文詳細描述了。描述系統(tǒng)功能,調(diào)整用戶友好界面,提出未來進一步開發(fā)建議。通信的新應用,對嵌入式視頻未來發(fā)展有一定參考價值。

  

【正文】 第 4章 USB設備驅動程序設計 18 全速 12Mbit/s,這樣的速率完全滿足鼠標、鍵盤、 CDROM 等設備,但是在嵌入式視頻監(jiān)控系統(tǒng)中,這樣的速度還是很慢。所以, 提供了一種更好的傳輸速率:高速,它可以達到 480Mbit/s。 向下兼容 ,可以將遵循 規(guī)范的設備連接到 控制器上,也可以把 的設備鏈接到 控制器上。 USB 總線的硬件拓撲結構 [12]如圖 所示。 U S B 主 機 控 制器U S B 設 備U S B 設 備U S B 設 備U S B 設 備U S B 設 備U S B 設 備 U S B 設 備 U S B 設 備U S B 設 備根 集 線器集 線 器集 線 器集 線 器 圖 USB 總線硬件拓撲圖 USB 主機控制器通過根集線器與其他 USB 設備相連。集線器也屬于 USB 設備,通過它可以在一個 USB 接口上擴展出多個接口。除根集線器外,最多可以層疊 5 個集線器,每條 USB 電纜的最大長度是 5m,所以 USB 總線的最大距離為 30m。一條 USB 總線上可以外接 127 個設備,包括根集線器和其他集線器。整個結構圖是一個星狀結構,一條 USB 總線上所有設備共享一條通往主機的數(shù)據(jù)通道,同一時刻只能有一個設備與主機通信。 通過 USB 主機控制器來管理外接的 USB 設備, USB 主機控制器共分 3 種:UHCI、 OHCI 和 EHCI。在配置 Linux 內(nèi)核的時候, 看到的 ―HCD‖字樣表示 ―Host Controller Drivers‖,即主機控制器驅動程序。 東北大學本科畢業(yè)設計(論文) 第 4章 USB設備驅動程序設計 19 USB 驅動程序分為兩類: USB 主機控制器驅動程序( Host Controller Drivers)、USB 設備驅動程序( USB device drivers)。它們在內(nèi)核中的層次如圖 所示。 U S B D e v i c e D r i v e r sU S B H o s t C o n t r o l l e r D r i v e r sU s e rH a r d w a r e 圖 USB 驅動程序層次結構 在試驗中,教學平臺上的 Linux 嵌入式內(nèi)核已經(jīng)配置了 USB 主機控制器驅動程序, 只 需要添加需要的 USB 設備驅動程序,就能實現(xiàn) USB 設備的正常使用。 Linux 下驅動程序的實現(xiàn) Linux 操作系統(tǒng)下對硬件設備進行驅動開發(fā)的一般步驟如下 : (l)注冊設備 在系統(tǒng)啟動時或者在模塊加載的時候需要將設備和重要的數(shù)據(jù)結構登記到內(nèi)核的設備數(shù)組中,并確定該設備的主次設備號。在 Linux 系統(tǒng)中,對于字符設備一般通過調(diào)用 register_chrdev 向系統(tǒng)注冊設備驅動程序, register_chrdev 在fs/ 文件 中的 定義 如下 :int register_chrdev(unsigned int major,const char*name,struct file_operations fops) 定義中的 major 是設備驅動程序向系統(tǒng)申請的主設備號,如果 major 為 O,東北大學本科畢業(yè)設計(論文) 第 4章 USB設備驅動程序設計 20 則系統(tǒng)為該驅動程序動態(tài)的分配一個主設備號,不過此設備號是臨時的; name是設備名: fops 是各個調(diào)用入口點的說明。函數(shù)返回 O 表示注冊成功,返回INVAL 表示申請的主設備號非法,返回 EBUSY 表示申請的主設備號正在被其它設備驅動程序使用。 以后對設備驅動程序的 file_operations 的操作都可以通過該主設備號的索引來完 成。 register_chrdev 函數(shù)操作成功后,設備名便出現(xiàn)在 /proc/devices 文件目錄中,使用命令 cat/proc/devices 可以查看設備的工作狀態(tài)。 (2)定義操作集 驅動程序中要通過一系列函數(shù)完成對設備的不同操作,這些操作在面向對象編程術語中也稱為方法,該操作集通過數(shù)據(jù)結構 file_operations 實現(xiàn)。內(nèi)核內(nèi)部通過 file 結構識別設備,通過 file_operations 數(shù)據(jù)結構提供的文件系統(tǒng)的入口點函數(shù)訪問設備。 file_operations 定義在 linux/中的函數(shù) 指針表 : struct file_operations { struct module*owner。 loff_t (*llseek) (struct file*, loff_t, int)。 ssize_t (*read) (struct file*, size_t, loff_t*)。 ssize_t (*write) (struct file*, const char*, size_t, loff_t*)。 int (*readdir) (struct file*, void*, filldir_t*)。 unsigned int (*poll) (struct file*, struct poll_table_struct*)。 int (*ioctl) (struct inode*, struct file*, unsigned int, unsigned long)。 int (*mmap) (struct file*, struct vm_area_struct*)。 int (*open) (struct inode*, struct file*)。 int (*flush) (struct file*)。 int (*release) (struct inode*, struct file*)。 int (*fsync) (struct file*, struct dentry*, int datasync)。 int (*fsyne) (int, struct file*, int)。 int (*lock) (struct file*,int, struct file_lock*)。 ssize_t (*readv) (struct file*, const struct iovec*, unsigned long, loff_t*)。 ssize_t (*writev) (struct file*, const struct iovec*, unsigned long, loff_t*)。 ssize_t (*sendpage) (struct file*, struct page*, int, size_t, loff_t*, int)。 unsigned long (*get_unmapped_area) (struct file*, unsigned long, unsigned long, 東北大學本科畢業(yè)設計(論文) 第 4章 USB設備驅動程序設計 21 unsigned long, unsigned long)。 } 這個結構的每一個成員的名字對應一個系統(tǒng)調(diào)用,在用戶程序利用系統(tǒng)調(diào)用對設備文件進行諸如讀 /寫操作時,系統(tǒng)調(diào)用會通過設備文件的主設備號找到相應 的驅動程序,然后讀取這個數(shù)據(jù)結構的相應函數(shù)指針,把控制權交給該函數(shù)。對于具體的設備驅動并不需要實現(xiàn)結構中所有的例程,只要完成設備功能就可以了。例如對于一個常見的字符設備驅動來說,可能只有操作 open(), write(), read(),ioctl()和 close(),當用戶程序通過系統(tǒng)調(diào)用訪問設備時,最終要通過這些操作集來完成。 (3)卸載模塊 當不再需要使用一個模塊或設備 時,需要將其從內(nèi)核中卸載下來,這時會動態(tài) 調(diào) 用 模 塊 中 的 module_exit() 函 數(shù) , 并 需 要 在 該 函 數(shù) 中 調(diào) 用modul_unregister_chrdev()或 module_unregister_blkdev()釋放掛入內(nèi)核的數(shù)據(jù)結構同時釋放該設備號。 USB 攝像頭驅動程序設計 攝像頭屬于視頻設備,在 Linux 內(nèi)核中, VideoforLinux(簡稱 V4L)是關于視頻設備的驅動標準。這個標準為應用程序定義了一系列的接口函數(shù),內(nèi)核、驅動和應用程序都是依靠這個標準來進行交流。本系統(tǒng)所使用的 USB 攝像頭正是基于 該標 準來編寫驅動和應用程序的。 Linux 內(nèi)核是依據(jù)設備號來操作設備文件的,在內(nèi)核中,攝像頭對應的設備文件名為 /dev/video0,主設備號是 81,次設備號根據(jù)攝像頭數(shù)目來確定,本系統(tǒng)中僅使用一個攝像頭,所以可以通過 mknod/dev/video0 c 81 0 來創(chuàng)建節(jié)點。 USB攝像頭驅動程序實現(xiàn)原理如圖 所示。 USB 攝像頭的驅動和通用設備的驅動準則一樣,但需要與內(nèi)核提供的視頻驅動掛鉤。即首先在驅動中聲明一個 video_device 結構,并為其指定文件操作函數(shù)指針數(shù)組 fops,向系統(tǒng)注冊。在應用程序發(fā) 出文件操作的相關命令時,核心根據(jù)這些指針調(diào)用相應函數(shù),并將該結構作為參數(shù)傳遞給它們。這樣,就完成了驅動和核心之間的通信。 例如 : Static struct video_devie vdev_template={……}。 聲明 video_deviee,指出掛接驅動 東北大學本科畢業(yè)設計(論文) 第 4章 USB設備驅動程序設計 22 攝 像 頭 驅 動用 戶 進 程系 統(tǒng) 調(diào) 用攝 像 頭文 件 操 作 接 口接 收 緩 沖 區(qū) 發(fā) 送 緩 沖 區(qū)中 斷 服 務 程 序 圖 攝像頭驅動實現(xiàn)框圖 Static Struct file_operation spcasxx_fops= {……}。 聲明本驅動的文件操作函數(shù)指針 Struct video_device*vdev=video_devdata (file)。 從文件指針中提取出 video_deviee 結構 在 video_deviee 結構中,有一個私有指針 priv,可以將它指向一塊保留內(nèi)存。在這塊內(nèi)存中,保存著本驅動、本設備的相關初始化信息。這塊內(nèi)存的申請、初始化、指針指向等工作都是在 USB 驅動的枚舉函數(shù) probe 中完成。這樣,在枚舉函數(shù)將控制權返還給系統(tǒng)后,因為內(nèi)核不銷毀保留內(nèi)存,所以驅動仍然保留著自己的信息。在驅動卸載函數(shù)中需要將申請的各塊內(nèi)存全部釋放。 Linux 系統(tǒng)中任何 USB 傳輸都通過 URB 實現(xiàn)。為提高速度,可以考慮擴大URB 的緩沖,這樣可以降低每個 USB 事務中握手信息所占比例,提高有效數(shù)據(jù)的 輸速度。但是受限于總線帶寬和具體的 USB 設備芯片,單純擴大 URB 的緩沖不能無限制地解決問題。 USB 在操作系統(tǒng)中每次傳輸都要包括 URB 的建立、發(fā)出、回收、數(shù)據(jù)整理等階段,這些時間不產(chǎn)生有效數(shù)據(jù)。因此可以建立兩個 URB,在等待一個 URB 被回收時,也就是圖像正在被傳感器采集時,處理、初始化另一個 URB,并在回收后立刻將其發(fā)出。兩個 URB 交替使用,大大減少了額外時間。 由于嵌入式平臺上運行的 內(nèi)核,內(nèi)部已經(jīng)集成了對 的支持,所以無需移植相應的 USB 驅動。 東北大學本科畢業(yè)設計(論文) 第 4章 USB設備驅動程序設計 23 在設計中,攝像頭芯片采用中星微的 Z301 系列芯片, 內(nèi)核并不支持這種芯片,所以我們通過移植芯片驅動程序來達到目的。芯片的驅動程序是spca5**系列,如果不重新編譯內(nèi)核的話,將驅動程序動態(tài)加載就可以正常使用。設計中動態(tài)加載的命令使用 insmod命令,它和 modprobe命令在使用上有所不同,modprobe 在加載模塊時不用指定模塊文件的絕對路徑,也不用帶模塊文件的后綴 .o 或 .ko;而 insmod 需要的 是模塊的所在目錄的絕對路徑,并且一定要帶有模塊文件名后綴的 .o 或者 .ko。但是在功能上,它們所達到的效果基本相同 [13]。東北大學本科畢業(yè)設計(論文) 第 5章 視頻采集功能的設計 24 第 5章 視頻采集 功能的設計 視頻采集程序是基于 V4L 開發(fā)的,包括攝像頭的初始化、打開 /關閉、參數(shù)設置和數(shù)據(jù)讀取等操作, 視頻采集程序 流程圖如圖 所示 [14]。 開 始初 始 化 攝 像 頭 i n i t _ v i d e o I n ( )打 開 攝 像 頭 o p e n _ v 4 l ( )獲 取 攝 像 頭 參 數(shù) i c o t l ( i n t v d , i n t c m d , . . )設 置 攝 像 頭 參 數(shù) i o c t l ( )獲 取 一 幀 圖 像一 幀 是 否 截 取 完 畢存 儲 并 準 備 傳 輸是 否 終 止 視 頻 采 集關 閉 攝 像 頭終 止NYNY 圖 視頻采集程序 流程圖 東北大學本科畢業(yè)設計(論文) 第 5章
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1