




已閱讀5頁,還剩33頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
南 陽 理 工 學 院 本科生畢業設計(論文)學 院:電子與電氣工程學院專 業: 自動化 學 生: 張 真 指導教師: 曹 婷 完成日期 2014 年 5 月南陽理工學院本科生畢業設計(論文)物聯網智能家居終端的設計與實現Design and Implementation of the Smart Home Terminal Based on the Internet of Things總 計: 31 頁表 格: 1 個插 圖: 24 幅南 陽 理 工 學 院 本 科 畢 業 設 計(論文)物聯網智能家居終端的設計與實現Design and Implementation of the Smart Home Terminal Based on the Internet of Things學 院: 電子與電氣工程學院 專 業: 自動化 學 生 姓 名: 張 真 學 號: 105090640038 指 導 教 師(職稱): 曹 婷(講師) 評 閱 教 師: 完 成 日 期: 南陽理工學院Nanyang Institute of Technology物聯網智能家居終端的設計與實現I物聯網智能家居終端的設計與實現自動化專業 張真摘要 智能家居又稱為數字家庭, 一般是指以計算機接口技術和網絡技術為基礎,將各種家用數字化設備有機結合為一體的智能化的網絡系統。本課題以Web 技術為核心, 在基于S3C2440 微處理器和嵌入式Linux 操作系統的軟硬件平臺上構建了Web服務器和視頻服務器,Web 服務器采用Boa,視頻服務器采用Mjpeg-Streamer,結合CGI技術處理HTML表單完成用戶認證,視頻監控,設備開關控制等家具監控功能。關鍵詞 智能家居;Linux;網絡服務器;S3C2440;通用網關接口Design and Implementation of the Smart Home Terminal Based on the Internet of ThingsAutomation Specialty ZHANG ZhenAbstract: Also known as digital home, smart home generally refers to computer interface technology and network technology as the foundation,the combination of various kinds of household digital equipment for the integration of intelligent network system .These household devices includes digital telephone, computer, digital audio and video equipment, digital home appliances and security monitoring equipment,intelligent household terminal for home users to provide simple, safe, reliable,intelligent integrated services.This topic with Web technology as the core, based on S3C2440 microprocessor and embedded Linux operating system software and hardware platform to build a Web server and the video server, Web server USES the Boa, adopts Mjpeg video server - the streamer, HTML form with CGI technology processing,complete the user authentication, video monitoring, switch control equipment, household monitoring function.Key words: Smart Home; Linux;Web Server;S3C2440;CGI物聯網智能家居終端的設計與實現目 錄1 引言11.1 智能家居發展現狀11.2 智能家居系統概述11.3 研究目的及意義22 系統主要設計任務32.1 Linux系統移植42.1.1 Bootloader編譯與移植42.1.2 修改U-Boot文件62.2 Mjpeg-streamer視頻服務器移植72.3 Boa服務器移植72.2 CGI程序設計與實現73 硬件開發平臺83.1 基于ARM920t的S3C2440處理器83.2 TQ2440開發板硬件資源94 智能家居終端軟件設計104.1 Linux系統移植配置與調試104.2 硬件驅動程序的設計與加載134.2.1 LED驅動的設計144.2.2 LCD驅動程序設計144.2.3 USB攝像頭驅動程序的設計164.3 Boa服務器移植方法與配置184.4 Mjpeg-streamer的編譯與配置194.5 QT應用程序的設計205 整機系統調試及結果分析225.1 系統控制程序流程圖225.2 視頻監控程序與調試23結束語25參考文獻26附錄27致謝31II1 引言1.1 智能家居發展現狀智能家居又稱智能住宅,是以住宅為平臺,利用先進的計算機、嵌入式系統和網絡通訊技術,將家中的各種設備,包括照明系統、環境控制系統、網絡家電等通過家庭網絡連接到一起,構建高效的住宅設施與家庭日程事務的管理系統。與普通的家居相比,智能家居既具有傳統的居住功能,又提升了家居安全性、便利性、舒適性、藝術性,因此成為當前人們家裝所關注的熱點。早在1995年比爾蓋茨在未來之路中提到了物聯網的概念,然而到了1998年的時候美國的麻省理工學院(MIT)的Kevin Ashton,把非接觸式無線識別技術(RFID)與傳感器技術應用于日常物品中才形成一個真正所謂的“物聯網”。當時的物聯網的概念就是利用產品電子代碼EPC,還有我們的射頻識別技術,通過網絡,當時的網絡還僅限于互聯網來實現物品的互聯互通。在任何時候任何地點對任何物品識別和管理,這就是原來的物聯網。在1999年的時候EPC Global的Auto-ID中心提出:物聯網就是成千上萬的物品采用無線方式接入了Internet的網絡。這是物聯網概念真正的提出。在2008年IBM提出:互聯網+物聯網=智慧地球,就是把傳感器設備安裝到電網、鐵路、橋梁、隧道、供水系統、大壩、油氣管道等各種物體中,并且普遍鏈接成網路,及“物聯網”。至此最新的物聯網概念形成了。網絡技術、傳感技術、數據庫技術、云計算、移動計算等新技術使得物聯網發生了很大的變換,內含增多增大。所謂的物不僅僅是物理實體,網絡不僅僅是各類信息的網絡,還包括互聯網、傳感網、移動網,技術也把條碼、射頻、傳感器包含了進來。廣義的物聯網概念就是利用自動識別技術,這里包括條碼、射頻、全球定位等按照標準的協議實現人與物、物與物在任何時候任何地點的鏈接,顯著的特點就是智能化、進行信息交換和通信、以實現智能識別、定位、跟蹤、監控、管理,構建成為一個龐大的網絡體系。1.2 智能家居系統概述智能住宅強調的是人的主觀能動性,要求重視人與居住環境的協調,能夠隨心所欲地控制室內居住環境。智能住宅的住戶可以在任何地方通過手機遙控家電,監控住宅情況,如指示洗衣機工作;查看冰箱中食品儲存情況;監視家中是否有人闖入等。因此,智能家居在生產設計方面,務必以實用為核心,力求實用、易用、人性化。隨著社會信息化的加快,人們的工作、生活和通訊、信息的關系日益緊密。信息化社會在改變人們生活方式與工作習慣的同時,也對傳統的住宅提出了挑戰,社會、技術以及經濟的進步更使人們的觀念隨之巨變。人們對家居的要求早已不只是物理空間,更為關注的是一個安全、方便、舒適的居家環境。家居智能化技術起源于美國,它是以家為平臺進行設計的。智能家居控制系統是以HFC、以太網、現場總線、公共電話網、無線網的傳輸網絡為物理平臺,計算機網絡技術為技術平臺,現場總線為應用操作平臺,構成一個完整的集家庭通信、家庭設備自動控制、家庭安全防范等功能的控制系統。智能家居控制系統的總體目標是通過采用計算機技術、網絡技術、控制技術和集成技術建立一個由家庭到小區乃至整個城市的綜合信息服務和管理系統,以此來提高住宅高新技術的含量和居民居住環境水平。大型的智能家居控制系統通常由系統服務器、家庭控制器(各種模塊)、各種路由器、電纜調制解調器頭端設備CMTS、交換機、通訊器、控制器、無線收發器、各種探測器、各種傳感器、各種執行機構、打印機等主要部分組成。1.3 研究的目的及意義智能家居控制系統可以定義為一個過程或者一個系統。利用先進的計算機技術、網絡通訊技術、綜合布線技術、將與家居生活有關的各種子系統,有機地結合在一起,通過統籌管理,讓家居生活更加舒適、安全、有效。與普通家居相比,智能家居不僅具有傳統的居住功能,提供舒適安全、高品位且宜人的家庭生活空間。還將原來的被動靜止結構轉變為具有能動智慧的工具,提供全方位的信息交換功能,幫助家庭與外部保持信息交換暢通,優化人們的生活方式,幫助人們有效安排時間,增強家居生活的安全性,甚至為各種能源費用節約資金。系統的網絡化功能可以提供遙控:家電(電視,空調,熱水器等)控制、照明控制、室內外遙控、窗簾自控、防盜報警、電話遠程控制、可編程定時控制及計算機控制等多種功能和手段。使生活更加舒適、便利和安全。因智能家居控制系統簡單、功能靈活,擴展容易而被人們廣泛接受和應用。家居生活的智能化是當今計算機網絡與通訊技術最人性化的應用,給人們的家居生活帶來了全新的感受。今天,借助電話控制或互聯網,您幾乎可以在任何地方、任何時候監控您的家居狀況,為您的家居生活帶來前所未有的方便。隨著社會全面的信息化、智能化和自動化,家庭智能化必將成為未來家居裝飾潮流發展的最新方向!2 系統主要設計任務系統主要設計包含以下幾個部分,基于S3C2440的Linux系統移植,Boa服務器移植,Mjpeg視頻服務器移植,系統硬件設備驅動程序編寫,模塊設計如圖1所示。圖1 智能家居系統控制框圖2.1 Linux內核移植所謂嵌入式Linux,是指Linux在嵌入式系統中的應用。在所有的操作系統中,Linux操作系統是一個發展最快,應用最廣泛的操作系統,由于Linux系統的優良特性,使得其成為嵌入式開發中的首選。隨著嵌入式Linux的不斷成熟,以及其對更小尺寸和更多類型的處理器支持,使得嵌入式Linux操作系統邁入了嵌入式系統的主流,因此本系統采用Linux作為操作系統。關于Linux的移植分為四部分,Bootloade移植,Linux內核的移植,內核驅動程序的移植以及根文件系統的掛載。內核方面我們一般以2.6.xx及其以上的版本移植,因為其通用性良好。根文件系統一般選用yaffs文件系統,而內核驅動方面,Linux內核一般有足夠的硬件驅動供我們加載,所以其實我們主要工作就放到了移植方面。下面Bootloader的移植進行演示。我們一般選用較好的U-Boot作為嵌入式系統中通用的Boot Loader,下面是幾種不同的Bootloader介紹。Bootloader 是嵌入式系統的引導加載程序,它是系統上電后運行的第一段程序,其作用類似于 PC 機上的 BIOS。在完成對系統的初始化任務之后,它會將非易失性存儲器(通常是Flash或DOC等)中的Linux 內核拷貝到 RAM 中去,然后跳轉到內核的第一條指令處繼續執行,從而啟動 Linux 內核。2.1.1 Bootloade編譯與移植表1 開放源碼的Linux引導程序Boot LoaderMonitor描述X86ARMPowerLILO否Linux磁盤引導程序是否否GRUB否GNU的LILO替代程序是否否Loadin否從DOS引導Linux是否否ROLO否從ROM引導Linux而不需要BIOS是否否Etherboot否通過以太網卡啟動Linux的固件是否否LinuxBIOS否完全替代BUIS的Linux引導程序是否否BLOB否LART等硬件平臺的引導程序否是否U-boot是通用引導程序是是是RedBoot是基于eCos的引導程序是是是(1) 首先,把下載下來的u-boot-1.1.6.tar.bz2包,復制到我們的工作目錄,這里我們把它復制到/home/work/目錄下邊,然后解壓,如圖2所示。圖2 Bootloader編譯與移植進入U-Boot目錄,然后修改頂層目錄的Makefile,如圖3所示。圖3 Bootloader編譯與移植找到smdk2410_config項,仿照其模式為TQ2440建立編譯項,如圖4所示。圖4 Bootloader編譯與移植此時要注意,“”符號前邊一定要加“TAB”而并非空格,否則會在測試編譯時報錯。其中各項的意思如下:arm: CPU的架構(ARCH)。 arm920t: CPU的類型(CPU),其對應于cpu/arm920t子目錄。 tq2440: 開發板的型號(BOARD),對應于board/smdk2440/tq2440目錄。 TQ2440: 開發者/或經銷商(vender)。 s3c24x0: 片上系統(SOC)。然后找到ifndef CROSS_COMPILE,在這句話之前加入我們的交叉編譯器,這里分別安裝了cross-2.95.3和cross-3.4.1交叉編譯工具,在這里使用3.4.1版本有時候會報錯,所以推薦在這里使用cross-2.95.3,該工具的安裝目錄為/usr/local/arm/2.95.3,如圖5所示。圖5 Bootloader編譯與移植(2) 在/board子目錄中建立自己的開發板tq2440目錄,見圖6。圖6 Bootloader編譯與移植由于我在上一步板子的開發者/或經銷商(vender)中填了friendlyarm,所以開發板tq2440目錄一定要建在/board子目錄中的tq2440目錄下 ,否則編譯會出錯,同時還要記得修改自己的開發板tq2440目錄下的Makefile文件,同樣用vi編輯器打開Makefile,并把COBJS變量值修改如下OBJS := tq2440.o flash.o(3) 在include/configs/中建立配置頭文件,即復制s3c2440.h到tq2440中,如圖7所示。圖7 Bootloader編譯與移植(4) make測試編譯如圖8所示。圖8 Bootloader編譯與移植可以看到,系統并沒有報錯,說明編譯配置已經沒問題,接下來我們所要做的就是要根據開發板參數,修改相應的文件。2.1.2 修改UBoot文件(1) 修改/cpu/arm920t/start.S。start.S文件是整個Boot loader程序的入口點,在這里我們需要對寄存器地址定義、中斷禁止部分、時鐘設置(2440的主頻為405MHz)等部分,按照s3c2440手冊或者vivi的源代碼,將從Flash啟動改成從NAND Flash啟動。(2) 在board/friendlyarm/qq2440加入NAND Flash讀函數文件,拷貝vivi中的nand_read.c文件到此文件夾即可。(3) 修改board/friendlyarm/qq2440/Makefile文件。OBJS := qq2440.o nand_read.o flash.o(4) 修改include/configs/qq2440.h文件。添加NAND FLASH、JFFS2、USB啟動支持。(5) 修改board/friendlyarm/qq2440/lowlevel_init.S文件,依照開發板的內存區的配置情況, 修改board/tekkaman/tekkaman2440/lowlevel_init.S文件,我們利用友善之臂提供的vivi源碼里的信息做一些簡單的修改。(6) 修改/board/friendlyarm/qq2440/qq2440.c。修改其對GPIO和PLL的配置(需參閱開發板的硬件說明和芯片手冊):(7) 在個文件中添加“CONFIG_S3C2440”,使得原來s3c2410的代碼可以編譯進來。此外還需要對以下文件進行一些修改include/linux/mtd/nand_ids.hinclude/linux/mtd/nand.h /lib_arm/board.ccommon/env_nand.c/board/EmbedSky/qq2440/tq2440.c在U-Boot根目錄下執行如下命令# make clean;# make tq2400_config;# make編譯一段時間后,便會生成U-Boot映像的ELF格式。2.2 Mjpeg-streamer視頻服務器移植Mjpg-streamer是用于從攝像頭采集圖像的視頻服務器,它把圖像以流的形式通過基于IP的網絡傳輸到瀏覽器如IE。并可以利用某些攝像頭的硬件壓縮功能來降低服務器CPU的開銷。它為嵌入式設備和一些常規服務器提供了一個輕量且更少CPU消耗的方案,因為無需為視頻幀壓縮浪費大量的計算效率(這件事交給硬件了)。2.3 Boa服務器移植Boa是一個非常小巧的Web服務器,可執行代碼只有約60KB。它是一個單任務Web服務器,只能依次完成用戶的請求,但Boa支持CGI,能夠為CGI程序fork出一個進程來執行。Boa的設計目標是速度和安全,在其站點公布的性能測試中,Boa的性能 要好于Apache服務器。與其他傳統的Web 服務器不同的是當有連接請求到來時, 它并不為每個連接單獨創建進程, 也不通過復制自身進程來處理多鏈接, 而是通過建立HTTP 請求列表來處理多路HTTP 連接請求, 同時它只為CGI 程序創建新的進程, 這樣就在最大程度上節省了系統資源, 這對嵌入式系統來說至關重要. 同時它還具有自動生成目錄、自動解壓文件等功能, 因此, Boa 具有很高的HTTP 請求處理速度和效率, 在嵌入式系統中具有很高的應用價值。Boa服務器移植主要包括以下幾點:(1) 修改配置文件。(2) 生成Makefile文件。(3) 執行make命令編譯。2.4 CGI程序設計與實現CGI:通用網關接口(Common Gateway Interface)是一個Web服務器主機提供信息服務的標準接口。通過CGI接口,Web服務器就能夠獲取客戶端提交的信息,轉交給服務器端的CGI程序進行處理,最后返回結果給客戶端。組成CGI通信系統的是兩部分:一部分是html頁面,就是在用戶端瀏覽器上顯示的頁面。另一部分則是運行在服務器上的CGI程序。我們的CGI程序主要完成與網頁接口的連接,即主登陸窗口、LED顯示窗口、參數設置窗口、實時顯示參數窗口等網頁分別編寫文件,實現程序見附錄。圖9 CGI登錄流程圖3 硬件開發平臺簡介3.1 基于ARM920t的S3C2440處理器S3C2440A是韓國三星公司推出的16/32位RISC微控制器,其CPU采用的是ARM920T內核。(1) 特點: 具有PLL時鐘發生器,主頻最高可達533M。 內核1.2V供電最高400M,1.3V供電最高533M。 存儲器支持1.8V、2.5V、3.0V、3.3V。 I/O均支持3.3V供電。 S3C2440為單機器周期執行指令集。 具有電源管理功能,可以使系統以普通方式、空閑方式和掉電模式工作。(2) 內核結構:采用ARM920T內核,具有16KB指令Cache、16KB數據Cache和存儲器管理單元MMU,指令高速存儲緩沖器(I-Cache),數據高速存儲緩沖器(D-cache)提高指令執行效率及數據存儲效率,減少主存帶寬和響應性帶來的影響,加強的ARM體系結構MMU,用于支持winCE、linux等操作系統,內部高級微控制總線(AMBA)體系結構(AMB2.0,AHB/APB)。(3) 存儲器控制器特性: S3C2440采用總線結構管理片上外設及內存。 S3C2440的存儲器管理器提供訪問外部存儲器的所有控制信號。27位地址號32位數據信號、8個片選信號、以及讀/寫控制信號等。 總共有8個存儲器Bank(Bank0Bank7),其中,Bank0-Bank5為固定128MB,Bank6和Bank7的容量可編程改變,可以是2、4、8、16、32、64、128MB,最大共1GB。Bank0可以作為引導ROM,其數據線寬只能是16位和32位,其它存儲器的數據線寬可以是8位、16位和32位。 8個存儲器Bank: Bank0-Bank5:SRAM、ROM。 Bank6Bank7:SRAM、ROM SDRAM。 S3C2440支持兩種啟動方式: NOR FLASH啟動,即代碼直接寫入NOR FLASH,運行時直接在NOR FLASH上運行。 NAND FLASH啟動方式,即代碼燒到NAND FLASH中,借助片內4K的sram,將代由NAND FLASH烤到SDRAM中,在SDRAM中運行。3.2 TQ2440開發板硬件資源介紹(1) CPU處理器 Samsung S3C2440A,主頻400MHZ,最高533MHZ(2) SDRAM內存 在板64M SDRAM(3) 32bit數據總線(4) SDRAM時鐘頻率高達100MHZ(5) FLASH存儲 在板256M Nand Flash,掉電非易失 在板2M Nor Flash,掉電非易失,已經安裝BIOS(6) LCD顯示 板上集成4線電阻式觸摸屏接口,可以直接連接四線電阻觸摸屏 支持黑白、4級灰度、16級灰度、256色、4096色STN液晶屏, 板上引出一個12V電源接口,可以為大尺寸TFT液晶的12V CCFL背光模塊(7) 接口和資源 1個10M以太網RJ45接口(采用CS8900網絡芯片) 3個串行口 1個USB Host 1個USB Slave B型接口 1個SD卡存儲接口 1路立體聲音頻輸出接口,一路麥克風接口; 1個2.0mm間距20針標準JTAG接口 1個PWM控制蜂鳴器 1個可調電阻,用于AD模數轉換測試 1個I2C總線AT24C08芯片,用于I2C總線測試 1個20pin攝像頭接口 板載實時時鐘電池 電源接口(12V),帶電源開關和指示燈(8) 系統時鐘源 12M無源晶振(9) 實時時鐘 內部實時時鐘(帶后備鋰電池)(10) 擴展接口 1個34 pin 2.0mmGPIO接口 1個44 pin 2.0mm 系統總線接口(11) 指示燈 4個LED指示燈,可模擬做演示設備(12) 操作系統支持 Linux2.6.x WindowsCE.NET 4.24 智能家居終端軟件設計4.1 Linux系統移植配置與調試(1) Linux開發板硬件平臺配置,應該配置支持TQ2440。其中包括板載資源的配置,主要目的是芯片廠商的啟動文件加載,如圖10所示。圖10 Linux開發平臺配置(2) Linux yaffs文件系統配置,這是開發板的根文件系統,我們的應用程序都放在了NANDFlash中,要想對其讀取,必須加載根文件系統其中包括Linux的內核鏡像也被燒錄到NANDFlash中。具體配置如圖11所示。圖11 Linux文件系統掛載配置(4) S3C2440開發板使用的Nandflash容量為256M,大頁(2K)Nand,內核中NandFlash驅動的位置為:drivers/mtd/nand/目錄,該目錄下的s3c2410_nand.c文件為s3c2440的NAND控制器的驅動,我們無需修改驅動,只需要讓內核支持nand驅動,并創建nandflash分區表。開發板NANDFalsh配置,系統的應用程序及內核鏡像均被燒錄到NANDFlash中,開發板為支持256 NANDFlash,因此在添加了文件系統之后必須添加系統對NANDFlash的硬件驅動支持,這樣系統才能正常的從NANDFlash向內存中加載應用程序,其編譯配置如圖12所示。圖12 Linux支持NANDFlash存儲配置(5) 在通常情況下,生產廠商把LCD驅動器會以COF/COG的形式與LCD玻璃基板制作在一起,而LCD控制器則是由外部的電路來實現,現在很多的MCU內部都集成了LCD控制器,如S3C2410/2440等。通過LCD控制器就可以產生LCD驅動器所需要的控制信號來控制STN/TFT屏了。 S3C2440內部有LCD顯示控制器在驅動設備文件夾已經有關于驅動控制器的驅動文件,這些驅動文件是可以直接調用的,注意,系統并沒有建立S3C2440的LCD配置文件,但是由于S3C2410與2440驅動兼容,因此只需添加配置S3C2410的驅動即可,添加S3C2410存儲配置幀緩沖支持如圖13所示。圖13 LinuxLCD顯示器存配置(6) EABI即嵌入式應用二進制接口,他描述了可連接目標代碼,庫目標代碼,可執行文件鏡像的編譯。連接執行調試以及目標代碼的生成過程。這里我們選著ARM EABI,具體如圖14所示。圖14 配置Linux支持EABI4.2 硬件驅動程序設計與加載在Linux系統中所有的設備都被看成文件,因此我們對驅動的編寫實際上是對文件的操作。在程序運行過程中,系統涉及到了以下幾個模塊:GPIO、USB攝像頭,顯示設備TFTLCD,輸入設備觸摸屏,在Linux設備驅動屬于內核的一部分,Linux內核的一個模塊可以以兩種方式被編譯和加載:(1) 直接編譯進Linux內核,隨同Linux啟動時加載。(2) 編譯成一個可加載和刪除的模塊,使用insmod加載(modprobe和insmod命令類似,但依賴于相關的配置文件),rmmod刪除。這種方式控制了內核的大小,而模塊一旦被插入內核,它就和內核其他部分一樣。4.2.1 LED驅動的設計 建立LED設備文件int led_no;int fd;if (argc != 3 | sscanf(argv1, %d, &led_no) != 1 | sscanf(argv2,%d, &on) != 1 | on 1 | led_no 4) fprintf(stderr, Usage: leds led_no 0|1n);exit(1);fd = open(/dev/GPIO-Control, 0);if (fd par; void _iomem *regs = fbi-io; int type = fbi-regs.lcdcon1 & S3C2410_LCDCON1_TFT; struct fb_var_screeninfo *var = &info-var; struct s3c2410fb_mach_info *mach_info = fbi-dev-platform_data; struct s3c2410fb_display *default_display = mach_info-displays + mach_info-default_display; int clkdiv = s3c2410fb_calc_pixclk(fbi, var-pixclock) / 2; dprintk(%s: var-xres = %dn, _func_, var-xres); dprintk(%s: var-yres = %dn, _func_, var-yres); dprintk(%s: var-bpp = %dn, _func_, var-bits_per_pixel); if (type = S3C2410_LCDCON1_TFT) s3c2410fb_calculate_tft_lcd_regs(info, &fbi-regs); -clkdiv; if (clkdiv regs); if (clkdiv support for frame buffer devices -* Enable frameware EDID* Enable Vidoe Mode Handling Helpers S3C24X0 LCD framebuffer supportConsole display driver support - Framebuffer Console Support* Bootup Logo - Standard 224-color Linux logo啟動時輸出:Console: switching to colour frame buffer device 40x30fb0: s3c2410fb frame buffer device即證明移植成功。4.2.1 USB攝像頭驅動的設計LIBUSB是一種高級別的API,它封裝了低級別的內核與USB模塊的交互,并提供了一系列適合在用戶空間進行USB驅動開發的函數。libusb基于USB文件系統提供的USB接口、端點等信息,與USB設備進行通信。顯然,只要開發平臺上的內核支持USB文件系統,我們就可以利用libusb進行USB驅動開發。(1) 有了Libusb提供的這些API應用程序,利用libusb的驅動框架,開發USB驅動程序的時候就會很方便。一般的驅動應該都包含如下接口:Device_Find(); /* 尋找設備接口 */Device_Open(); /* 打開設備接口 */Device_Write(); /* 寫設備接口 */Device_Read(); /* 讀設備接口 */Device_Close(); /* 關閉設備接口 */(2)初始化設備接口void usb_init(void);int usb_find_busses(void);int usb_find_devices(void);struct usb_bus *usb_get_busses(void);這些接口也可以稱為核心函數,它們主要用來初始化并尋找相關設備。整個初始化的主要過程是先初始化相關數據,然后尋找系統上的usb總線,任何usb設備都通過usb總線和計算機總線通信,進而和其他設備通信,最后尋找總線上的usb設備。(3)操作設備接口usb_dev_handle *usb_open(struct *usb_device dev);int usb_close(usb_dev_handle *dev);usb_detach_kernel_driver_np(usb_dev_handle *dev, int interface);int usb_clear_halt (usb_dev_handle *dev, unsigned int ep);int usb_claim_interface(usb_dev_handle *dev, int interface);int usb_release_interface(usb_dev_handle *dev, int interface);初始化完成后是對設備的操作。利用Libusb提供的接口,對設備進行打開、關閉操作,設置當前設備使用的configuration,設置當前設備配置的interface descriptor,以及復位指定的endpoint和設備,注冊、注銷與操作系統通信的接口。控制傳輸接口、批傳輸接口。int usb_control_msg(usb_dev_handle *dev, int requesttype, int request, int value, int index, char *bytes, int size, int timeout);int usb_get_string_simple(usb_dev_handle *dev, int index, char *buf, size_t buflen);int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);這些接口的主要功能是從默認的管道發送和接受數據,只是不同的傳輸方式對應不同的接口。4.3 Boa服務器實現與調試Boa服務器和普通Web 服務器一樣, 能夠完成接收客戶端請求、分析請求、響應請求、向客戶端返回請求結果等任務. 它的工作過程主要包括:(1) 完成Web 服務器的初始化工作, 如創建環境變量、創建TCP 套接字、綁定端口、開始偵聽、進入循環結構, 以及等待接收客戶瀏覽器的連接請求;(2) 當有客戶端連接請求時,Web 服務器負責接收客戶端請求, 并保存相關請求信息;(3) 在接收到客戶端的連接請求之后,分析客戶端請求, 解析出請求的方法、URL 目標、可選的查詢信息及表單信息, 同時根據請求做出相應的處理;(4) Web 服務器完成相應處理后, 向客戶端瀏覽器發送響應信息, 關閉與客戶機的TCP 連接。Boa服務器根據請求方法的不同, 做出不同的響應. 如果請求方法為HEAD, 則直接向瀏覽器返回響應首部; 如果請求方法為GET, 則在返回響應首部的同時, 將客戶端請求的URL 目標文件從服務器上讀出, 并且發送給客戶端瀏覽器; 如果請求方法為POST, 則將客戶發送過來的表單信息傳送給相應的CGI 程序, 作為CGI 的參數來執行CGI 程序, 并將執行結果發送給客戶端瀏覽器。 Boa 的功能實現也是通過建立連接、綁定端口、進行偵聽、請求處理等來實現的。其過程如圖16所示。 boa源碼移植boa下載到目標板中目標板驗證boa移植成功Linux下web庫源碼修改運用標準庫進行開發調試、驗證、測試完成圖16 Boa服務器移植流程圖(5) Boa服務器配置腳本: # Boa v0.94 configuration file# File format has not changed from 0.93# File format has changed little from 0.92# version changes are noted in the commentsPort 80User nobodyGroup nogroupErrorLog /var/log/boa/error_logAccessLog /var/log/boa/access_logDocumentRoot /var/wwwUserDir public_htmlDirectoryIndex index.htmlDirectoryMaker /usr/lib/boa/boa_indexerKeepAliveMax 1000KeepAliveTimeout 10MimeTypes /etc/mime.typesDefaultType text/plainCGIPath /bin:/usr/bin:/usr/local/binAlias /doc /usr/docScriptAlias /cgi-bin/ /usr/lib/cgi-bin/4.4 Mjpeg-streamer編譯與配置(1) 重新配置內核使內核支持所用的攝像頭,用make menuconfig。(2) 重新編譯內核 make zImage.bin。(3) Mjpg-stream 的移植。(4) 需要安裝J2SE RuntimeEnviroment 5.0 Update 22插件才能播放視頻流。(5) Mjpeg-streamer服務器配置腳本:export LD_LIBRARY_PATH=$(pwd)CFLAGS = -O2 -DLINUX -D_GNU_SOURCE -Wall -shared fPICsudo ./mjpg_streamer -i ./input_uvc.so -f 15 -r 960x720 -o ./output_http.so -w ./www4.5 QT應用程序的設計QT是一個跨平臺的C+應用程序開發框架,有時又被稱為C+部件工具箱。Qt被用在KDE桌面環境、Opera、GoogleEarth、Skype、AdobePhotoshopAlbum和VirtualBox的開發中。它是諾基亞(Nokia)的QtDevelopmentworks部門的產品。使用Qt,只需一次性開發應用程序和用戶界面,無須重新編寫源代碼,便可跨不同桌面和嵌入式操作系統部署這些應用程序。而Nokia公司又為QT開發研發了一系類工具,如QTdesigner,QT Debuger,QT仿真工具等。所以開發起來非常方便。Qt 包括多達 250 個以上的 C+ 類,豐富的 API,還提供基于模板的 collections,serialization, file, I/O device, directory management, date/time 類。甚至還包括正則表達式的處理 功能。支持 2D/3D 圖形渲染,支持 OpenGL,大量的開發文檔,XML 支持。下面只列出LED的QT設計方法。設計思路:控制LED燈亮和滅是通過S3C2440的GPIO的低電平來實現
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 宜賓2025年宜賓三江新區事業單位第一次考核招聘26人筆試歷年參考題庫附帶答案詳解
- 廣安職業技術學院《成本與管理會計學》2023-2024學年第二學期期末試卷
- 漳州衛生職業學院《中外建筑鑒賞》2023-2024學年第二學期期末試卷
- 惠州衛生職業技術學院《組織行為學(I)》2023-2024學年第二學期期末試卷
- 北京政法職業學院《西藏民族與宗教事務管理》2023-2024學年第二學期期末試卷
- 吉首大學張家界學院《生物化學與分子生物學(1)》2023-2024學年第二學期期末試卷
- 呼倫貝爾職業技術學院《西醫外科學B》2023-2024學年第二學期期末試卷
- 科爾沁藝術職業學院《資產評估學B》2023-2024學年第二學期期末試卷
- 安徽農業大學《插圖設計》2023-2024學年第二學期期末試卷
- 西北師范大學《機器人技術雙語》2023-2024學年第二學期期末試卷
- 會計師事務所審計業務操作手冊
- 市政道路工程施工組織設計方案
- Mission-Planner地面站操作手冊
- 《節奏控制生產流程》課件
- 醫療護理與人文關懷課件
- 老年患者的安全管理課件
- 2024-2025年高考生物一輪復習知識點講解專題3-2細胞呼吸含解析
- 巡檢員質量培訓
- 2025年甘肅甘南州瑪曲縣輔警招聘29人歷年高頻重點提升(共500題)附帶答案詳解
- 2025年中國遠洋海運集團內部招聘中遠海運發展股份限公司招聘1人信息高頻重點提升(共500題)附帶答案詳解
- 《國父孫中山》課件
評論
0/150
提交評論