已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
南 陽 理 工 學(xué) 院 本科生畢業(yè)設(shè)計(論文)學(xué) 院:電子與電氣工程學(xué)院專 業(yè): 自動化 學(xué) 生: 張 真 指導(dǎo)教師: 曹 婷 完成日期 2014 年 5 月南陽理工學(xué)院本科生畢業(yè)設(shè)計(論文)物聯(lián)網(wǎng)智能家居終端的設(shè)計與實現(xiàn)Design and Implementation of the Smart Home Terminal Based on the Internet of Things總 計: 31 頁表 格: 1 個插 圖: 24 幅南 陽 理 工 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(論文)物聯(lián)網(wǎng)智能家居終端的設(shè)計與實現(xiàn)Design and Implementation of the Smart Home Terminal Based on the Internet of Things學(xué) 院: 電子與電氣工程學(xué)院 專 業(yè): 自動化 學(xué) 生 姓 名: 張 真 學(xué) 號: 105090640038 指 導(dǎo) 教 師(職稱): 曹 婷(講師) 評 閱 教 師: 完 成 日 期: 南陽理工學(xué)院Nanyang Institute of Technology物聯(lián)網(wǎng)智能家居終端的設(shè)計與實現(xiàn)I物聯(lián)網(wǎng)智能家居終端的設(shè)計與實現(xiàn)自動化專業(yè) 張真摘要 智能家居又稱為數(shù)字家庭, 一般是指以計算機接口技術(shù)和網(wǎng)絡(luò)技術(shù)為基礎(chǔ),將各種家用數(shù)字化設(shè)備有機結(jié)合為一體的智能化的網(wǎng)絡(luò)系統(tǒng)。本課題以Web 技術(shù)為核心, 在基于S3C2440 微處理器和嵌入式Linux 操作系統(tǒng)的軟硬件平臺上構(gòu)建了Web服務(wù)器和視頻服務(wù)器,Web 服務(wù)器采用Boa,視頻服務(wù)器采用Mjpeg-Streamer,結(jié)合CGI技術(shù)處理HTML表單完成用戶認證,視頻監(jiān)控,設(shè)備開關(guān)控制等家具監(jiān)控功能。關(guān)鍵詞 智能家居;Linux;網(wǎng)絡(luò)服務(wù)器;S3C2440;通用網(wǎng)關(guān)接口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物聯(lián)網(wǎng)智能家居終端的設(shè)計與實現(xiàn)目 錄1 引言11.1 智能家居發(fā)展現(xiàn)狀11.2 智能家居系統(tǒng)概述11.3 研究目的及意義22 系統(tǒng)主要設(shè)計任務(wù)32.1 Linux系統(tǒng)移植42.1.1 Bootloader編譯與移植42.1.2 修改U-Boot文件62.2 Mjpeg-streamer視頻服務(wù)器移植72.3 Boa服務(wù)器移植72.2 CGI程序設(shè)計與實現(xiàn)73 硬件開發(fā)平臺83.1 基于ARM920t的S3C2440處理器83.2 TQ2440開發(fā)板硬件資源94 智能家居終端軟件設(shè)計104.1 Linux系統(tǒng)移植配置與調(diào)試104.2 硬件驅(qū)動程序的設(shè)計與加載134.2.1 LED驅(qū)動的設(shè)計144.2.2 LCD驅(qū)動程序設(shè)計144.2.3 USB攝像頭驅(qū)動程序的設(shè)計164.3 Boa服務(wù)器移植方法與配置184.4 Mjpeg-streamer的編譯與配置194.5 QT應(yīng)用程序的設(shè)計205 整機系統(tǒng)調(diào)試及結(jié)果分析225.1 系統(tǒng)控制程序流程圖225.2 視頻監(jiān)控程序與調(diào)試23結(jié)束語25參考文獻26附錄27致謝31II1 引言1.1 智能家居發(fā)展現(xiàn)狀智能家居又稱智能住宅,是以住宅為平臺,利用先進的計算機、嵌入式系統(tǒng)和網(wǎng)絡(luò)通訊技術(shù),將家中的各種設(shè)備,包括照明系統(tǒng)、環(huán)境控制系統(tǒng)、網(wǎng)絡(luò)家電等通過家庭網(wǎng)絡(luò)連接到一起,構(gòu)建高效的住宅設(shè)施與家庭日程事務(wù)的管理系統(tǒng)。與普通的家居相比,智能家居既具有傳統(tǒng)的居住功能,又提升了家居安全性、便利性、舒適性、藝術(shù)性,因此成為當(dāng)前人們家裝所關(guān)注的熱點。早在1995年比爾蓋茨在未來之路中提到了物聯(lián)網(wǎng)的概念,然而到了1998年的時候美國的麻省理工學(xué)院(MIT)的Kevin Ashton,把非接觸式無線識別技術(shù)(RFID)與傳感器技術(shù)應(yīng)用于日常物品中才形成一個真正所謂的“物聯(lián)網(wǎng)”。當(dāng)時的物聯(lián)網(wǎng)的概念就是利用產(chǎn)品電子代碼EPC,還有我們的射頻識別技術(shù),通過網(wǎng)絡(luò),當(dāng)時的網(wǎng)絡(luò)還僅限于互聯(lián)網(wǎng)來實現(xiàn)物品的互聯(lián)互通。在任何時候任何地點對任何物品識別和管理,這就是原來的物聯(lián)網(wǎng)。在1999年的時候EPC Global的Auto-ID中心提出:物聯(lián)網(wǎng)就是成千上萬的物品采用無線方式接入了Internet的網(wǎng)絡(luò)。這是物聯(lián)網(wǎng)概念真正的提出。在2008年IBM提出:互聯(lián)網(wǎng)+物聯(lián)網(wǎng)=智慧地球,就是把傳感器設(shè)備安裝到電網(wǎng)、鐵路、橋梁、隧道、供水系統(tǒng)、大壩、油氣管道等各種物體中,并且普遍鏈接成網(wǎng)路,及“物聯(lián)網(wǎng)”。至此最新的物聯(lián)網(wǎng)概念形成了。網(wǎng)絡(luò)技術(shù)、傳感技術(shù)、數(shù)據(jù)庫技術(shù)、云計算、移動計算等新技術(shù)使得物聯(lián)網(wǎng)發(fā)生了很大的變換,內(nèi)含增多增大。所謂的物不僅僅是物理實體,網(wǎng)絡(luò)不僅僅是各類信息的網(wǎng)絡(luò),還包括互聯(lián)網(wǎng)、傳感網(wǎng)、移動網(wǎng),技術(shù)也把條碼、射頻、傳感器包含了進來。廣義的物聯(lián)網(wǎng)概念就是利用自動識別技術(shù),這里包括條碼、射頻、全球定位等按照標(biāo)準的協(xié)議實現(xiàn)人與物、物與物在任何時候任何地點的鏈接,顯著的特點就是智能化、進行信息交換和通信、以實現(xiàn)智能識別、定位、跟蹤、監(jiān)控、管理,構(gòu)建成為一個龐大的網(wǎng)絡(luò)體系。1.2 智能家居系統(tǒng)概述智能住宅強調(diào)的是人的主觀能動性,要求重視人與居住環(huán)境的協(xié)調(diào),能夠隨心所欲地控制室內(nèi)居住環(huán)境。智能住宅的住戶可以在任何地方通過手機遙控家電,監(jiān)控住宅情況,如指示洗衣機工作;查看冰箱中食品儲存情況;監(jiān)視家中是否有人闖入等。因此,智能家居在生產(chǎn)設(shè)計方面,務(wù)必以實用為核心,力求實用、易用、人性化。隨著社會信息化的加快,人們的工作、生活和通訊、信息的關(guān)系日益緊密。信息化社會在改變?nèi)藗兩罘绞脚c工作習(xí)慣的同時,也對傳統(tǒng)的住宅提出了挑戰(zhàn),社會、技術(shù)以及經(jīng)濟的進步更使人們的觀念隨之巨變。人們對家居的要求早已不只是物理空間,更為關(guān)注的是一個安全、方便、舒適的居家環(huán)境。家居智能化技術(shù)起源于美國,它是以家為平臺進行設(shè)計的。智能家居控制系統(tǒng)是以HFC、以太網(wǎng)、現(xiàn)場總線、公共電話網(wǎng)、無線網(wǎng)的傳輸網(wǎng)絡(luò)為物理平臺,計算機網(wǎng)絡(luò)技術(shù)為技術(shù)平臺,現(xiàn)場總線為應(yīng)用操作平臺,構(gòu)成一個完整的集家庭通信、家庭設(shè)備自動控制、家庭安全防范等功能的控制系統(tǒng)。智能家居控制系統(tǒng)的總體目標(biāo)是通過采用計算機技術(shù)、網(wǎng)絡(luò)技術(shù)、控制技術(shù)和集成技術(shù)建立一個由家庭到小區(qū)乃至整個城市的綜合信息服務(wù)和管理系統(tǒng),以此來提高住宅高新技術(shù)的含量和居民居住環(huán)境水平。大型的智能家居控制系統(tǒng)通常由系統(tǒng)服務(wù)器、家庭控制器(各種模塊)、各種路由器、電纜調(diào)制解調(diào)器頭端設(shè)備CMTS、交換機、通訊器、控制器、無線收發(fā)器、各種探測器、各種傳感器、各種執(zhí)行機構(gòu)、打印機等主要部分組成。1.3 研究的目的及意義智能家居控制系統(tǒng)可以定義為一個過程或者一個系統(tǒng)。利用先進的計算機技術(shù)、網(wǎng)絡(luò)通訊技術(shù)、綜合布線技術(shù)、將與家居生活有關(guān)的各種子系統(tǒng),有機地結(jié)合在一起,通過統(tǒng)籌管理,讓家居生活更加舒適、安全、有效。與普通家居相比,智能家居不僅具有傳統(tǒng)的居住功能,提供舒適安全、高品位且宜人的家庭生活空間。還將原來的被動靜止結(jié)構(gòu)轉(zhuǎn)變?yōu)榫哂心軇又腔鄣墓ぞ?,提供全方位的信息交換功能,幫助家庭與外部保持信息交換暢通,優(yōu)化人們的生活方式,幫助人們有效安排時間,增強家居生活的安全性,甚至為各種能源費用節(jié)約資金。系統(tǒng)的網(wǎng)絡(luò)化功能可以提供遙控:家電(電視,空調(diào),熱水器等)控制、照明控制、室內(nèi)外遙控、窗簾自控、防盜報警、電話遠程控制、可編程定時控制及計算機控制等多種功能和手段。使生活更加舒適、便利和安全。因智能家居控制系統(tǒng)簡單、功能靈活,擴展容易而被人們廣泛接受和應(yīng)用。家居生活的智能化是當(dāng)今計算機網(wǎng)絡(luò)與通訊技術(shù)最人性化的應(yīng)用,給人們的家居生活帶來了全新的感受。今天,借助電話控制或互聯(lián)網(wǎng),您幾乎可以在任何地方、任何時候監(jiān)控您的家居狀況,為您的家居生活帶來前所未有的方便。隨著社會全面的信息化、智能化和自動化,家庭智能化必將成為未來家居裝飾潮流發(fā)展的最新方向!2 系統(tǒng)主要設(shè)計任務(wù)系統(tǒng)主要設(shè)計包含以下幾個部分,基于S3C2440的Linux系統(tǒng)移植,Boa服務(wù)器移植,Mjpeg視頻服務(wù)器移植,系統(tǒng)硬件設(shè)備驅(qū)動程序編寫,模塊設(shè)計如圖1所示。圖1 智能家居系統(tǒng)控制框圖2.1 Linux內(nèi)核移植所謂嵌入式Linux,是指Linux在嵌入式系統(tǒng)中的應(yīng)用。在所有的操作系統(tǒng)中,Linux操作系統(tǒng)是一個發(fā)展最快,應(yīng)用最廣泛的操作系統(tǒng),由于Linux系統(tǒng)的優(yōu)良特性,使得其成為嵌入式開發(fā)中的首選。隨著嵌入式Linux的不斷成熟,以及其對更小尺寸和更多類型的處理器支持,使得嵌入式Linux操作系統(tǒng)邁入了嵌入式系統(tǒng)的主流,因此本系統(tǒng)采用Linux作為操作系統(tǒng)。關(guān)于Linux的移植分為四部分,Bootloade移植,Linux內(nèi)核的移植,內(nèi)核驅(qū)動程序的移植以及根文件系統(tǒng)的掛載。內(nèi)核方面我們一般以2.6.xx及其以上的版本移植,因為其通用性良好。根文件系統(tǒng)一般選用yaffs文件系統(tǒng),而內(nèi)核驅(qū)動方面,Linux內(nèi)核一般有足夠的硬件驅(qū)動供我們加載,所以其實我們主要工作就放到了移植方面。下面Bootloader的移植進行演示。我們一般選用較好的U-Boot作為嵌入式系統(tǒng)中通用的Boot Loader,下面是幾種不同的Bootloader介紹。Bootloader 是嵌入式系統(tǒng)的引導(dǎo)加載程序,它是系統(tǒng)上電后運行的第一段程序,其作用類似于 PC 機上的 BIOS。在完成對系統(tǒng)的初始化任務(wù)之后,它會將非易失性存儲器(通常是Flash或DOC等)中的Linux 內(nèi)核拷貝到 RAM 中去,然后跳轉(zhuǎn)到內(nèi)核的第一條指令處繼續(xù)執(zhí)行,從而啟動 Linux 內(nèi)核。2.1.1 Bootloade編譯與移植表1 開放源碼的Linux引導(dǎo)程序Boot LoaderMonitor描述X86ARMPowerLILO否Linux磁盤引導(dǎo)程序是否否GRUB否GNU的LILO替代程序是否否Loadin否從DOS引導(dǎo)Linux是否否ROLO否從ROM引導(dǎo)Linux而不需要BIOS是否否Etherboot否通過以太網(wǎng)卡啟動Linux的固件是否否LinuxBIOS否完全替代BUIS的Linux引導(dǎo)程序是否否BLOB否LART等硬件平臺的引導(dǎo)程序否是否U-boot是通用引導(dǎo)程序是是是RedBoot是基于eCos的引導(dǎo)程序是是是(1) 首先,把下載下來的u-boot-1.1.6.tar.bz2包,復(fù)制到我們的工作目錄,這里我們把它復(fù)制到/home/work/目錄下邊,然后解壓,如圖2所示。圖2 Bootloader編譯與移植進入U-Boot目錄,然后修改頂層目錄的Makefile,如圖3所示。圖3 Bootloader編譯與移植找到smdk2410_config項,仿照其模式為TQ2440建立編譯項,如圖4所示。圖4 Bootloader編譯與移植此時要注意,“”符號前邊一定要加“TAB”而并非空格,否則會在測試編譯時報錯。其中各項的意思如下:arm: CPU的架構(gòu)(ARCH)。 arm920t: CPU的類型(CPU),其對應(yīng)于cpu/arm920t子目錄。 tq2440: 開發(fā)板的型號(BOARD),對應(yīng)于board/smdk2440/tq2440目錄。 TQ2440: 開發(fā)者/或經(jīng)銷商(vender)。 s3c24x0: 片上系統(tǒng)(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子目錄中建立自己的開發(fā)板tq2440目錄,見圖6。圖6 Bootloader編譯與移植由于我在上一步板子的開發(fā)者/或經(jīng)銷商(vender)中填了friendlyarm,所以開發(fā)板tq2440目錄一定要建在/board子目錄中的tq2440目錄下 ,否則編譯會出錯,同時還要記得修改自己的開發(fā)板tq2440目錄下的Makefile文件,同樣用vi編輯器打開Makefile,并把COBJS變量值修改如下OBJS := tq2440.o flash.o(3) 在include/configs/中建立配置頭文件,即復(fù)制s3c2440.h到tq2440中,如圖7所示。圖7 Bootloader編譯與移植(4) make測試編譯如圖8所示。圖8 Bootloader編譯與移植可以看到,系統(tǒng)并沒有報錯,說明編譯配置已經(jīng)沒問題,接下來我們所要做的就是要根據(jù)開發(fā)板參數(shù),修改相應(yīng)的文件。2.1.2 修改UBoot文件(1) 修改/cpu/arm920t/start.S。start.S文件是整個Boot loader程序的入口點,在這里我們需要對寄存器地址定義、中斷禁止部分、時鐘設(shè)置(2440的主頻為405MHz)等部分,按照s3c2440手冊或者vivi的源代碼,將從Flash啟動改成從NAND Flash啟動。(2) 在board/friendlyarm/qq2440加入NAND Flash讀函數(shù)文件,拷貝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文件,依照開發(fā)板的內(nèi)存區(qū)的配置情況, 修改board/tekkaman/tekkaman2440/lowlevel_init.S文件,我們利用友善之臂提供的vivi源碼里的信息做一些簡單的修改。(6) 修改/board/friendlyarm/qq2440/qq2440.c。修改其對GPIO和PLL的配置(需參閱開發(fā)板的硬件說明和芯片手冊):(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根目錄下執(zhí)行如下命令# make clean;# make tq2400_config;# make編譯一段時間后,便會生成U-Boot映像的ELF格式。2.2 Mjpeg-streamer視頻服務(wù)器移植Mjpg-streamer是用于從攝像頭采集圖像的視頻服務(wù)器,它把圖像以流的形式通過基于IP的網(wǎng)絡(luò)傳輸?shù)綖g覽器如IE。并可以利用某些攝像頭的硬件壓縮功能來降低服務(wù)器CPU的開銷。它為嵌入式設(shè)備和一些常規(guī)服務(wù)器提供了一個輕量且更少CPU消耗的方案,因為無需為視頻幀壓縮浪費大量的計算效率(這件事交給硬件了)。2.3 Boa服務(wù)器移植Boa是一個非常小巧的Web服務(wù)器,可執(zhí)行代碼只有約60KB。它是一個單任務(wù)Web服務(wù)器,只能依次完成用戶的請求,但Boa支持CGI,能夠為CGI程序fork出一個進程來執(zhí)行。Boa的設(shè)計目標(biāo)是速度和安全,在其站點公布的性能測試中,Boa的性能 要好于Apache服務(wù)器。與其他傳統(tǒng)的Web 服務(wù)器不同的是當(dāng)有連接請求到來時, 它并不為每個連接單獨創(chuàng)建進程, 也不通過復(fù)制自身進程來處理多鏈接, 而是通過建立HTTP 請求列表來處理多路HTTP 連接請求, 同時它只為CGI 程序創(chuàng)建新的進程, 這樣就在最大程度上節(jié)省了系統(tǒng)資源, 這對嵌入式系統(tǒng)來說至關(guān)重要. 同時它還具有自動生成目錄、自動解壓文件等功能, 因此, Boa 具有很高的HTTP 請求處理速度和效率, 在嵌入式系統(tǒng)中具有很高的應(yīng)用價值。Boa服務(wù)器移植主要包括以下幾點:(1) 修改配置文件。(2) 生成Makefile文件。(3) 執(zhí)行make命令編譯。2.4 CGI程序設(shè)計與實現(xiàn)CGI:通用網(wǎng)關(guān)接口(Common Gateway Interface)是一個Web服務(wù)器主機提供信息服務(wù)的標(biāo)準接口。通過CGI接口,Web服務(wù)器就能夠獲取客戶端提交的信息,轉(zhuǎn)交給服務(wù)器端的CGI程序進行處理,最后返回結(jié)果給客戶端。組成CGI通信系統(tǒng)的是兩部分:一部分是html頁面,就是在用戶端瀏覽器上顯示的頁面。另一部分則是運行在服務(wù)器上的CGI程序。我們的CGI程序主要完成與網(wǎng)頁接口的連接,即主登陸窗口、LED顯示窗口、參數(shù)設(shè)置窗口、實時顯示參數(shù)窗口等網(wǎng)頁分別編寫文件,實現(xiàn)程序見附錄。圖9 CGI登錄流程圖3 硬件開發(fā)平臺簡介3.1 基于ARM920t的S3C2440處理器S3C2440A是韓國三星公司推出的16/32位RISC微控制器,其CPU采用的是ARM920T內(nèi)核。(1) 特點: 具有PLL時鐘發(fā)生器,主頻最高可達533M。 內(nèi)核1.2V供電最高400M,1.3V供電最高533M。 存儲器支持1.8V、2.5V、3.0V、3.3V。 I/O均支持3.3V供電。 S3C2440為單機器周期執(zhí)行指令集。 具有電源管理功能,可以使系統(tǒng)以普通方式、空閑方式和掉電模式工作。(2) 內(nèi)核結(jié)構(gòu):采用ARM920T內(nèi)核,具有16KB指令Cache、16KB數(shù)據(jù)Cache和存儲器管理單元MMU,指令高速存儲緩沖器(I-Cache),數(shù)據(jù)高速存儲緩沖器(D-cache)提高指令執(zhí)行效率及數(shù)據(jù)存儲效率,減少主存帶寬和響應(yīng)性帶來的影響,加強的ARM體系結(jié)構(gòu)MMU,用于支持winCE、linux等操作系統(tǒng),內(nèi)部高級微控制總線(AMBA)體系結(jié)構(gòu)(AMB2.0,AHB/APB)。(3) 存儲器控制器特性: S3C2440采用總線結(jié)構(gòu)管理片上外設(shè)及內(nèi)存。 S3C2440的存儲器管理器提供訪問外部存儲器的所有控制信號。27位地址號32位數(shù)據(jù)信號、8個片選信號、以及讀/寫控制信號等。 總共有8個存儲器Bank(Bank0Bank7),其中,Bank0-Bank5為固定128MB,Bank6和Bank7的容量可編程改變,可以是2、4、8、16、32、64、128MB,最大共1GB。Bank0可以作為引導(dǎo)ROM,其數(shù)據(jù)線寬只能是16位和32位,其它存儲器的數(shù)據(jù)線寬可以是8位、16位和32位。 8個存儲器Bank: Bank0-Bank5:SRAM、ROM。 Bank6Bank7:SRAM、ROM SDRAM。 S3C2440支持兩種啟動方式: NOR FLASH啟動,即代碼直接寫入NOR FLASH,運行時直接在NOR FLASH上運行。 NAND FLASH啟動方式,即代碼燒到NAND FLASH中,借助片內(nèi)4K的sram,將代由NAND FLASH烤到SDRAM中,在SDRAM中運行。3.2 TQ2440開發(fā)板硬件資源介紹(1) CPU處理器 Samsung S3C2440A,主頻400MHZ,最高533MHZ(2) SDRAM內(nèi)存 在板64M SDRAM(3) 32bit數(shù)據(jù)總線(4) SDRAM時鐘頻率高達100MHZ(5) FLASH存儲 在板256M Nand Flash,掉電非易失 在板2M Nor Flash,掉電非易失,已經(jīng)安裝BIOS(6) LCD顯示 板上集成4線電阻式觸摸屏接口,可以直接連接四線電阻觸摸屏 支持黑白、4級灰度、16級灰度、256色、4096色STN液晶屏, 板上引出一個12V電源接口,可以為大尺寸TFT液晶的12V CCFL背光模塊(7) 接口和資源 1個10M以太網(wǎng)RJ45接口(采用CS8900網(wǎng)絡(luò)芯片) 3個串行口 1個USB Host 1個USB Slave B型接口 1個SD卡存儲接口 1路立體聲音頻輸出接口,一路麥克風(fēng)接口; 1個2.0mm間距20針標(biāo)準JTAG接口 1個PWM控制蜂鳴器 1個可調(diào)電阻,用于AD模數(shù)轉(zhuǎn)換測試 1個I2C總線AT24C08芯片,用于I2C總線測試 1個20pin攝像頭接口 板載實時時鐘電池 電源接口(12V),帶電源開關(guān)和指示燈(8) 系統(tǒng)時鐘源 12M無源晶振(9) 實時時鐘 內(nèi)部實時時鐘(帶后備鋰電池)(10) 擴展接口 1個34 pin 2.0mmGPIO接口 1個44 pin 2.0mm 系統(tǒng)總線接口(11) 指示燈 4個LED指示燈,可模擬做演示設(shè)備(12) 操作系統(tǒng)支持 Linux2.6.x WindowsCE.NET 4.24 智能家居終端軟件設(shè)計4.1 Linux系統(tǒng)移植配置與調(diào)試(1) Linux開發(fā)板硬件平臺配置,應(yīng)該配置支持TQ2440。其中包括板載資源的配置,主要目的是芯片廠商的啟動文件加載,如圖10所示。圖10 Linux開發(fā)平臺配置(2) Linux yaffs文件系統(tǒng)配置,這是開發(fā)板的根文件系統(tǒng),我們的應(yīng)用程序都放在了NANDFlash中,要想對其讀取,必須加載根文件系統(tǒng)其中包括Linux的內(nèi)核鏡像也被燒錄到NANDFlash中。具體配置如圖11所示。圖11 Linux文件系統(tǒng)掛載配置(4) S3C2440開發(fā)板使用的Nandflash容量為256M,大頁(2K)Nand,內(nèi)核中NandFlash驅(qū)動的位置為:drivers/mtd/nand/目錄,該目錄下的s3c2410_nand.c文件為s3c2440的NAND控制器的驅(qū)動,我們無需修改驅(qū)動,只需要讓內(nèi)核支持nand驅(qū)動,并創(chuàng)建nandflash分區(qū)表。開發(fā)板NANDFalsh配置,系統(tǒng)的應(yīng)用程序及內(nèi)核鏡像均被燒錄到NANDFlash中,開發(fā)板為支持256 NANDFlash,因此在添加了文件系統(tǒng)之后必須添加系統(tǒng)對NANDFlash的硬件驅(qū)動支持,這樣系統(tǒng)才能正常的從NANDFlash向內(nèi)存中加載應(yīng)用程序,其編譯配置如圖12所示。圖12 Linux支持NANDFlash存儲配置(5) 在通常情況下,生產(chǎn)廠商把LCD驅(qū)動器會以COF/COG的形式與LCD玻璃基板制作在一起,而LCD控制器則是由外部的電路來實現(xiàn),現(xiàn)在很多的MCU內(nèi)部都集成了LCD控制器,如S3C2410/2440等。通過LCD控制器就可以產(chǎn)生LCD驅(qū)動器所需要的控制信號來控制STN/TFT屏了。 S3C2440內(nèi)部有LCD顯示控制器在驅(qū)動設(shè)備文件夾已經(jīng)有關(guān)于驅(qū)動控制器的驅(qū)動文件,這些驅(qū)動文件是可以直接調(diào)用的,注意,系統(tǒng)并沒有建立S3C2440的LCD配置文件,但是由于S3C2410與2440驅(qū)動兼容,因此只需添加配置S3C2410的驅(qū)動即可,添加S3C2410存儲配置幀緩沖支持如圖13所示。圖13 LinuxLCD顯示器存配置(6) EABI即嵌入式應(yīng)用二進制接口,他描述了可連接目標(biāo)代碼,庫目標(biāo)代碼,可執(zhí)行文件鏡像的編譯。連接執(zhí)行調(diào)試以及目標(biāo)代碼的生成過程。這里我們選著ARM EABI,具體如圖14所示。圖14 配置Linux支持EABI4.2 硬件驅(qū)動程序設(shè)計與加載在Linux系統(tǒng)中所有的設(shè)備都被看成文件,因此我們對驅(qū)動的編寫實際上是對文件的操作。在程序運行過程中,系統(tǒng)涉及到了以下幾個模塊:GPIO、USB攝像頭,顯示設(shè)備TFTLCD,輸入設(shè)備觸摸屏,在Linux設(shè)備驅(qū)動屬于內(nèi)核的一部分,Linux內(nèi)核的一個模塊可以以兩種方式被編譯和加載:(1) 直接編譯進Linux內(nèi)核,隨同Linux啟動時加載。(2) 編譯成一個可加載和刪除的模塊,使用insmod加載(modprobe和insmod命令類似,但依賴于相關(guān)的配置文件),rmmod刪除。這種方式控制了內(nèi)核的大小,而模塊一旦被插入內(nèi)核,它就和內(nèi)核其他部分一樣。4.2.1 LED驅(qū)動的設(shè)計 建立LED設(shè)備文件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攝像頭驅(qū)動的設(shè)計LIBUSB是一種高級別的API,它封裝了低級別的內(nèi)核與USB模塊的交互,并提供了一系列適合在用戶空間進行USB驅(qū)動開發(fā)的函數(shù)。libusb基于USB文件系統(tǒng)提供的USB接口、端點等信息,與USB設(shè)備進行通信。顯然,只要開發(fā)平臺上的內(nèi)核支持USB文件系統(tǒng),我們就可以利用libusb進行USB驅(qū)動開發(fā)。(1) 有了Libusb提供的這些API應(yīng)用程序,利用libusb的驅(qū)動框架,開發(fā)USB驅(qū)動程序的時候就會很方便。一般的驅(qū)動應(yīng)該都包含如下接口:Device_Find(); /* 尋找設(shè)備接口 */Device_Open(); /* 打開設(shè)備接口 */Device_Write(); /* 寫設(shè)備接口 */Device_Read(); /* 讀設(shè)備接口 */Device_Close(); /* 關(guān)閉設(shè)備接口 */(2)初始化設(shè)備接口void usb_init(void);int usb_find_busses(void);int usb_find_devices(void);struct usb_bus *usb_get_busses(void);這些接口也可以稱為核心函數(shù),它們主要用來初始化并尋找相關(guān)設(shè)備。整個初始化的主要過程是先初始化相關(guān)數(shù)據(jù),然后尋找系統(tǒng)上的usb總線,任何usb設(shè)備都通過usb總線和計算機總線通信,進而和其他設(shè)備通信,最后尋找總線上的usb設(shè)備。(3)操作設(shè)備接口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);初始化完成后是對設(shè)備的操作。利用Libusb提供的接口,對設(shè)備進行打開、關(guān)閉操作,設(shè)置當(dāng)前設(shè)備使用的configuration,設(shè)置當(dāng)前設(shè)備配置的interface descriptor,以及復(fù)位指定的endpoint和設(shè)備,注冊、注銷與操作系統(tǒng)通信的接口??刂苽鬏斀涌凇⑴鷤鬏斀涌?。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);這些接口的主要功能是從默認的管道發(fā)送和接受數(shù)據(jù),只是不同的傳輸方式對應(yīng)不同的接口。4.3 Boa服務(wù)器實現(xiàn)與調(diào)試Boa服務(wù)器和普通Web 服務(wù)器一樣, 能夠完成接收客戶端請求、分析請求、響應(yīng)請求、向客戶端返回請求結(jié)果等任務(wù). 它的工作過程主要包括:(1) 完成Web 服務(wù)器的初始化工作, 如創(chuàng)建環(huán)境變量、創(chuàng)建TCP 套接字、綁定端口、開始偵聽、進入循環(huán)結(jié)構(gòu), 以及等待接收客戶瀏覽器的連接請求;(2) 當(dāng)有客戶端連接請求時,Web 服務(wù)器負責(zé)接收客戶端請求, 并保存相關(guān)請求信息;(3) 在接收到客戶端的連接請求之后,分析客戶端請求, 解析出請求的方法、URL 目標(biāo)、可選的查詢信息及表單信息, 同時根據(jù)請求做出相應(yīng)的處理;(4) Web 服務(wù)器完成相應(yīng)處理后, 向客戶端瀏覽器發(fā)送響應(yīng)信息, 關(guān)閉與客戶機的TCP 連接。Boa服務(wù)器根據(jù)請求方法的不同, 做出不同的響應(yīng). 如果請求方法為HEAD, 則直接向瀏覽器返回響應(yīng)首部; 如果請求方法為GET, 則在返回響應(yīng)首部的同時, 將客戶端請求的URL 目標(biāo)文件從服務(wù)器上讀出, 并且發(fā)送給客戶端瀏覽器; 如果請求方法為POST, 則將客戶發(fā)送過來的表單信息傳送給相應(yīng)的CGI 程序, 作為CGI 的參數(shù)來執(zhí)行CGI 程序, 并將執(zhí)行結(jié)果發(fā)送給客戶端瀏覽器。 Boa 的功能實現(xiàn)也是通過建立連接、綁定端口、進行偵聽、請求處理等來實現(xiàn)的。其過程如圖16所示。 boa源碼移植boa下載到目標(biāo)板中目標(biāo)板驗證boa移植成功Linux下web庫源碼修改運用標(biāo)準庫進行開發(fā)調(diào)試、驗證、測試完成圖16 Boa服務(wù)器移植流程圖(5) Boa服務(wù)器配置腳本: # 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) 重新配置內(nèi)核使內(nèi)核支持所用的攝像頭,用make menuconfig。(2) 重新編譯內(nèi)核 make zImage.bin。(3) Mjpg-stream 的移植。(4) 需要安裝J2SE RuntimeEnviroment 5.0 Update 22插件才能播放視頻流。(5) Mjpeg-streamer服務(wù)器配置腳本: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應(yīng)用程序的設(shè)計QT是一個跨平臺的C+應(yīng)用程序開發(fā)框架,有時又被稱為C+部件工具箱。Qt被用在KDE桌面環(huán)境、Opera、GoogleEarth、Skype、AdobePhotoshopAlbum和VirtualBox的開發(fā)中。它是諾基亞(Nokia)的QtDevelopmentworks部門的產(chǎn)品。使用Qt,只需一次性開發(fā)應(yīng)用程序和用戶界面,無須重新編寫源代碼,便可跨不同桌面和嵌入式操作系統(tǒng)部署這些應(yīng)用程序。而Nokia公司又為QT開發(fā)研發(fā)了一系類工具,如QTdesigner,QT Debuger,QT仿真工具等。所以開發(fā)起來非常方便。Qt 包括多達 250 個以上的 C+ 類,豐富的 API,還提供基于模板的 collections,serialization, file, I/O device, directory management, date/time 類。甚至還包括正則表達式的處理 功能。支持 2D/3D 圖形渲染,支持 OpenGL,大量的開發(fā)文檔,XML 支持。下面只列出LED的QT設(shè)計方法。設(shè)計思路:控制LED燈亮和滅是通過S3C2440的GPIO的低電平來實現(xiàn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 60068-2:2025 SER EN-FR Environmental testing - Part 2: Tests - ALL PARTS
- 物理-遼寧省大連市2024-2025學(xué)年高三上學(xué)期期末雙基測試卷及答案
- 2024陶瓷行業(yè)知識產(chǎn)權(quán)保護合作協(xié)議3篇
- 2025賓館特色餐飲開發(fā)與推廣合作協(xié)議3篇
- 2024食品工廠代加工綠色包裝合作合同范本2篇
- 2024版協(xié)議離婚制度論文深度解讀與案例分析3篇
- 2024年航空公司飛機采購協(xié)議
- 2025年度安全文化建設(shè)與推廣承包合同范本3篇
- 中國各省地圖形狀
- 2024智能交通信號控制系統(tǒng)研發(fā)合同
- 數(shù)字化供電所題庫練習(xí)試題附答案
- 數(shù)字政府建設(shè)課件
- 2外匯風(fēng)險對企業(yè)的潛在影響
- 2024年7月自考外貿(mào)函電試題試卷真題
- 無菌技術(shù)操作評分標(biāo)準
- 《社群運營》全套教學(xué)課件
- GB/T 18029.8-2024輪椅車第8部分:靜態(tài)強度、沖擊強度及疲勞強度的要求和測試方法
- 中央2024年國家國防科工局重大專項工程中心面向應(yīng)屆生招聘筆試歷年典型考題及考點附答案解析
- 先心室間隔缺損護理查房專家講座
- HSE應(yīng)急預(yù)案(完整版)
- 宜賓市敘州區(qū)2022-2023學(xué)年七年級上學(xué)期期末數(shù)學(xué)試題
評論
0/150
提交評論