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

正文內容

基于arm的網(wǎng)絡視頻監(jiān)控系統(tǒng)的設計與實現(xiàn)(參考版)

2024-11-21 22:08本頁面
  

【正文】 開 始初 始 化 攝 像 頭 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章 視頻采集。但是在功能上,它們所達到的效果基本相同 [13]。芯片的驅動程序是spca5**系列,如果不重新編譯內核的話,將驅動程序動態(tài)加載就可以正常使用。 由于嵌入式平臺上運行的 內核,內部已經集成了對 的支持,所以無需移植相應的 USB 驅動。因此可以建立兩個 URB,在等待一個 URB 被回收時,也就是圖像正在被傳感器采集時,處理、初始化另一個 URB,并在回收后立刻將其發(fā)出。但是受限于總線帶寬和具體的 USB 設備芯片,單純擴大 URB 的緩沖不能無限制地解決問題。 Linux 系統(tǒng)中任何 USB 傳輸都通過 URB 實現(xiàn)。這樣,在枚舉函數(shù)將控制權返還給系統(tǒng)后,因為內核不銷毀保留內存,所以驅動仍然保留著自己的信息。在這塊內存中,保存著本驅動、本設備的相關初始化信息。 聲明本驅動的文件操作函數(shù)指針 Struct video_device*vdev=video_devdata (file)。 例如 : Static struct video_devie vdev_template={……}。在應用程序發(fā) 出文件操作的相關命令時,核心根據(jù)這些指針調用相應函數(shù),并將該結構作為參數(shù)傳遞給它們。 USB 攝像頭的驅動和通用設備的驅動準則一樣,但需要與內核提供的視頻驅動掛鉤。 Linux 內核是依據(jù)設備號來操作設備文件的,在內核中,攝像頭對應的設備文件名為 /dev/video0,主設備號是 81,次設備號根據(jù)攝像頭數(shù)目來確定,本系統(tǒng)中僅使用一個攝像頭,所以可以通過 mknod/dev/video0 c 81 0 來創(chuàng)建節(jié)點。這個標準為應用程序定義了一系列的接口函數(shù),內核、驅動和應用程序都是依靠這個標準來進行交流。 (3)卸載模塊 當不再需要使用一個模塊或設備 時,需要將其從內核中卸載下來,這時會動態(tài) 調 用 模 塊 中 的 module_exit() 函 數(shù) , 并 需 要 在 該 函 數(shù) 中 調 用modul_unregister_chrdev()或 module_unregister_blkdev()釋放掛入內核的數(shù)據(jù)結構同時釋放該設備號。對于具體的設備驅動并不需要實現(xiàn)結構中所有的例程,只要完成設備功能就可以了。 unsigned long (*get_unmapped_area) (struct file*, unsigned long, unsigned long, 東北大學本科畢業(yè)設計(論文) 第 4章 USB設備驅動程序設計 21 unsigned long, unsigned long)。 ssize_t (*writev) (struct file*, const struct iovec*, unsigned long, loff_t*)。 int (*lock) (struct file*,int, struct file_lock*)。 int (*fsync) (struct file*, struct dentry*, int datasync)。 int (*flush) (struct file*)。 int (*mmap) (struct file*, struct vm_area_struct*)。 unsigned int (*poll) (struct file*, struct poll_table_struct*)。 ssize_t (*write) (struct file*, const char*, size_t, loff_t*)。 loff_t (*llseek) (struct file*, loff_t, int)。內核內部通過 file 結構識別設備,通過 file_operations 數(shù)據(jù)結構提供的文件系統(tǒng)的入口點函數(shù)訪問設備。 register_chrdev 函數(shù)操作成功后,設備名便出現(xiàn)在 /proc/devices 文件目錄中,使用命令 cat/proc/devices 可以查看設備的工作狀態(tài)。函數(shù)返回 O 表示注冊成功,返回INVAL 表示申請的主設備號非法,返回 EBUSY 表示申請的主設備號正在被其它設備驅動程序使用。 Linux 下驅動程序的實現(xiàn) Linux 操作系統(tǒng)下對硬件設備進行驅動開發(fā)的一般步驟如下 : (l)注冊設備 在系統(tǒng)啟動時或者在模塊加載的時候需要將設備和重要的數(shù)據(jù)結構登記到內核的設備數(shù)組中,并確定該設備的主次設備號。它們在內核中的層次如圖 所示。在配置 Linux 內核的時候, 看到的 ―HCD‖字樣表示 ―Host Controller Drivers‖,即主機控制器驅動程序。整個結構圖是一個星狀結構,一條 USB 總線上所有設備共享一條通往主機的數(shù)據(jù)通道,同一時刻只能有一個設備與主機通信。除根集線器外,最多可以層疊 5 個集線器,每條 USB 電纜的最大長度是 5m,所以 USB 總線的最大距離為 30m。 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 設備相連。 向下兼容 ,可以將遵循 規(guī)范的設備連接到 控制器上,也可以把 的設備鏈接到 控制器上。 支持兩種傳輸速率:低速 、東北大學本科畢業(yè)設計(論文) 第 4章 USB設備驅動程序設計 18 全速 12Mbit/s,這樣的速率完全滿足鼠標、鍵盤、 CDROM 等設備,但是在嵌入式視頻監(jiān)控系統(tǒng)中,這樣的速度還是很慢。 USB( Universal Serial Bus)即 ―通用串行外部總線 ‖,用途廣泛,可以外接硬盤、鍵盤、鼠標、打印機等多種設備, USB 能夠使用盡可能少的接口支持盡可能多的外設,尤為適合在嵌入式設備中使用,是嵌入式接口標準的一個很好的選擇。 (4)write 入口點 :向設備寫數(shù)據(jù),對于有緩沖區(qū)的 I/O 操作,一般向緩沖區(qū)里寫入數(shù)據(jù)。獨占設備必須標記設備可再次 使用。如果設備是獨占的,即同一時刻只能有一個程序訪問此設備,則 open 子程序必須設置一些標志以表示設備的狀態(tài)。一般來說,字符型設備驅動程序能夠提供如下幾個入口點 : (1)open 入口點 :打開設備準備 I/O 操作,對字符特別設備進行打開操作,都會調用設備的 open 入口點。因為設備驅動程序一般支持同一類型的若干設備,所以一般在系統(tǒng)調用中斷服務子程序時,都帶有一個或多個參數(shù),以唯一標識請求服務的設備。在 Linux 操作系統(tǒng)中,并不是直接從中斷向量表中調用設備驅動程序的中斷服務子程序,而是由 Linux 系統(tǒng)來接收硬件中斷,再由系統(tǒng)調用中斷服務子程序。這部分程序在執(zhí)行時,系統(tǒng)仍認為是與進行調用的進程屬于同一個進程,只是由用戶態(tài)變成了核心態(tài),但仍具有進行此系統(tǒng)調用的用戶程序的運行環(huán)境,因而可以在其中調用與進程運行環(huán)境相關的函數(shù)。 (2)服務于 I/O 請求的子程序,又稱為驅動程序的上半部分。如果該設備正常,則對這個設備及其他必需的條件位口中斷、 DMA通道 )進行申一請并初始化。設備文件的主設備號必須與設備驅動程序在登記時申請的設備號一致,否則用戶進程將無法訪問驅動程序。另外每個文件都有 2 個設備號,第一個是主設備號,標識驅動程序 。用戶進程正是通過設備文件來與硬件打交道。 (4)檢測和處理設備出現(xiàn)的錯誤。 (2)把數(shù)據(jù)從內核傳送到硬件和從硬件讀取數(shù)據(jù) 。利用這種機制,內核尺寸可以保持在最小,并具有最大的靈活性,也便于檢驗新的內核代碼,而不需要重新編譯內核并重新引導。模塊是內核的一部分,它們沒有被編譯到內核中,而是分別被編譯并鏈接成一組目標文件。 上面已經說過, 驅動程序的作用在于向應用程序提供訪問硬件設備的接口,驅動程序屏蔽了硬件實現(xiàn)上的細節(jié)操作,于是應用程序可以像操作普 通文件一樣對硬件設備進行操作。 從系統(tǒng)運行順序來看, 硬件平臺啟動運行 Linux 后,啟用了 MMU 單元即內存管理單元,在這種模式下系統(tǒng)不能直接對物理地址進行訪問。驅動程序的任務就是將這些函數(shù)映射到作用硬件的具體操作上。它就像一個獨立的黑盒子一樣,使某個特定的硬件可以相應一個定義良好的內部編程接口并且完成隱藏設備的作用。 除了使用調試器外還可以直接在程序中使用 printf()或 printk 打 印函數(shù),這種方法功能比較弱,效率低下,但在內核模塊調試時這是唯一的方法。 Li nux 下的調試工具非常的少, gdb 是 Linux 下最著名的調試工具,它是 GNUC 自帶的調試工具,它可以使開發(fā)人員了解程序運行的詳細細節(jié),從而消除程序的錯誤,達到調試的目的, gdb 還具有遠程調試功能,可以滿足嵌入式系統(tǒng)調試的要求,在調試過程中 PC 機也稱為宿主機和嵌入式系統(tǒng)通過串口協(xié)議或者 TCP/IP 協(xié)議連接起來,遠程主機上運行被 gdb 規(guī)范斷點改造過的內核,當條件成立時,斷點被激活,然后等待本地宿主機的連接命令,一旦連接成功,宿主機就可以向遠程嵌入式系統(tǒng)發(fā)送調試命令了。與 YAFFS 相 比,它增加了一些功能,因此功能更強。它是日志結構的文件系統(tǒng),提供了損耗平衡和掉電 保護,可以有效地避免意外掉電對文件系統(tǒng)一致性和完整性的影響。利用 NAND閃存提供的每個頁面 16B 的備用空間來存放 ECC(ErrorCorrectionCode)和文件系統(tǒng)的組織信息、不僅能夠實現(xiàn)錯誤檢測和壞塊處理,也能夠提高文件系統(tǒng)的加東北大學本科畢業(yè)設計(論文) 第 3章 嵌入式 ARM系統(tǒng)軟件結構 15 載速度。本系統(tǒng)采用的是 JFFS2 文件系統(tǒng) 。文件系統(tǒng)不能直接控制物理設備,它是通過 FLASH 驅動實現(xiàn)控制的 [11]。在文件系統(tǒng)內部,根據(jù)存儲設備的特點,使用不同的文件組織模式來實現(xiàn)文件的邏輯結構。對于用戶程序來說,文件是有結構的文件,用戶程序通過對文件 IO 函數(shù)操作文件。 FLASH 具有獨特的物理特性,所以必須使用專門的嵌入式文件系統(tǒng)。 內核文件通過并口下載線燒寫入開發(fā)板中 ,便可以通過 BootLoader 加載運行。接著需要 makeclean 刪除前面步驟留下的文件,以避免出現(xiàn)一些錯誤 。編譯內核需要創(chuàng)建內核依賴關系、創(chuàng)建內核鏡像文件和創(chuàng)建內核模塊。在實驗過程中,只需要在這個內核的基礎上進行添加和刪減所需要和不需要的功能,編譯后就可以使用了。東北大學本科畢業(yè)設計(論文) 第 3章 嵌入式 ARM系統(tǒng)軟件結構 14 Linux 的開發(fā)工具也都可以很方便的免費獲得。 Linux 內核移植 選用嵌入式 Linux 作為目標機操作系統(tǒng),一方面由于 Linux 是一款免費的操作系統(tǒng),能很好的降低成本,同時 Linux 的開發(fā)應用現(xiàn)在已經成為熱門,有大量的資源可用于學習與重復應用,并且 Linux 系統(tǒng)具有良好的可移植性和可裁剪性,能自動支持多任務管理。 Blob 最初是由 JanDerk Bakker 和 Erik Mouw 兩人為一塊名為 LART( Linux Advanced Radio Terminal)的開發(fā)板寫的,該板使用的處理器是 StrongARM SA1100,現(xiàn)在 Blob 已經被成功移植到許多基于 ARM的 CPU上了。 (5)調用內核文件運行。 (3)將內核映像和根文件系統(tǒng)從 FLASH 讀到 RAM 中 。這個階段主要任務有 : ( l)初始化本階段要使用的硬件設備 。 (4) 設置好堆 棧并跳轉到第二階段的 C 程序入口點。 (2) 為第二階段準備 空間 。 第一階段依賴于 CPU 體系結構的代碼,比如設備初始化代碼等,通常都放在第一階段中,而且通常都用匯編語言來實現(xiàn),運行效率比較高。工作于這種模式 下的BootLoader 通常都會向它的終端用戶提供一個簡單的命令行接口。從主機下載的文件通常首先被 BootL0ader 保存到目標機的RAM 中,然后再被 BootLoader 寫到目標機上的 FLASH 類固態(tài)存儲設備中。這種模式是 BootLoader 的正常工作模式,因此在嵌入式產品發(fā)布的時候, BootLoader 顯然必須工作在這種模式下。從最終用戶的角度看, BootLoader 的作用就是用來加載操作系統(tǒng),而并不存在所謂的啟動加載模式與下載模式的區(qū)別。有的 BootLoader 會先從串口或者網(wǎng)絡等其他途徑得到內核的映像文件,然后把這些文件寫入目標系統(tǒng)的 FLASH或者其它存
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1