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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于嵌入式linux的圖像監(jiān)控系統(tǒng)設(shè)計(jì)(編輯修改稿)

2024-07-11 03:10 本頁面
 

【文章內(nèi)容簡介】 。本系統(tǒng)的核心電路和 SMDK2440 基本一樣,而 內(nèi)核對 SMDK2440 的支持已經(jīng)十分豐富,所以只需根據(jù)我們的目標(biāo)平臺做細(xì)微的差別調(diào)整即可。以下是移植內(nèi)核的步驟 (1)獲取 linux 內(nèi)核源代碼,解壓內(nèi)核源代碼。 (2)指定交叉編譯變量:修改總目錄下的 Makefile 原來為: export KBUILD_BUILDHOST := $(SUBARCH) ARCH ?= $( SUBARCH) CROSS_COMPILE ?= 修改為: export KBUILD_BUILDHOST := $(SUBARCH) ARCH ?= arm CROSS_COMPILE ?= armlinux 其中, ARCH 是指目標(biāo)平臺為 arm, CROSS_COMPILE 是指交叉編譯器。然后執(zhí)行 : make s3c2410_defconfig make (3)克 隆建立自己的目標(biāo)平臺: ①修改機(jī)器碼:進(jìn)入 賀州學(xué)院本 科畢業(yè)論文 9 碼修改為 1999。 ② 修 改 時(shí) 鐘 源 頻 率 : 進(jìn) 入 文件中的原 SMDK2440 目標(biāo)版上的晶振從原來的 改為12MHz。 ③ 修改 Nand Flash 分區(qū): gedit arch/arm/plats3c24xx/ static struct mtd_partition smdk_default_nand_part[] = { [0] = { .name = supervivi, ;這里是 bootloder 所在分區(qū) .size = 0x00040000, .offset = 0, }, [1] = { .name = param, ;這里是 supervivi 參數(shù)區(qū) .size = 0x00040000, .offset = 0x00020210, }, [2] = { .name = Kernel, .offset = 0x00060000, ;內(nèi)核所在分區(qū),大小為 5M .size = 0x00500000, }, [3] = { .name = root, ;文件系統(tǒng)分區(qū),本系統(tǒng)用來存放 yaffs2 文件系統(tǒng)內(nèi)容 .offset = 0x00560000, .size = 1024*1024*1024, } [4] = { .name = nand, ;此區(qū)域代表整片 nand flash,做預(yù)留使用 .offset = 0x00000000, .size = 1024*1024*1024, 莫炳全 基于嵌入式 Linux 的圖像監(jiān)控系統(tǒng) 10 } }。 ④從 SMDK2440 到 MINI2440:使用批處理命令修改 中的字樣為mini2440。 ⑤編譯測試:在根目錄下執(zhí)行: make mini2440_defconfig make zImage 。編譯內(nèi)核,最后生成 zImage。 (4)配置內(nèi)核:針對配置內(nèi)核做主要的作為介紹。 執(zhí)行 make menuconfig General setup ;配置目標(biāo)版體系 S3C2440 Machines MINI2440 development board Device Drivers ;配置 DM9000 網(wǎng)卡驅(qū)動(dòng) Network device support Ether(10 or 100Mbit) DM9000 Device Drivers ;配置 USB 攝像頭 Multimedia devices Multimedia support Video capture adapters ( NEW) V4L USB devices (NEW) GSPCA based webcams 選擇所有的攝像頭類型 把所有結(jié)構(gòu)設(shè)備添加到目標(biāo)平臺設(shè)備集中: Static struct platform_device *mini2440_devices[]_initdata = { amp。s3c_device_usb, amp。s3c_device_rtc, amp。s3c_device_wdt, amp。s3c_device_i2c0, amp。s3c_device_iis, amp。mini2440_device_eth, 賀州學(xué)院本 科畢業(yè)論文 11 amp。s3c_device_nand, } (5)配置編譯新內(nèi)核:首先以 ROOT 身份進(jìn)入系統(tǒng),然后對它進(jìn)行編譯,得到內(nèi)核映像文件 zImage。 文件系統(tǒng)的制作 嵌入式 linux 系統(tǒng)可使用的文件系統(tǒng)有多種,比如 CRAMFS、 JFFS YAFFS2 等 [6]。YAFFS2 類似于 JFFS 和 JFFS2 的專為 flash 設(shè)計(jì)的嵌入式文件系統(tǒng)。雖然功能少,但速度快,占用內(nèi)存少,并自帶 nand flash 芯片驅(qū)動(dòng) 。其移植過程為: (1)解壓 YAFFS2。 (2)建立 YAFFS2 目錄,復(fù)制解壓后的代碼到目錄下。 (3)修改 fs/Kconfig,添加: source “ fs/yaffs2/kconfig” 。 (4)修改 fs/Makefile,添加: obj$(CONFIG_YAFFS2_FS) +=yaffs2/。 (5)配置內(nèi)核時(shí)選中 MTD支持和 YAFFS2 支持。 (6)編譯內(nèi)核并將下載到開發(fā)板的 flash。 本章小結(jié) 在本章中,簡單敘述了系統(tǒng)基于 嵌入式 linux 系統(tǒng)平臺的搭建 ,包括 交叉編譯環(huán)境的建立和 Bootloader 的移植 ,還有 以 Linux 內(nèi)核 作為視頻服務(wù)器核心 的配置和移植,最后介紹了 根 文件系統(tǒng)的制作 流程。這樣,就構(gòu)建好了系統(tǒng)所需的 linux 系統(tǒng)平臺。 4 系統(tǒng)設(shè)備的驅(qū)動(dòng)程序的編寫和移植 在嵌入式系統(tǒng)中,設(shè)備驅(qū)動(dòng)充當(dāng)了硬件和應(yīng)用軟件之間的紐帶。對于功能較簡單,控制不復(fù)雜的系統(tǒng),并不需要多任務(wù)、文件系統(tǒng)和內(nèi)存管理等復(fù)雜功能,用單任務(wù)構(gòu)架可以很好地支持。對于本系統(tǒng)相對復(fù)雜的軟件 系統(tǒng),需要具有操作系統(tǒng)的設(shè)備驅(qū)動(dòng)來完成多任務(wù)并發(fā)。 系統(tǒng)軟件設(shè)備 架構(gòu) 錯(cuò)誤!鏈接無效。 圖 41 系統(tǒng)軟件設(shè)備架構(gòu) 本系統(tǒng)軟件設(shè)備架構(gòu)如圖 41 所示,詳細(xì)模塊功能如下: (1)前臺功能 :在網(wǎng)絡(luò)上的客戶端進(jìn)行對服務(wù)器的視頻數(shù)據(jù)請求,通過通用的瀏覽莫炳全 基于嵌入式 Linux 的圖像監(jiān)控系統(tǒng) 12 器進(jìn)行圖 片監(jiān)控,視頻監(jiān)控。 (2)應(yīng)用層功能:在應(yīng)用層上,主要負(fù)責(zé)處理網(wǎng)站發(fā)布接收訪問等基于 HTTP 協(xié)議的活動(dòng)?;?HTTPD 服務(wù)器發(fā)布的數(shù)據(jù)放在數(shù)據(jù)業(yè)務(wù)中的 文件夾中,進(jìn)行數(shù)據(jù)轉(zhuǎn)換,成為客戶端真正能瀏覽到的圖片和視頻。 (3)數(shù)據(jù)業(yè)務(wù)層功能:該層主要使用開源軟件 mjpgstreamer 模塊,該軟件利用共享庫來處理輸入輸出, 處理文件輸入,可輸入圖片和視頻文件, 和 等是以 HTTP 視頻數(shù)據(jù)服務(wù)流形式輸出,為高層圖像提供較友好的數(shù)據(jù)接口 。 mjpgstreamer 軟件依賴 libjpeg 和 libjpegdevel 庫的支持。利用 文件接收攝像頭,利用 YUV格式,適當(dāng)減少圖片幀數(shù)讓視頻流暢,該模塊會讓數(shù)據(jù)進(jìn)入數(shù)據(jù)緩沖器進(jìn)行數(shù)據(jù)中轉(zhuǎn),由輸出模塊 模塊進(jìn)行 HTTP 數(shù)據(jù)流的處理。 文件夾存放網(wǎng)頁開發(fā)包,為了與應(yīng)用層交換,內(nèi)嵌有本系統(tǒng)瀏覽數(shù)據(jù)的頁面。 (4)驅(qū)動(dòng)層功能:在此主要是驅(qū)動(dòng) USB 攝像頭和網(wǎng)絡(luò)芯片 DM9000。為上述功能提供可能。 網(wǎng)絡(luò)驅(qū)動(dòng)程序 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序的體系結(jié)構(gòu) Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序的體系結(jié)構(gòu)從上到下分為 4層 [3],一次為網(wǎng)絡(luò)協(xié)議接口層、網(wǎng)絡(luò)設(shè)備接口層、設(shè)備驅(qū)動(dòng)功能層和網(wǎng)絡(luò)設(shè)備與媒介層 ,其流程圖如圖 42 所示。 (1)網(wǎng)絡(luò)協(xié)議接口層 :向網(wǎng)絡(luò)層協(xié)議提供統(tǒng)一的數(shù)據(jù)包收發(fā)接口,通過dev_queue_xmit()函數(shù)發(fā)送數(shù)據(jù),并通過 if_rx()函數(shù)接收數(shù)據(jù)。 (2)網(wǎng)絡(luò)設(shè)備接口層 :向協(xié)議接口層提供 _device,用來描述具體網(wǎng)絡(luò)設(shè)備屬性和操作的結(jié)構(gòu)體。 (3)設(shè)備驅(qū)動(dòng)功能層:各函數(shù)是網(wǎng)絡(luò)設(shè)備接口層 _device 數(shù)據(jù)結(jié)構(gòu)的具體成員,驅(qū)使網(wǎng)絡(luò)設(shè)備硬 件完成相應(yīng)的動(dòng)作,通過 hard_start_xmit()函數(shù)啟動(dòng)發(fā)送操作,通過網(wǎng)絡(luò)設(shè)備上的中斷觸發(fā)接收操作。 (4)網(wǎng)絡(luò)設(shè)備與媒介層 :完成數(shù)據(jù)包發(fā)送和接收的物理實(shí)體。包括網(wǎng)絡(luò)適配器和具體的傳輸媒介等。 錯(cuò)誤!鏈接無效。 圖 42 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序的體系結(jié)構(gòu) 賀州學(xué)院本 科畢業(yè)論文 13 DM9000 發(fā)送和接收數(shù)據(jù)包過程 (1)DM9000 發(fā)送數(shù)據(jù)包過程 ,如圖 43 所示: ①向控制寄存器 TXCMD 寄存器寫入發(fā)送命令。 ②將發(fā)送數(shù)據(jù)長度寫入 TXLENG 寄存器。 ③讀取 PacketPage 空間內(nèi)的 BUSST 寄存器,配置其狀態(tài)為準(zhǔn)備發(fā)送狀態(tài)。 ④在 PORT0 寄存器循環(huán)寫入要發(fā)送的數(shù)據(jù)。 錯(cuò)誤!鏈接無效。 圖 43 DM9000發(fā)送數(shù)據(jù)包過程圖 圖 44 DM9000接收數(shù)據(jù)包過程圖 (2)DM9000 接收 數(shù)據(jù)包過程 ,如圖 44 所示: ①接收到網(wǎng)絡(luò)適配器產(chǎn)生的中斷,查詢中斷狀態(tài)隊(duì)列端口,判斷中斷類型是否為接收中斷。 ②讀 PORT0 寄存器依次換得接收狀態(tài) rxStatus,接收數(shù)據(jù)長度 rxLength。 ③循環(huán)繼續(xù)對 PORT0 寄存器讀取 rxLength 次,直到獲得整個(gè)數(shù)據(jù)包 USB 攝像頭的驅(qū)動(dòng) 在 linux 系統(tǒng)中,提供了主機(jī)側(cè)和設(shè)備測的 USB驅(qū)動(dòng)框架 [3]。從主 機(jī)側(cè)的角度而言,需要編寫的 USB 驅(qū)動(dòng)程序包括主機(jī)控制器驅(qū)動(dòng)和設(shè)備驅(qū)動(dòng)兩類, USB 主機(jī)控制器驅(qū)動(dòng)程序控制插入其中的 USB 設(shè)備,而 USB 設(shè)備驅(qū)動(dòng)程序控制設(shè)備如何作為從設(shè)備與主機(jī)通信。本系統(tǒng)研究的是主機(jī)側(cè) USB 驅(qū)動(dòng)。在 內(nèi)核中配置和修改開源驅(qū)動(dòng)spca5xx/gspca,就基本實(shí)現(xiàn)了通用的主流 USB 攝像頭的支持。為了識別不同的 V4L1和 V4L2 芯片的攝像頭,安裝 GSPCAV1 來支持 V4L1,用 UVCVIDEO 來支持 V4L2。 主機(jī)側(cè) USB 驅(qū)動(dòng)總體結(jié)構(gòu) 錯(cuò)誤!鏈接無效。 圖 45 主機(jī)側(cè) USB驅(qū)動(dòng)總體結(jié)構(gòu)圖 USB采用樹形拓?fù)浣Y(jié)構(gòu),總體結(jié)構(gòu)圖如圖 45所示。要實(shí)現(xiàn)的 USB 驅(qū)動(dòng)包括兩類:USB 主機(jī)控制器驅(qū)動(dòng)和 USB 設(shè)備驅(qū)動(dòng),前者控制插入其中的 USB 設(shè)備,后者控制 USB設(shè)備如何與主機(jī)通信。 USB 核心負(fù)責(zé) USB 驅(qū)動(dòng)管理和協(xié)議處理的主要工作,包括:通 過定義一些數(shù)據(jù)接口、宏和功能函數(shù),向上為設(shè)備驅(qū)動(dòng)提供編程接口,向下為 USB 主機(jī)控制器驅(qū)動(dòng)提供編程接口;通過全局變量維護(hù)整個(gè)系統(tǒng)的 USB 設(shè)備信息;完成設(shè)備熱插拔控制、總線數(shù)據(jù)傳輸控制等。 urb 處理流程 在 USB 設(shè)備的邏輯組織中,包含設(shè)備、配置、接口和端點(diǎn) 4個(gè)層次 [3]。設(shè)備通常有莫炳全 基于嵌入式 Linux 的圖像監(jiān)控系統(tǒng) 14 一個(gè)或多個(gè)配置;配置通常有一個(gè)或多個(gè)接口;接口通常有一個(gè)或多個(gè)設(shè)置;接口有零或多個(gè)端點(diǎn)。 而 USB 設(shè)備中的每個(gè)端點(diǎn)都處理一個(gè) urb 隊(duì)列,在隊(duì)列被清空之前,一個(gè) urb 的生命周期如下,如圖 46 所示: (1)被一個(gè) USB設(shè)備 驅(qū)動(dòng)創(chuàng)建,由 usb_alloc_urb()函數(shù)創(chuàng)建。 (2)初始化,被安排給一個(gè)特定 USB 設(shè)備的特定端點(diǎn)。 (3)被 USB設(shè)備驅(qū)動(dòng)提交給 USB 核心。在完成第 (1)、 (2)步的創(chuàng)建和初始化后, usr便可以提交給 USB 核心,通過 usb_submit_urb()函數(shù)來完成。 (4)提交由 USB核心指定的 USB 主機(jī)控制器驅(qū)動(dòng)。 (5)被 USB主機(jī)控制器處理,進(jìn)行一次到 USB 設(shè)備的傳送。 (6)當(dāng) urb完成, USB 主機(jī)控制器驅(qū)動(dòng)通知 USB 設(shè)備驅(qū)動(dòng)。 錯(cuò)誤!鏈接無效。 圖 46 urb處理流程圖 本章小結(jié) 本章首先從整體上描述了 本系統(tǒng)軟件設(shè)備架構(gòu),然后介紹了架構(gòu)中各模塊層的功能。接著再詳細(xì)介紹了本系統(tǒng)中關(guān)于網(wǎng)絡(luò)驅(qū)動(dòng)程序的編寫流程和 USB 攝像頭驅(qū)動(dòng)程序的移植。
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1