版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 本科畢業(yè)設(shè)計(論文)</p><p> 題 目:家庭智能網(wǎng)關(guān)的開發(fā)與應(yīng)用</p><p> 學(xué) 生:</p><p> 專 業(yè):計算機科學(xué)與技術(shù)</p><p> 年 級:</p><p> 指導(dǎo)教師:</p><p> 日 期:2008年11
2、月</p><p><b> 目 錄</b></p><p><b> 摘要3</b></p><p> Abstract4</p><p><b> 第一章綜述5</b></p><p> 1.1 什么是智能家居5</p
3、><p> 1.2 設(shè)計目標6</p><p> 第二章網(wǎng)關(guān)環(huán)境搭建7</p><p> 2.1 硬件平臺概述7</p><p> 2.1.1 S3C2410微處理器8</p><p> 2.1.2 CS8900A以太網(wǎng)控制芯片9</p><p> 2.1.3 RS-232和
4、RS-4859</p><p> 2.1.4 RJ-45以太網(wǎng)口10</p><p> 2.2 軟件平臺概述11</p><p> 2.2.1 Mizi Linux11</p><p> 2.2.2 Boa 小型Web服務(wù)器11</p><p> 2.2.3 SQLite 輕型數(shù)據(jù)庫11</
5、p><p> 2.2.4 軟件平臺構(gòu)造12</p><p> 2.3 軟件環(huán)境搭建12</p><p> 2.3.1 燒寫Mizi Linux12</p><p> 2.3.2 搭建交叉編譯環(huán)境13</p><p> 2.3.3 Boa移植13</p><p> 2.3.4 S
6、QLite移植15</p><p> 2.3.5 SQLite使用方法與常用命令17</p><p> 第三章網(wǎng)關(guān)應(yīng)用程序設(shè)計與實現(xiàn)18</p><p> 3.1 建立數(shù)據(jù)庫18</p><p> 3.2 后臺程序設(shè)計與實現(xiàn)21</p><p> 3.2.1 CGI與客戶端的通訊機制21<
7、/p><p> 3.2.2 程序中讀寫SQLite數(shù)據(jù)庫26</p><p> 3.2.3 RS485串口讀寫30</p><p> 3.2.4 指令格式定義35</p><p> 3.2.5 CGI腳本舉例37</p><p> 3.3 前臺網(wǎng)頁設(shè)計與實現(xiàn)40</p><p>
8、 3.3.1 HTML簡介40</p><p> 3.3.2 CSS簡介42</p><p> 3.3.3 JavaScript簡介46</p><p> 3.3.4 Ajax技術(shù)50</p><p> 第四章網(wǎng)關(guān)使用說明書57</p><p> 4.1 產(chǎn)品概述57</p>&
9、lt;p> 4.2 使用說明58</p><p> 4.2.1 用戶登陸58</p><p> 4.2.2 主界面59</p><p> 4.2.3 家電控制59</p><p> 4.2.4 系統(tǒng)設(shè)置64</p><p><b> 第五章結(jié)論72</b></
10、p><p><b> 參考文獻73</b></p><p><b> 附錄74</b></p><p> 附錄A:外文資料翻譯—原文部分74</p><p> 附錄B:外文資料翻譯—譯文部分78</p><p> 附錄C:光盤資料說明82</p>
11、<p> 家庭智能網(wǎng)關(guān)的開發(fā)與應(yīng)用</p><p><b> 摘要</b></p><p> 家庭網(wǎng)關(guān)是家庭網(wǎng)絡(luò)的核心部件,是智能家居的主要部分,也是未來智能家居的主要發(fā)展方向。</p><p> 本項目開發(fā)的家庭智能網(wǎng)關(guān)作為家庭網(wǎng)絡(luò)的核心控制部件,用戶可通過Internet、手機等方式遠程控制各種家用電器的運行狀態(tài),如控制
12、電燈的開關(guān)、控制空調(diào)的溫度等,并且可以設(shè)置不同的情景狀態(tài)來實現(xiàn)對所有家電在不同情景狀態(tài)下的協(xié)同控制功能。同時網(wǎng)關(guān)還具備安防報警功能,對于突發(fā)狀況,網(wǎng)關(guān)會自動向用戶的手機或社區(qū)的安防中心發(fā)出警報信息,并能夠?qū)崟r抓拍現(xiàn)場照片,以彩信的方式發(fā)送到用戶的手機上。</p><p> 該網(wǎng)關(guān)系統(tǒng)的主要硬件設(shè)備包括:網(wǎng)關(guān)控制主機,信息轉(zhuǎn)發(fā)器,智能開關(guān)等。本文主要論述基于網(wǎng)關(guān)控制主機的后臺服務(wù)程序和前臺Web頁面的開發(fā)方法和應(yīng)
13、用原理。</p><p> 用戶主要通過訪問網(wǎng)關(guān)Web頁面的方式來控制網(wǎng)關(guān)發(fā)出相應(yīng)的指令以實現(xiàn)對家電等設(shè)備的控制與管理。網(wǎng)關(guān)主機的硬件基于三星S3C2410嵌入式微處理器,軟件使用Mizi公司開發(fā)的Mizi Linux嵌入式操作系統(tǒng)平臺。</p><p> 網(wǎng)關(guān)后臺方面,使用Boa作為Web服務(wù)器,SQLite作為后臺數(shù)據(jù)庫,使用C\C++來編寫CGI腳本。前臺方面,使用HTML、Ja
14、vaScript、CSS來編制Web頁面,并使用Ajax技術(shù)來實現(xiàn)客戶端(瀏覽器)與服務(wù)器端(網(wǎng)關(guān)控制主機)的數(shù)據(jù)通訊。</p><p> 關(guān)鍵詞:家庭網(wǎng)關(guān);智能家居;遠程控制;家電控制;安防報警</p><p> Development and Application of Home Intelligent Gateway</p><p><b>
15、 Abstract</b></p><p> Home gateway is a core device of home network, it’s the main part of intelligent household, it is also the major develop direction of intelligent household in the near future.<
16、;/p><p> As the core device of home network, users can control almost all kinds of appliances remotely through the Internet, mobile phone, etc, such as switch the lamp on-off, set the temperature of the air co
17、nditioner. And users can set different situations to realize the control of all the appliances at the same time in different situations. Moreover, the gateway also has security and alarm function, when there is a burst s
18、ituation, the gateway will send the alert message to user’s mobile phone or secu</p><p> The main hardware devices of this gateway system includes: gateway control host, information router, intelligent swit
19、ch, etc. This passage mainly discourse the development and application of back-end services programs and the front-end webs of the gateway.</p><p> Users can visit the web pages to control the gateway send
20、the specified commands to control and manage the appliances and other devices. The hardware of gateway host based on SAMGSUNG S3C2410 embedded MPU, the software based on Mizi Linux which developed by MIZI Research.</p
21、><p> At the back-end aspect, Boa serves as a web server and SQLite serves as a back-end database, and the CGI scripts were written in C\C++. At the front-end aspect, the web pages were written in HTML, JavaSc
22、ript and CSS, and Ajax technology was used to realize the data communication between client (Browser) and server (Gateway control host).</p><p> Key words: Home gateway; Intelligent household; Remote contro
23、l; Appliances control; Security and alarm</p><p><b> 綜述</b></p><p> 1.1 什么是智能家居</p><p> 智能建筑已經(jīng)在世界各地蓬勃地發(fā)展起來了,并成為 21 世紀建筑業(yè)發(fā)展的主流。智能建筑是集現(xiàn)代建筑技術(shù)、現(xiàn)代通信技術(shù)、現(xiàn)代控制技術(shù)、現(xiàn)代儀器儀表技術(shù)和現(xiàn)代計算
24、機技術(shù)于一體的產(chǎn)物。近年來,隨著計算機網(wǎng)絡(luò)通信技術(shù)的高速發(fā)展和人們對住居環(huán)境要求的提高,也將“智能”的概念引進到了住宅的建設(shè)當(dāng)中。</p><p> “智能”如今給業(yè)者帶來諸多的遐想……</p><p> 當(dāng)家里發(fā)生緊急求助報警時,能及時自動通過自家電話通知家人,同時通過小區(qū)計算機網(wǎng)絡(luò)通知管理中心;</p><p> 當(dāng)您不在家時,為您的住宅提供全面的安全護衛(wèi)
25、,如防盜、防火、防煤氣,發(fā)生警情能夠迅速通過自家電話及小區(qū)以太網(wǎng)絡(luò)通知有關(guān)人員進行排除,為您的生活與生命提供保障;</p><p> 盜賊入室行竊,系統(tǒng)會自動通知主人、保安或者110 報警中心,同時家中警號發(fā)出刺耳的警報聲,家中的燈光全部打開;</p><p> 不用起身就可以控制家里所有的燈并可調(diào)節(jié)亮度;外出之前只要按一個鍵就可以關(guān)上所有的燈和應(yīng)關(guān)的電器;</p>&l
26、t;p> 躺在床上就能關(guān)掉衛(wèi)生間的換氣扇;</p><p> 可以根據(jù)自己的需要調(diào)整燈光亮度并設(shè)置場景,輕觸一個按鍵就可以實現(xiàn)各個場景之間的轉(zhuǎn)換;</p><p> 每天晚上,所有的窗簾都會定時自動關(guān)閉;</p><p> 在辦公室或在出差時打開電腦上網(wǎng),家中的安全設(shè)備和家用電器立即呈現(xiàn)在你的面前;</p><p> 在炎熱的
27、夏天,你可以在下班前在辦公室通過電腦打開空調(diào),回到家里便能享受清涼;在寒冷的冬季,則可以享受到融融的溫暖?;丶仪皢与婏堨遥坏郊揖涂梢猿陨舷銍妵姷拿罪?。如果不方便使用電腦,打個電話回家一樣可以控制家電。當(dāng)你在家中,可以操起任何一部電話或免提子機來控制家中的電器;</p><p> 外出時不必擔(dān)心自家的窗戶是否關(guān)閉,一個電話或輕敲鍵盤就能隨心所愿。</p><p> 一個遙控器就可以解
28、決家中的電器進行集中控制,省去了在一堆遙控器中尋找的煩惱;</p><p> 國內(nèi)國外的新聞時事、金融信息,社區(qū)的各種通知和提供的服務(wù)可以根據(jù)您的選擇定期給您發(fā)送。</p><p> 以上所述并非是遙不可及的夢想,本項目開發(fā)的智能家庭網(wǎng)關(guān)正是為了把這些智能家居的夢想變?yōu)楝F(xiàn)實!</p><p> 您在外忙碌了一天,家里的事讓智能家居幫您做吧!</p>
29、<p><b> 1.2 設(shè)計目標</b></p><p> 如上所述,本項目開發(fā)的智能家庭網(wǎng)關(guān)正是為了實現(xiàn)智能家居控制的目標。目前,本網(wǎng)關(guān)已經(jīng)實現(xiàn)下列功能:</p><p> 對家中各個房間的電器設(shè)備的控制,如:電視、空調(diào)、DVD、音箱、窗簾等。</p><p> 配合智能開關(guān),可實現(xiàn)對各個房間電燈的控制。</p&
30、gt;<p> 網(wǎng)關(guān)具備對碼學(xué)習(xí)功能,在通過對各個家電遙控器的對碼學(xué)習(xí)后即可實現(xiàn)網(wǎng)關(guān)遠程控制功能。</p><p> 具有情景設(shè)置功能,網(wǎng)關(guān)共預(yù)設(shè)了6個情景。用戶可以點擊任一情景,即可使所有進行過情景設(shè)置的燈光設(shè)備進入相應(yīng)的狀態(tài)。</p><p> 用戶可根據(jù)自己的實際房型進行相應(yīng)的房間設(shè)置,并未每個房間添加不同的電器設(shè)備。</p><p>
31、網(wǎng)關(guān)可以設(shè)置普通用戶和超級用戶二級密碼,方便主人對網(wǎng)關(guān)核心功能的控制。</p><p> 由于智能家庭網(wǎng)關(guān)這一項目涉及的方面繁多,工程量相當(dāng)大,所以目前實現(xiàn)的功能還是相當(dāng)有限的,還有許多非常實用的功能需要進一步去開發(fā)。既便如此,整個家庭網(wǎng)關(guān)的構(gòu)建框架、構(gòu)建方法已基本形成,為后續(xù)開發(fā)奠定了基礎(chǔ)。</p><p> 由于家庭網(wǎng)關(guān)開發(fā)過程中涉及的方面過多,本文主要就基于網(wǎng)關(guān)主機平臺的后臺和前
32、臺軟件開發(fā)做詳細闡述。如無特別說明,后文所涉及的“網(wǎng)關(guān)”或“家庭網(wǎng)關(guān)”均特指網(wǎng)關(guān)主機平臺。</p><p><b> 網(wǎng)關(guān)環(huán)境搭建</b></p><p> 2.1 硬件平臺概述</p><p> 網(wǎng)關(guān)硬件平臺使用基于三星S2C2410微處理器的開發(fā)板。該開發(fā)板由一塊核心板和一塊母版構(gòu)成,如下圖:</p><p>
33、 SAMSUNG S3C2410微處理器</p><p> CS8900A以太網(wǎng)控制芯片</p><p> Hynix HY57V561620CT-H SDRAM 16M*8Bit * 2</p><p> SAMSUNG K9F1208U0B 64M*8Bit NAND Flash</p><p><b> JTAG端口
34、</b></p><p><b> RJ-45以太網(wǎng)口</b></p><p><b> RS-232串口</b></p><p><b> RS-485串口</b></p><p><b> 電源接口</b></p>&
35、lt;p> 2.1.1 S3C2410微處理器</p><p> S3C2410處理器是Samsung公司基于ARM公司的ARM920T處理器核,采用0.18um制造工藝的32位微控制器。該處理器擁有:獨立的16KB指令Cache和16KB數(shù)據(jù)Cache,MMU,支持TFT的LCD控制器,NAND閃存控制器,3路UART,4路DMA,4路帶PWM的Timer ,I/O口,RTC,8路10位ADC,Tou
36、ch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2個USB主機,1個USB設(shè)備,SD主機和MMC接口,2路SPI。S3C2410處理器最高可運行在203MHz。</p><p> ?。?)S3C2410芯片集成了大量的功能單元,包括:</p><p> 內(nèi)部1.8V,存儲器3.3V,外部I/O3.3V,16KB數(shù)據(jù)Cache,16KB指令Cache,MMU。</
37、p><p> 內(nèi)置外部存儲器控制器(SDRAM控制和芯片選擇邏輯)。</p><p> LCD控制器,一個LCD專業(yè)DMA。</p><p> 4個帶外部請求線的DMA。</p><p> 3個通用異步串行端口(IrDA1.0,16-Byte Tx FIFO and 16-Byte Rx FIFO),2通道SPI</p>&
38、lt;p> 一個多主I2C總線,一個I2S總線控制器。</p><p> SD主接口版本1.0和多媒體卡協(xié)議版本2.11兼容。</p><p> 兩個USB HOST,一個USB DEVICE(VER1.1)。</p><p> 4個PWM定時器和一個內(nèi)部定時器。</p><p><b> 看門狗定時器。</b
39、></p><p> 117個通用I/O。</p><p><b> 56個中斷源。</b></p><p><b> 24個外部中斷。</b></p><p> 電源控制模式:標準、慢速、休眠、掉電。</p><p> 8通道10位ADC和觸摸屏接口。<
40、;/p><p> 帶日歷功能的實時時鐘。</p><p><b> 芯片內(nèi)置PLL。</b></p><p> 設(shè)計用于手持設(shè)備和通用嵌入式系統(tǒng)。</p><p> 16/32位RISC體系結(jié)構(gòu),使用ARM920T CPU核的強大指令集。</p><p> 帶MMU的先進的體系結(jié)構(gòu)支持Win
41、CE、EPOC32、Linux。</p><p> 指令緩存(Cache)、數(shù)據(jù)緩存、寫緩存和物理地址TAG RAM,減小了對主存儲器帶寬和性能的影響。</p><p> ARM920T CPU核支持ARM調(diào)試的體系結(jié)構(gòu)。</p><p> 內(nèi)部先進的位控制器總線(AMBA)(AMBA2.0,AHB/APB)。</p><p><
42、b> ?。?)系統(tǒng)管理</b></p><p><b> 小端/大端存儲支持</b></p><p> 地址空間:每個BANK128MB(全部為1GB)。</p><p> 每個BANK可編程為8/16/32位數(shù)據(jù)總線。</p><p> BANK0到BANK6為固定起始地址。</p>
43、;<p> BANK7可編程BANK起始地址和大小。</p><p> 一共8個存儲器BANK。</p><p> 前6個存儲器BANK用于ROM、SRAM和其它。</p><p> 兩個存儲器BANK用于ROM、SRAM、和SDRAM(同步隨機存儲器)。</p><p> 支持等待信號用以擴展總線周期。</p&
44、gt;<p> 支持SDRAM掉電模式下的自刷新。</p><p> 支持不同類型的ROM用于啟動(NOR/NAND Flash、EEPROM和其它)。</p><p><b> ?。?)芯片封裝</b></p><p> 272-FBGA封裝</p><p> 2.1.2 CS8900A以太網(wǎng)控制
45、芯片</p><p> CS8900芯片是Cirrus Logic公司生產(chǎn)的一種局域網(wǎng)處理芯片,在嵌入式領(lǐng)域中使用非常常見。它的封裝是100-pin TQFP,內(nèi)部集成了片內(nèi)RAM、10BASE-T收發(fā)濾波器,并且提供8位和16位兩種接口。</p><p> 2.1.3 RS-232和RS-485</p><p> RS-232和RS-485均屬于串口范疇。人
46、們熟悉的RS-232串口標準出現(xiàn)較早,難免有不足之處:</p><p> 接口的信號電平值較高,易損壞接口電路的芯片,又因為與TTL 電平不兼容故需使用電平轉(zhuǎn)換電路方能與TTL電路連接。</p><p> 傳輸速率較低,在異步傳輸時,波特率為20Kbps。</p><p> 接口使用一根信號線和一根信號返回線而構(gòu)成共地的傳輸形式, 這種共地傳輸容易產(chǎn)生共模干擾
47、,所以抗噪聲干擾性弱。</p><p> 傳輸距離有限,最大傳輸距離為50英尺,實際有效距離僅為50米左右。</p><p> 由于RS-232存在上述這些不足,于是就不斷出現(xiàn)了一些新的串口接口標準,RS-485就是其中之一,它具有以下特點:</p><p> RS-485的電氣特性:邏輯“1”以兩線間的電壓差為+(0.2—6) V表示;邏輯“0”以兩線間的電
48、壓差為-(0.2—6)V表示。接口信號電平比RS-232-C降低了,就不易損壞接口電路的芯片, 且該電平與TTL電平兼容,可方便與TTL 電路連接。</p><p> RS-485的數(shù)據(jù)最高傳輸速率為10Mbps。</p><p> RS-485接口是采用平衡驅(qū)動器和差分接收器的組合,抗共模干能力增強,即抗噪聲干擾性好。</p><p> RS-485最大的通
49、信距離約為1219M,最大傳輸速率為10Mb/S,傳輸速率與傳輸距離成反比,在100Kb/S的傳輸速率下,才可以達到最大的通信距離,如果需傳輸更長的距離,需要加485中繼器。RS-485總線一般最大支持32個節(jié)點,如果使用特制的485芯片,可以達到128個或者256個節(jié)點,最大的可以支持到400個節(jié)點。</p><p> 在本網(wǎng)關(guān)的開發(fā)、應(yīng)用中,RS-232接口主要用于連接PC,以便通過超級終端等軟件來連接網(wǎng)關(guān)
50、主機進行開發(fā)、調(diào)試等工作。而RS-485接口則用于連接轉(zhuǎn)發(fā)器,網(wǎng)關(guān)發(fā)送的任何指令都通過此端口發(fā)往轉(zhuǎn)發(fā)器,并由轉(zhuǎn)發(fā)器完成指令的發(fā)送工作。</p><p> 2.1.4 RJ-45以太網(wǎng)口</p><p> 本網(wǎng)關(guān)的以太網(wǎng)口主要用于通過以太網(wǎng)絡(luò)訪問網(wǎng)關(guān)的Web頁面,同時亦可用于通過超級終端等軟件以TCP/IP的連接方式來連接開發(fā)板,這樣能進行更穩(wěn)定、更快速的文件傳輸和調(diào)試工作。</p
51、><p> 2.2 軟件平臺概述</p><p> 網(wǎng)關(guān)基于Mizi Linux嵌入式操作系統(tǒng)平臺。使用Boa作為Web服務(wù)器,使用SQLite輕型數(shù)據(jù)庫作為后臺管理數(shù)據(jù)庫。后臺CGI腳本使用C\C++編寫,前臺Web頁面則使用HTML、JavaScript和CSS編寫,利用Ajax技術(shù)實現(xiàn)前臺與后臺之間的數(shù)據(jù)通訊。</p><p> 2.2.1 Mizi Lin
52、ux</p><p> Mizi公司開發(fā)的Mizi Linux使用Linux 2.4內(nèi)核,支持S3C2410微處理器,并提供了完整的適用于S3C2410的MIZI Linux SDK,極大方便了開發(fā)人員基于2410和Mizi Linux平臺的嵌入式應(yīng)用程序開發(fā)。</p><p> 2.2.2 Boa 小型Web服務(wù)器</p><p> Boa是一個單任務(wù)的ht
53、tp web服務(wù)器,支持認證、CGI腳本等,功能比較全、性能比較高。它和傳統(tǒng)web服務(wù)器的主要區(qū)別是:它是單進程的,在接到新的http請求時并不 FORK出一個新的進程來響應(yīng),不能同時處理多個到來的連接,而且也不能將自己拷貝多個副本來處理多連接。它在內(nèi)部處理所有正在進行的http連接請求,只對單獨的CGI程序、自動文件的產(chǎn)生、自動文件的解壓等請求FORK出新進程。它的優(yōu)點是代碼簡單、速度快、適合于嵌入式應(yīng)用。</p>&l
54、t;p> 值得一提的是,Boa是一款完全開放源碼的免費軟件,用戶可以隨時從官方網(wǎng)站上獲取Boa的最新版本并編譯運行于不同的操作系統(tǒng)平臺。</p><p> 2.2.3 SQLite 輕型數(shù)據(jù)庫</p><p> SQLite是個輕型的嵌入式數(shù)據(jù)庫,同樣它也是一款源代碼級的免費軟件。SQLite不同于其他大部分的SQL數(shù)據(jù)庫引擎,因為它的首要設(shè)計目標就是簡單化:易于管理、易于使用
55、、易于嵌入其他大型程序、易于維護和配置。</p><p> 小巧、快速、穩(wěn)定是SQLite的優(yōu)勢。出色的穩(wěn)定性源于SQLite力爭做到簡單化,越簡單就越不容易出錯。也正是因為SQLite的這些優(yōu)勢,SQLite非常適合運行于資源有限的嵌入式平臺上。此外,因為SQLite數(shù)據(jù)庫幾乎不需要管理,因此對于那些無人值守運行或無人工技術(shù)支持的設(shè)備或服務(wù),SQLite是一個很好的選擇。SQLite能很好的適用于手機、PDA
56、、機頂盒等嵌入式設(shè)備,作為一個嵌入式數(shù)據(jù)庫它也能夠很好的應(yīng)用于客戶端程序。</p><p> 2.2.4 軟件平臺構(gòu)造</p><p> 如圖2-2所示,基于S3C2410和MIZI Linux平臺之上,Boa作為Web服務(wù)器擔(dān)負著與客戶端通訊的重要工作。當(dāng)接收到客戶端瀏覽器發(fā)送的HTTP請求后,Boa發(fā)送相應(yīng)的HTML、JavaScript和CSS文件到客戶端瀏覽器。用戶在瀏覽器網(wǎng)頁
57、上進行相應(yīng)互動操作后,JavaScript使用Ajax技術(shù)與Boa進行通訊,Boa會調(diào)用相應(yīng)的CGI腳本響應(yīng)用戶的請求,并發(fā)回響應(yīng)的結(jié)果。同時CGI腳本可以直接訪問、操作SQLite后臺數(shù)據(jù)庫或者網(wǎng)關(guān)IO端口來獲取相關(guān)數(shù)據(jù)或發(fā)送相應(yīng)的控制指令。</p><p> 2.3 軟件環(huán)境搭建</p><p> 2.3.1 燒寫Mizi Linux</p><p> 由
58、于Linux移植已超出本文討論范圍,故在此只給出S3C2410開發(fā)板上移植Linux系統(tǒng)的大致步驟,大致步驟如下:</p><p> 通過JTAG接口燒寫VIVI啟動代碼。</p><p> 在開發(fā)板上運行l(wèi)oad flash kernel x命令,并通過串口xmodem方式傳送Linux內(nèi)核文件(zImage),完成Linux內(nèi)核燒寫。</p><p> 在
59、開發(fā)板上運行l(wèi)oad flash root x命令,并通過串口xmodem方式傳送Linux根文件系統(tǒng)文件(root.cramfs),完成根文件系統(tǒng)燒寫。</p><p> 2.3.2 搭建交叉編譯環(huán)境</p><p> 要進行嵌入式設(shè)備應(yīng)用程序開發(fā),在x86 Linux上安裝交叉編譯環(huán)境是首要條件。</p><p> 如前文所述,MIZI公司提供了完整的適用
60、于S3C2410的Mizi Linux SDK。在用于開發(fā)的x86 Linux系統(tǒng)上解壓縮SDK壓縮包后,依次安裝所有的RPM包就可以完成交叉編譯環(huán)境的安裝。安裝完成后,所有的交叉編譯工具都會存在于x86 Linux的/opt/host/armv4l/bin/目錄之下,如armv4l-unknown-linux-gcc、armv4l-unknown-linux-g++和armv4l-unknown-linux-strip等。</p
61、><p> 為了使系統(tǒng)每次啟動后用戶都能直接調(diào)用這些交叉編譯工具,需要把/opt/host/armv4l/bin/添加到系統(tǒng)路徑PATH內(nèi),具體操作步驟如下:(以Ubuntu Linux 8.04為例)</p><p> 在終端控制臺中輸入命令:sudo vi /etc/bash.bashrc</p><p> 在后面加入如下代碼:</p><
62、p> if [ -d /usr/local/arm ] ; then</p><p> PATH=/usr/local/arm/bin:"${PATH}"</p><p><b> fi</b></p><p> 在終端控制臺中輸入命令:# source /etc/profile,使新的環(huán)境變量生效</p
63、><p> 至此就完成了交叉編譯環(huán)境的安裝,讀者可以自行編寫一個簡單的Hello World程序,并嘗試使用交叉編譯器進行編譯,并將生成的二進制文件上傳至開發(fā)板進行測試。</p><p> 2.3.3 Boa移植</p><p> Boa是一款源代碼開放的免費Web服務(wù)器,其移植步驟如下:(假設(shè)已按照2.3.2節(jié)的方法成功搭建了交叉編譯環(huán)境?。?lt;/p>
64、<p> 從Boa的官方網(wǎng)站(http://www.boa.org)上獲取最新版的軟件源代碼,目前最新版為0.94.13。</p><p> 解壓下載的源代碼壓縮包。</p><p> 進入解壓目錄的src/目錄下,輸入./configure命令,生成Makefile文件。</p><p> 修改src/compat.h文件,將</p&g
65、t;<p> #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff</p><p> 修改為 #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff</p><p> 運行make命令,即可生成運行于x86 Linux平臺的Boa二進制文件。</p><p&
66、gt; 修改boa.c文件,將</p><p> if (setuid(0) != -1) {</p><p> DIE("icky Linux kernel bug!");</p><p><b> } </b></p><p> 這三行語句全部注釋掉。</p><p&
67、gt; 修改Makefile文件,將 CC = gcc</p><p> CPP = gcc -E</p><p> 改為 CC = armv4l-unknown-linux-gcc </p><p> CPP = armv4l-unknown-linux-gcc –E</p><p> 運行make clean,再運行make命令
68、,即可生成運行于ARM Linux平臺的Boa二進制文件。</p><p> 至此,能夠運行于S3C2410/Mizi Linux平臺的Boa已經(jīng)成功生成,可以將該boa二進制文件上傳至開發(fā)板。但是此時還無法啟動Boa,因為還未對Boa進行配置,需要對boa.conf文件進行相應(yīng)的配置,方法如下:</p><p> 回到x86 Linux上的Boa解壓目錄下,打開boa.conf文件,
69、修改如下配置:</p><p> Port——設(shè)置提供Web服務(wù)的端口號。這里使用默認端口號80。</p><p> User——設(shè)置以什么用戶身份訪問Web。因為需要訪問并運行CGI腳本,為了防止權(quán)限不足的問題,這里使用root作為Web訪問身份。</p><p> Group——設(shè)置訪問用戶所屬用戶組。因為嵌入式設(shè)備上無nogroup組,故這里設(shè)置成0。&
70、lt;/p><p> ErrorLog——錯誤日志存放路徑。因為在開發(fā)板上Boa放在/mnt/下,故這里設(shè)置成/mnt/error_log。</p><p> AccessLog——訪問日志存放路徑。同上,設(shè)置成/mnt/access_log。</p><p> DocumentRoot——Web根文件夾,即存放網(wǎng)站首頁HTML文件的文件夾。這里設(shè)置成/mnt。&
71、lt;/p><p> DirectoryIndex——默認首頁HTML文件文件名。這里設(shè)置成index.html。</p><p> DirectoryMaker——創(chuàng)建文件夾列表的文件夾路徑。這里設(shè)置成/mnt。</p><p> MimeTypes——設(shè)置mime.types文件路徑。這里設(shè)置為/mnt/mime.types。</p><p
72、> CGIPath——設(shè)置CGI腳本的存放路徑。這里設(shè)置為/mnt/cgi-bin。</p><p> ScriptAlias——設(shè)置CGI腳本文件夾別名。這里設(shè)置為ScriptAlias /cgi-bin/ /mnt/cgi-bin/。</p><p> 將修改好的boa.conf和mime.types(一般位于/etc/下)文件傳到開發(fā)板boa所處的同文件夾(即/mnt/
73、)下。</p><p> 逐一建立在boa.conf文件中設(shè)置的各個文件夾(包括所有涉及的子文件夾)。</p><p> 運行./boa –c .命令,正常情況下即可啟動boa??梢允褂胮s –A命令確認boa進程是否已啟動。</p><p> 用戶可以建立一個簡單的index.html文件并傳輸?shù)介_發(fā)板/mnt/文件夾下,然后在客戶端上使用瀏覽器(輸入地址:
74、http://網(wǎng)關(guān)IP地址:端口號(默認80端口可不輸))測試boa是否能正常工作。</p><p> 2.3.4 SQLite移植</p><p> SQLite是一款源代碼開放的免費輕量級數(shù)據(jù)庫軟件,其移植步驟如下:(假設(shè)已按照2.3.2節(jié)的方法成功搭建了交叉編譯環(huán)境?。?lt;/p><p> 從SQLite的官方網(wǎng)站(http://www.sqlite.or
75、g)上獲取最新版的軟件源代碼,目前最新版為3.6.5,本文使用的版本為3.5.9,兩者編譯方法相同。</p><p> 解壓下載的源代碼壓縮包,假設(shè)解壓在文件系統(tǒng)根目錄下(/)。</p><p> 在文件系統(tǒng)根目錄下建立一個文件夾以存放生成的文件:mkdir /sqlite-arm。</p><p> 進入解壓目錄,運行命令./configure --host
76、=armv4l-unknown-linux --prefix=/sqlite-arm --disable-tcl,即可在解壓目錄下生成適用于ARM Linux平臺的Makefile文件。</p><p> 運行make命令,系統(tǒng)就會利用交叉編譯器來編譯SQLite。</p><p> 運行make install命令。</p><p> 如果以上步驟都順利完成
77、的話,在/sqlite-arm文件夾下會生成三個文件夾:</p><p> bin/包含運行于ARM Linux平臺的sqlite3二進制文件。</p><p> include/包含sqlite3.h和sqlite3ext.h兩個頭文件。</p><p> lib/包含SQLite3適用于ARM Linux平臺的幾個鏈接庫文件,如動態(tài)鏈接庫文件libs
78、qlite3.so.0.8.6和靜態(tài)鏈接庫文件libsqlite3.a等。</p><p> 值得指出的是,在交叉編譯有關(guān)SQLite的應(yīng)用程序時,如果采用普通的動態(tài)鏈接方式編譯,則除了編譯好的二進制文件外,位于該lib/目錄下的幾個庫文件也需要上傳至開發(fā)板,該程序才能正常運行,否則會因為找不到相應(yīng)的SQLite鏈接庫文件而無法運行。所以為了避免麻煩,在編譯ARM版本的SQLite應(yīng)用程序時一般采用靜態(tài)鏈接的方
79、式進行編譯,這樣生成的二進制文件雖然比較大,但卻不需要提供額外的SQLite鏈接庫文件。</p><p> 此外因為編譯生成的sqlite二進制文件和庫文件libsqlite3.so.0.8.6中包含有調(diào)試信息,所以文件體積比較大,可以使用strip工具剝離調(diào)試信息,方法如下:</p><p> 進入/sqlite-arm,運行armv4l-unknown-linux-strip bi
80、n/sqlite3命令和armv4l-unknown-linux-strip lib/libsqlite3.so.0.8.6命令來剝離調(diào)試信息,生成體積較小的二進制文件。</p><p> 至此,就完成了ARM Linux平臺的SQLite的編譯。在實際的嵌入式開發(fā)過程中,一般不直接在開發(fā)板上使用sqlite3程序來操作和管理數(shù)據(jù)庫,為了方便操作,一般都在x86 Linux上建立數(shù)據(jù)庫并添加相應(yīng)的數(shù)據(jù)表和數(shù)據(jù),
81、并將生成的數(shù)據(jù)庫文件上傳至開發(fā)板。所以有必要再編譯一個能夠運行于x86 Linux平臺的SQLite程序,以方便在x86 Linux上操作數(shù)據(jù)庫文件。</p><p> 要編譯能夠運行于x86 Linux平臺的SQLite方法更為簡單,依次按照上述的ARM版本編譯方法執(zhí)行到第6步即可,其中需要注意:跳過第3步;在第4步中只需運行./configure命令,無需其它開關(guān)參數(shù)。這樣就完成了x86版SQLite的編譯
82、,而且在執(zhí)行make install命令后,x86版的sqlite3二進制文件被存放在/usr/local/bin/目錄下,而x86版的鏈接庫文件則存放在/usr/local/lib/目錄下,由于這兩個路徑都默認存在于PATH環(huán)境變量中,所以用戶可以直接調(diào)用sqlite3命令或相應(yīng)的sqlite鏈接庫文件,相當(dāng)方便。</p><p> 2.3.5 SQLite使用方法與常用命令</p><p
83、> 完成了x86 Linux版SQLite的編譯后,有必要簡單介紹一下SQLite的使用方法和常用命令,以方便日常數(shù)據(jù)庫創(chuàng)建、修改、調(diào)試和維護。</p><p> 可以使用sqlite3 test.db命令進入sqlite3的命令行操作界面。如果不存在test.db文件則創(chuàng)建之,反之則打開之。成功進入sqlite3命令行界面后會顯示如下信息:</p><p> SQLite v
84、ersion 3.5.9</p><p> Enter ".help" for instructions</p><p><b> sqlite></b></p><p> 在sqlite>提示符后就可輸入常規(guī)的SQL語句,并以分號(;)結(jié)尾,回車即可執(zhí)行相應(yīng)的SQL語句。如sqlite> selec
85、t * from test;查詢test表中所有數(shù)據(jù)記錄。</p><p> 除了常規(guī)SQL語句外,SQLite還內(nèi)置了一些指令方便對數(shù)據(jù)庫的管理,如下:</p><p> .databases 列出數(shù)據(jù)庫文件名</p><p> .tables ?PATTERN? 列出?PATTERN?匹配的表名</p><p> .i
86、mport FILE TABLE 將文件中的數(shù)據(jù)導(dǎo)入的文件中</p><p> .dump ?TABLE? 生成形成數(shù)據(jù)庫表的SQL腳本</p><p> .output FILENAME 將輸出導(dǎo)入到指定的文件中</p><p> .output stdout 將輸出打印到屏幕</p><p> .mode M
87、ODE ?TABLE? 設(shè)置數(shù)據(jù)輸出模式(csv,html,tcl…)</p><p> .nullvalue STRING 用指定的串代替輸出的NULL串</p><p> .read FILENAME 執(zhí)行指定文件中的SQL語句</p><p> .schema ?TABLE? 打印創(chuàng)建數(shù)據(jù)庫表的SQL語句</p>&l
88、t;p> .separator STRING 用指定的字符串代替字段分隔符</p><p> .show 打印所有SQLite環(huán)境變量的設(shè)置</p><p> .help 顯示所有的可用命令和幫助信息</p><p> .quit 退出命令行接口</p><p> 注:以上SQLite內(nèi)置指令前全部有一
89、個“.”,且指令后也無需加分號;只有執(zhí)行常規(guī)的SQL語句時語句后才需要添加分號。</p><p> 網(wǎng)關(guān)應(yīng)用程序設(shè)計與實現(xiàn)</p><p> 完成了網(wǎng)關(guān)環(huán)境的搭建,下面就將進入網(wǎng)關(guān)開發(fā)的重點——應(yīng)用程序的設(shè)計與實現(xiàn)。這里所指的“應(yīng)用程序”當(dāng)然包括后臺的CGI腳本和前臺的由HTML、JavaScript和CSS文件構(gòu)成的Web頁面,本章將就這兩部分程序的開發(fā)做出較為詳細的闡述。</
90、p><p> 在開始討論前,有必要事先規(guī)定一下各種文件存放的目錄結(jié)構(gòu),因為無論在CGI腳本還是Web頁面的編寫中都需要大量使用相對路徑來操作數(shù)據(jù)庫或讀取圖片文件。文件存放的目錄結(jié)構(gòu)如下:</p><p> ====================家庭網(wǎng)關(guān)目錄路徑結(jié)構(gòu)====================</p><p> /mntHTML文件、boa、bo
91、a.conf、mime.types等</p><p><b> |</b></p><p> +---cgi-binCGI腳本</p><p> +---image圖片資源</p><p> | +---img_indexindex.html使用的圖片</p><p> |
92、 +---theme1主題1</p><p> | +---theme2主題2</p><p> | \---theme3主題3</p><p> |............</p><p> +---javascriptJavaScript腳本</p><p> +---s
93、tyleCSS樣式表</p><p> \---sqlite數(shù)據(jù)庫文件</p><p><b> 3.1 建立數(shù)據(jù)庫</b></p><p> 如前文所述,網(wǎng)關(guān)使用SQLite作為后臺數(shù)據(jù)庫。該數(shù)據(jù)庫中需要保存包括網(wǎng)關(guān)設(shè)置參數(shù)、房間配置數(shù)據(jù)、電器設(shè)備遙控指令、遙控開關(guān)指令、用戶密碼信息等在內(nèi)的所有數(shù)據(jù)。</p>&l
94、t;p> 在本項目中,數(shù)據(jù)庫文件名為“gateway.db”,在開發(fā)板上存放于/mnt/sqlite文件夾下。截止目前該數(shù)據(jù)庫中共建立了以下數(shù)據(jù)表:</p><p><b> roominfo表</b></p><p> 該表用于存放房間編號和對應(yīng)的房間名稱,用于在配置房間信息時使用。</p><p> CREATE TABLE
95、roominfo (</p><p> roomid tinyint,--房間編號</p><p> roomname varchar(20));--房間名稱</p><p><b> 示例數(shù)據(jù):</b></p><p> INSERT INTO "roominfo" VALUES(1,&
96、#39;客廳');</p><p> INSERT INTO "roominfo" VALUES(2,'飯廳');</p><p><b> roomset表</b></p><p> 該表用于存放用戶的房間配置信息。在網(wǎng)關(guān)中,用戶最多可以設(shè)置16個房間,這16個房間的數(shù)據(jù)便存放于該表中。<
97、;/p><p> CREATE TABLE roomset (</p><p> id integer primary key unique check (id>=0 and id<16),--編號,0~15,共16個</p><p> roomid tinyint not null default 0);--房間編號,來自roominfo,0表示
98、未設(shè)置房間</p><p><b> 示例數(shù)據(jù):</b></p><p> INSERT INTO "roomset" VALUES(0,1);--房間0設(shè)置為“客廳”</p><p> INSERT INTO "roomset" VALUES(1,2);--房間1設(shè)置為“飯廳”</p&g
99、t;<p> appcmdlist表</p><p> 該表用于存放每一種家電設(shè)備的各條指令名稱字符串。如用于DVD控制的指令有:“開/關(guān)”、“出盒”、“播放”、“暫?!?、“停止”等。</p><p> CREATE TABLE appcmdlist (</p><p> apptype tinyint check(apptype>=0
100、and apptype<5),--家電類型,0~5</p><p> cmdindex tinyint not null,--該指令在當(dāng)前家電指令列表中的索引號</p><p> cmdname varchar(20) not null,--指令名稱,“開/關(guān)”、“播放”等</p><p> primary key(apptype,cmdindex
101、));</p><p><b> 示例數(shù)據(jù):</b></p><p> INSERT INTO "appcmdlist" VALUES(0,0,'開/關(guān)');</p><p> INSERT INTO "appcmdlist" VALUES(0,1,'靜音');<
102、;/p><p><b> appname表</b></p><p> 該表用于存放用戶已添加的家電設(shè)備的信息,以及每個家電對應(yīng)的信息轉(zhuǎn)發(fā)器編號。</p><p> CREATE TABLE appname (</p><p> apptype tinyint check(apptype>=0 and appty
103、pe<5),--家電類型</p><p> roomid tinyint,--房間編號</p><p> appid tinyint check(appid>=0 and appid<256), --家電編號,每房間可有256個家電</p><p> appname varchar(20) not null,--家電名稱</p&
104、gt;<p> routeid smallint check(routeid>=0 and routeid<16) not null,--轉(zhuǎn)發(fā)器編號</p><p> primary key(roomid,appid));</p><p><b> 示例數(shù)據(jù):</b></p><p> INSERT INTO
105、 "appname" VALUES(1,1,0,'海爾空調(diào)',14);--在客廳添加“海爾空調(diào)”</p><p> INSERT INTO "appname" VALUES(4,2,0,'北窗簾',12);--在飯廳添加“北窗簾”</p><p> appctrlinfo表</p><p&g
106、t; 該表用于存放各個家電設(shè)備已經(jīng)學(xué)習(xí)的遙控指令信息。</p><p> CREATE TABLE appctrlinfo(</p><p> appcmd int,--已學(xué)習(xí)的遙控指令,4個字節(jié)長度</p><p> cmdindex tinyint,--該指令在當(dāng)前家電指令列表中的索引號</p><p> appid tin
107、yint check(appid>=0 and appid<256),--家電編號</p><p> roomid tinyint,--房間編號</p><p> apptype tinyint check(apptype>=0 and apptype<5),--家電類型</p><p> primary key(roomid,a
108、ppid,cmdindex));</p><p><b> 示例數(shù)據(jù):</b></p><p> INSERT INTO "appctrlinfo" VALUES(1667457891,0,0,1,1);/*客廳中“海爾空調(diào)”的“開/關(guān)”遙控指令信息*/</p><p> INSERT INTO "appc
109、trlinfo" VALUES(1734702945,0,0,2,4);/*飯廳中“北窗簾”的“開”遙控指令信息*/</p><p> switchinfo表</p><p> 該表用于存放目前已添加的燈光開關(guān)設(shè)備的信息。</p><p> CREATE TABLE switchinfo (</p><p> roomid
110、 tinyint not null,--房間編號</p><p> swid smallint check(swid>=0 and swid<4096),--遙控器地址,12位</p><p> keyid tinyint check(keyid>=0 and keyid<16),--遙控器按鍵編號,0~15</p><p> r
111、outeid tinyint check(routeid>=0 and routeid<16),--轉(zhuǎn)發(fā)器編號</p><p> swname varchar(20),--燈光開關(guān)名稱</p><p> primary key(roomid,swid,keyid,routeid,swname));</p><p><b> 示例數(shù)據(jù):
112、</b></p><p> INSERT INTO "switchinfo" VALUES(1,4,7,14,'測試燈光');--客廳中添加“測試燈光”</p><p> INSERT INTO "switchinfo" VALUES(1,2,1,14,'test');--客廳中添加“test”&l
113、t;/p><p><b> userpwd表</b></p><p> 該表用于存放用戶設(shè)置的普通密碼、超級密碼和安防密碼的md5碼。</p><p> CREATE TABLE userpwd (</p><p> pwdtype smallint primary key,--密碼類型,1-普通密碼,2-超級密碼
114、,3-安防密碼</p><p> pwd char(32));--密碼的md5碼</p><p><b> 示例數(shù)據(jù):</b></p><p> INSERT INTO "userpwd" VALUES(1,'e10adc3949ba59abbe56e057f20f883e');--普通密碼<
115、/p><p> INSERT INTO "userpwd" VALUES(2,'e10adc3949ba59abbe56e057f20f883e');--超級密碼</p><p> defvalues表</p><p> 該表用于存放網(wǎng)關(guān)的默認設(shè)置參數(shù),以便于用戶恢復(fù)出廠設(shè)置。</p><p> CR
116、EATE TABLE defvalues (</p><p> key varchar[20],--設(shè)置名</p><p> value varchar[50]);--設(shè)置默認值</p><p><b> 示例數(shù)據(jù):</b></p><p> INSERT INTO "defvalues"
117、 VALUES('userpwd','e10adc3949ba59abbe56e057f20f883e');</p><p> --默認普通密碼的md5碼</p><p> INSERT INTO "defvalues" VALUES('safepwd','e10adc3949ba59abbe56e057f20
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能家庭網(wǎng)絡(luò)外文翻譯
- EIB家庭網(wǎng)關(guān)的研究與開發(fā).pdf
- 家庭網(wǎng)關(guān)
- 嵌入式智能家庭網(wǎng)關(guān)的設(shè)計與實現(xiàn).pdf
- 畢業(yè)設(shè)計--智能樓宇設(shè)計(含外文翻譯)
- 嵌入式無線家庭網(wǎng)關(guān)的設(shè)計與應(yīng)用.pdf
- 智能家庭網(wǎng)關(guān)設(shè)計的關(guān)鍵技術(shù)研究.pdf
- 基于gsm家庭防盜畢業(yè)設(shè)計(含外文翻譯)
- 智能家庭網(wǎng)關(guān)的嵌入式軟件設(shè)計與實現(xiàn).pdf
- 基于ARM-ZigBee技術(shù)的智能家庭網(wǎng)關(guān)研究與設(shè)計.pdf
- 智能家居家庭網(wǎng)關(guān)平臺的研究與設(shè)計.pdf
- labview智能小車畢業(yè)設(shè)計(含外文翻譯)
- 智能電網(wǎng)畢業(yè)設(shè)計--智能電網(wǎng)的研究與探討(含外文翻譯)
- 基于Android的智能家居系統(tǒng)家庭網(wǎng)關(guān)的設(shè)計與實現(xiàn).pdf
- 基于家庭網(wǎng)關(guān)的家居智能控制系統(tǒng)的設(shè)計.pdf
- labview智能小車畢業(yè)設(shè)計(含外文翻譯)
- ZigBee無線家庭網(wǎng)關(guān)的設(shè)計.pdf
- 多模式家庭網(wǎng)關(guān)設(shè)計與實現(xiàn).pdf
- 數(shù)字家庭網(wǎng)關(guān)的設(shè)計與實現(xiàn).pdf
- 家庭網(wǎng)關(guān)IP QoS的設(shè)計與實現(xiàn).pdf
評論
0/150
提交評論