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

正文內(nèi)容

基于嵌入式linux的圖像監(jiān)控系統(tǒng)(已改無錯字)

2022-07-25 20:13:00 本頁面
  

【正文】 建立YAFFS2目錄,復制解壓后的代碼到目錄下。(3)修改fs/Kconfig,添加:source “fs/yaffs2/kconfig”。(4)修改fs/Makefile,添加:obj$(CONFIG_YAFFS2_FS) +=yaffs2/。(5)配置內(nèi)核時選中MTD支持和YAFFS2支持。(6)編譯內(nèi)核并將下載到開發(fā)板的flash。 本章小結(jié)在本章中,簡單敘述了系統(tǒng)基于嵌入式linux系統(tǒng)平臺的搭建,包括交叉編譯環(huán)境的建立和Bootloader的移植,最后介紹了根文件系統(tǒng)的制作流程。這樣,就構(gòu)建好了系統(tǒng)所需的linux系統(tǒng)平臺。4 系統(tǒng)設備的驅(qū)動程序的編寫和移植在嵌入式系統(tǒng)中,設備驅(qū)動充當了硬件和應用軟件之間的紐帶。對于功能較簡單,控制不復雜的系統(tǒng),并不需要多任務、文件系統(tǒng)和內(nèi)存管理等復雜功能,用單任務構(gòu)架可以很好地支持。對于本系統(tǒng)相對復雜的軟件系統(tǒng),需要具有操作系統(tǒng)的設備驅(qū)動來完成多任務并發(fā)。 系統(tǒng)軟件設備架構(gòu)錯誤!鏈接無效。圖41 系統(tǒng)軟件設備架構(gòu)本系統(tǒng)軟件設備架構(gòu)如圖41所示,詳細模塊功能如下:(1)前臺功能:在網(wǎng)絡上的客戶端進行對服務器的視頻數(shù)據(jù)請求,通過通用的瀏覽器進行圖片監(jiān)控,視頻監(jiān)控。(2)應用層功能:在應用層上,主要負責處理網(wǎng)站發(fā)布接收訪問等基于HTTP協(xié)議的活動。基于HTTPD服務器發(fā)布的數(shù)據(jù)放在數(shù)據(jù)業(yè)務中的文件夾中,進行數(shù)據(jù)轉(zhuǎn)換,成為客戶端真正能瀏覽到的圖片和視頻。(3)數(shù)據(jù)業(yè)務層功能:該層主要使用開源軟件mjpgstreamer模塊,該軟件利用共享庫來處理輸入輸出,可輸入圖片和視頻文件,為高層圖像提供較友好的數(shù)據(jù)接口。mjpgstreamer軟件依賴libjpeg和libjpegdevel庫的支持。,利用YUV格式,適當減少圖片幀數(shù)讓視頻流暢,該模塊會讓數(shù)據(jù)進入數(shù)據(jù)緩沖器進行數(shù)據(jù)中轉(zhuǎn)。文件夾存放網(wǎng)頁開發(fā)包,為了與應用層交換,內(nèi)嵌有本系統(tǒng)瀏覽數(shù)據(jù)的頁面。(4)驅(qū)動層功能:在此主要是驅(qū)動USB攝像頭和網(wǎng)絡芯片DM9000。為上述功能提供可能。 網(wǎng)絡驅(qū)動程序 網(wǎng)絡設備驅(qū)動程序的體系結(jié)構(gòu)Linux網(wǎng)絡設備驅(qū)動程序的體系結(jié)構(gòu)從上到下分為4層[3],一次為網(wǎng)絡協(xié)議接口層、網(wǎng)絡設備接口層、設備驅(qū)動功能層和網(wǎng)絡設備與媒介層,其流程圖如圖42所示。(1)網(wǎng)絡協(xié)議接口層:向網(wǎng)絡層協(xié)議提供統(tǒng)一的數(shù)據(jù)包收發(fā)接口,通過dev_queue_xmit()函數(shù)發(fā)送數(shù)據(jù),并通過netif_rx()函數(shù)接收數(shù)據(jù)。(2)網(wǎng)絡設備接口層:向協(xié)議接口層提供net_device,用來描述具體網(wǎng)絡設備屬性和操作的結(jié)構(gòu)體。(3)設備驅(qū)動功能層:各函數(shù)是網(wǎng)絡設備接口層net_device數(shù)據(jù)結(jié)構(gòu)的具體成員,驅(qū)使網(wǎng)絡設備硬件完成相應的動作,通過hard_start_xmit()函數(shù)啟動發(fā)送操作,通過網(wǎng)絡設備上的中斷觸發(fā)接收操作。(4)網(wǎng)絡設備與媒介層:完成數(shù)據(jù)包發(fā)送和接收的物理實體。包括網(wǎng)絡適配器和具體的傳輸媒介等。錯誤!鏈接無效。圖42 網(wǎng)絡設備驅(qū)動程序的體系結(jié)構(gòu) DM9000發(fā)送和接收數(shù)據(jù)包過程(1)DM9000發(fā)送數(shù)據(jù)包過程,如圖43所示:①向控制寄存器TXCMD寄存器寫入發(fā)送命令。②將發(fā)送數(shù)據(jù)長度寫入TXLENG寄存器。③讀取PacketPage空間內(nèi)的BUSST寄存器,配置其狀態(tài)為準備發(fā)送狀態(tài)。④在PORT0寄存器循環(huán)寫入要發(fā)送的數(shù)據(jù)。錯誤!鏈接無效。圖43 DM9000發(fā)送數(shù)據(jù)包過程圖 圖44 DM9000接收數(shù)據(jù)包過程圖(2)DM9000接收數(shù)據(jù)包過程,如圖44所示:①接收到網(wǎng)絡適配器產(chǎn)生的中斷,查詢中斷狀態(tài)隊列端口,判斷中斷類型是否為接收中斷。②讀PORT0寄存器依次換得接收狀態(tài)rxStatus,接收數(shù)據(jù)長度rxLength。③循環(huán)繼續(xù)對PORT0寄存器讀取rxLength次,直到獲得整個數(shù)據(jù)包 USB攝像頭的驅(qū)動在linux系統(tǒng)中,提供了主機側(cè)和設備測的USB驅(qū)動框架[3]。從主機側(cè)的角度而言,需要編寫的USB驅(qū)動程序包括主機控制器驅(qū)動和設備驅(qū)動兩類,USB主機控制器驅(qū)動程序控制插入其中的USB設備,而USB設備驅(qū)動程序控制設備如何作為從設備與主機通信。本系統(tǒng)研究的是主機側(cè)USB驅(qū)動。,就基本實現(xiàn)了通用的主流USB攝像頭的支持。為了識別不同的V4L1和V4L2芯片的攝像頭,安裝GSPCAV1來支持V4L1,用UVCVIDEO來支持V4L2。 主機側(cè)USB驅(qū)動總體結(jié)構(gòu)錯誤!鏈接無效。圖45 主機側(cè)USB驅(qū)動總體結(jié)構(gòu)圖USB采用樹形拓撲結(jié)構(gòu),總體結(jié)構(gòu)圖如圖45所示。要實現(xiàn)的USB驅(qū)動包括兩類:USB主機控制器驅(qū)動和USB設備驅(qū)動,前者控制插入其中的USB設備,后者控制USB設備如何與主機通信。USB核心負責USB驅(qū)動管理和協(xié)議處理的主要工作,包括:通過定義一些數(shù)據(jù)接口、宏和功能函數(shù),向上為設備驅(qū)動提供編程接口,向下為USB主機控制器驅(qū)動提供編程接口;通過全局變量維護整個系統(tǒng)的USB設備信息;完成設備熱插拔控制、總線數(shù)據(jù)傳輸控制等。 urb處理流程在USB設備的邏輯組織中,包含設備、配置、接口和端點4個層次[3]。設備通常有一個或多個配置;配置通常有一個或多個接口;接口通常有一個或多個設置;接口有零或多個端點。而USB設備中的每個端點都處理一個urb隊列,在隊列被清空之前,一個urb的生命周期如下,如圖46所示:(1)被一個USB設備驅(qū)動創(chuàng)建,由usb_alloc_urb()函數(shù)創(chuàng)建。(2)初始化,被安排給一個特定USB設備的特定端點。(3)被USB設備驅(qū)動提交給USB核心。在完成第(1)、(2)步的創(chuàng)建和初始化后,usr便可以提交給USB核心,通過usb_submit_urb()函數(shù)來完成。(4)提交由USB核心指定的USB主機控制器驅(qū)動。(5)被USB主機控制器處理,進行一次到USB設備的傳送。(6)當urb完成,USB主機控制器驅(qū)動通知USB設備驅(qū)動。錯誤!鏈接無效。圖46 urb處理流程圖 本章小結(jié)本章首先從整體上描述了本系統(tǒng)軟件設備架構(gòu),然后介紹了架構(gòu)中各模塊層的功能。接著再詳細介紹了本系統(tǒng)中關于網(wǎng)絡驅(qū)動程序的編寫流程和USB攝像頭驅(qū)動程序的移植。5 系統(tǒng)的圖像采集和傳輸 系統(tǒng)調(diào)用V4L1和V4L2的API函數(shù),通過USB攝像頭來采集視頻圖像數(shù)據(jù),完成視頻圖像數(shù)據(jù)的采集后,作為服務器端的嵌入式系統(tǒng)后臺等待客戶端通過瀏覽器進行連接,然后進行對攝像頭監(jiān)控,服務器就把采集到的圖像數(shù)據(jù)傳輸?shù)竭h程客戶端PC機上。因為系統(tǒng)采用的是MJPEG協(xié)議,也就是把視頻鏡頭拍成的視頻分解成一張張分離的jpg數(shù)據(jù)發(fā)送到客戶端。當客戶端不斷顯示圖片,即可形成相應的圖像。 圖像采集的實現(xiàn)video4linux(v4l)經(jīng)常使用在需要采集圖像的場合,如視頻監(jiān)控,webcam, 可視電話,經(jīng)常應用在 embedded linux 中,是 linux 嵌入式開發(fā)中經(jīng)常使用的系統(tǒng)接口[7]。v4l分為兩層,底層為音視頻設備在內(nèi)核中的驅(qū)動,上層為系統(tǒng)提供的API,而對于我們來說需要的就是使用這些系統(tǒng)的 API 。 圖像采集的過程v4l 視頻編程的流程和對文件操作并沒有什么本質(zhì)的不同,大概的流程有六步,如圖51所示:(1)打開視頻設備( 通常是 /dev/video0)(2)獲得設備信息。(3)根據(jù)需要更改設備的相關設置。(4)獲得采集到的圖像數(shù)據(jù)(v4l 提供了兩種方式,直接通過打開的設備讀取數(shù)據(jù),使用 mmap 內(nèi)存映射的方式獲取數(shù)據(jù))。(5)對采集到的數(shù)據(jù)進行操作(如顯示到屏幕,圖像處理等)。(6)關閉視頻設備。錯誤!鏈接無效。圖51 V4L圖像采集的流程圖 系統(tǒng)獲得采集的圖像數(shù)據(jù)的關鍵函數(shù)系統(tǒng)采用 mmap 內(nèi)存映射來獲取圖像。在這部分涉及到下面幾個函數(shù),它們配合來完成最終圖像采集的功能。 (1)extern int v4l_mmap_init(v4l_device *)。 該函數(shù)把攝像頭圖像數(shù)據(jù)映射到進程內(nèi)存中,也就是只要使用 vdmap 指針就可以使用采集到的圖像數(shù)據(jù)。(2)extern int v4l_grab_init(v4l_device *, int, int)。 該函數(shù)完成圖像采集前的初始化工作。 (3)extern int v4l_grab_frame(v4l_device *, int)。 該函數(shù)是真正完成圖像采集的一步,在本文使用了一個通常都會使用的一個小技巧,可以在處理一幀數(shù)據(jù)時同時采集下一幀的數(shù)據(jù),因為通常我們使用的攝像頭都可以至少存儲兩幀的數(shù)據(jù)。 (4)extern int v4l_grab_sync(v4l_device *)。 該函數(shù)用來完成截取圖像的同步工作,在截取一幀圖像后調(diào)用,返回表明一幀截取結(jié)束。 監(jiān)控系統(tǒng)的網(wǎng)絡傳輸?shù)膶崿F(xiàn) 系統(tǒng)采用基于TCP/IP協(xié)議來實現(xiàn)網(wǎng)絡傳輸本系統(tǒng)采用基于TCP/IP協(xié)議來實現(xiàn)網(wǎng)絡傳輸,后臺嵌入式設備負責采集圖像數(shù)據(jù)并建立好TCP服務器,客戶端通
點擊復制文檔內(nèi)容
職業(yè)教育相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1