2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  引言2</b></p><p>  1 系統(tǒng)平臺中的硬件系統(tǒng)2</p><p>  1.1 嵌入式系統(tǒng)概述2</p><p>  1.1.1嵌入式系統(tǒng)定義2</p><p>  1.1.2嵌入式

2、系統(tǒng)的組成2</p><p>  1.1.3嵌入式系統(tǒng)的特點(diǎn)2</p><p>  1 .2系統(tǒng)平臺中的硬件系統(tǒng)3</p><p>  2 嵌入式平臺搭建4</p><p>  2.1 嵌入式系統(tǒng)的開發(fā)流程4</p><p>  2.2嵌入式Linux開發(fā)環(huán)境的建立4</p><p>

3、;  2.2.1編譯準(zhǔn)備4</p><p>  2.2.2 第一次編譯gcc5</p><p>  2.2.3 交叉編譯glibc6</p><p>  2.2.4 第二次編譯gcc6</p><p>  2.3網(wǎng)絡(luò)文件系統(tǒng)及其配置6</p><p>  3 系統(tǒng)平臺中的軟件系統(tǒng)8</p>&

4、lt;p>  3.1 Linux與嵌入式系統(tǒng)8</p><p>  3.2 Linux操作系統(tǒng)的移植9</p><p>  3.2.1 設(shè)置參數(shù)9</p><p>  3.2.2內(nèi)核編譯步驟9</p><p>  3.2.3嵌入式Linux文件系統(tǒng)的組成9</p><p>  3.3 視頻采集模塊設(shè)計(jì)

5、10</p><p>  3.3.1基于Video4Linux視頻采集的實(shí)現(xiàn)10</p><p>  3.3.2 視頻數(shù)據(jù)的壓縮11</p><p>  3.4 嵌入式Web服務(wù)器的實(shí)現(xiàn)11</p><p>  3.4.1 嵌入式Web服務(wù)器的工作原理11</p><p>  3.4.2 嵌入式Web服務(wù)器bo

6、a的移植實(shí)現(xiàn)11</p><p>  3.5溫度采集模塊13</p><p>  3.5.1 溫度模塊控制框圖13</p><p>  3.5.2 溫度監(jiān)控實(shí)現(xiàn)原理13</p><p><b>  4 測試15</b></p><p>  4.1硬件搭建的實(shí)物圖15</p>

7、<p>  4.2測試機(jī)房監(jiān)控系統(tǒng)15</p><p><b>  5.結(jié)束語17</b></p><p><b>  參考文獻(xiàn)18</b></p><p><b>  致 謝19</b></p><p><b>  附錄20</b>

8、;</p><p><b>  機(jī)房監(jiān)控系統(tǒng)設(shè)計(jì)</b></p><p>  摘 要:目前,嵌入式系統(tǒng)在視頻監(jiān)控中的應(yīng)用越來越廣泛。伴隨著網(wǎng)絡(luò)的強(qiáng)大功能,視頻監(jiān)控更側(cè)重網(wǎng)絡(luò)監(jiān)控方案,要求體積小、遠(yuǎn)程化、成本低、功耗小、操作界面人性化等。本系統(tǒng)采用ARM處理器搭建硬件平臺,嵌入式Linux內(nèi)核搭建軟件平臺,使用B/S模式,完成遠(yuǎn)程視頻監(jiān)控功能和機(jī)房溫濕度實(shí)時采集功能。

9、實(shí)時對機(jī)房內(nèi)的環(huán)境進(jìn)行視頻、溫度和濕度的監(jiān)控,并將數(shù)據(jù)轉(zhuǎn)成Web網(wǎng)頁進(jìn)行觀察。</p><p>  關(guān)鍵詞:嵌入式系統(tǒng);環(huán)境監(jiān)控;Linux;視頻服務(wù)器</p><p>  Design of Engine Room Monitoring </p><p>  Abstract:At present the embedded system in video surv

10、eillance applications more and more widely. With the powerful network functions, more emphasis on video surveillance network monitoring program, small size, low cost, long, small power consumption, operation is user-frie

11、ndly interface. This system uses the ARM processor to set up the hardware platform, embedded Linux core building of software platform, using B / S mode, complete the remote video monitoring function and room temperature

12、 and hu</p><p>  Key words: embedded system; environmental monitoring; Linux; video server</p><p><b>  引言</b></p><p>  隨著網(wǎng)絡(luò)技術(shù)和嵌入式技術(shù)的發(fā)展,利用嵌入式技術(shù)構(gòu)建遠(yuǎn)程監(jiān)控系統(tǒng)憑借體積小、遠(yuǎn)程化、成本低、功耗小、操

13、作界面人性化等特點(diǎn)已成為監(jiān)控系統(tǒng)的發(fā)展主流。監(jiān)控系統(tǒng)一般采用B/S結(jié)構(gòu),為了提高運(yùn)行效率和資源利用率,系統(tǒng)嵌入式Web是以TCP/IP協(xié)議為底層,以HTTP為應(yīng)用層的通信協(xié)議,為服務(wù)器提供了可靠的網(wǎng)絡(luò)服務(wù),并對其功能和實(shí)現(xiàn)進(jìn)行優(yōu)化,提高了傳輸速度和處理效率。監(jiān)控端試用瀏覽器通過IP地址即可訪問服務(wù)器實(shí)現(xiàn)監(jiān)控功能。根據(jù)上述原理,本文介紹基于ARM9的遠(yuǎn)程機(jī)房監(jiān)控系統(tǒng)研究,對機(jī)房進(jìn)行視頻監(jiān)控和溫濕度監(jiān)控、由于三星公司的ARM9微處理器S3C

14、2440具有體積小,功耗低、成本低、性能高以及Linux開源等優(yōu)點(diǎn),被選擇作為本系統(tǒng)嵌入式處理器,操作系統(tǒng)則是Linux。</p><p>  1 系統(tǒng)平臺中的硬件系統(tǒng)</p><p>  1.1 嵌入式系統(tǒng)概述</p><p>  1.1.1嵌入式系統(tǒng)定義</p><p>  根據(jù)IEEE(國際電氣和電子工程師協(xié)會)的定義,嵌入式系統(tǒng)是“控

15、制、監(jiān)視或輔助設(shè)備、機(jī)器和車間運(yùn)行的裝置”,這主要是從應(yīng)用上加以定義的。不過,上述定義并不能充分體現(xiàn)出嵌入式系統(tǒng)的精髓。目前,國內(nèi)一個普遍被認(rèn)同的定義是:以應(yīng)用為中心、以計(jì)算機(jī)為基礎(chǔ),軟、硬件可裁減,適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗等嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)[1]。</p><p>  1.1.2嵌入式系統(tǒng)的組成</p><p>  通常來說,嵌入式系統(tǒng)可以劃分成硬件和軟件兩部

16、分。嵌入式硬件由嵌入式微處理器、片內(nèi)周邊電路和外部設(shè)備三部分組成。嵌入式軟件一般由連接硬件和應(yīng)用程序的嵌入式操作系統(tǒng)和在其上運(yùn)行的應(yīng)用軟件構(gòu)成。</p><p>  1.1.3嵌入式系統(tǒng)的特點(diǎn)</p><p>  嵌入式系統(tǒng)具有以下幾個重要特征:</p><p> ?、傧到y(tǒng)內(nèi)核小,由于嵌入式系統(tǒng)一般應(yīng)用于小型電子裝置,系統(tǒng)資源相對有限,所以內(nèi)核較之傳統(tǒng)的操作系統(tǒng)要小

17、得多。比如,ENEA公司的OSE分布式系統(tǒng),內(nèi)核只有5KB,而Windows的內(nèi)核則要大得多。</p><p> ?、趯S眯詮?qiáng),嵌入式系統(tǒng)的個性化很強(qiáng),其中的軟件系統(tǒng)和硬件結(jié)合非常緊密,一般要針對硬件進(jìn)行系統(tǒng)的移植,同時針對不同的任務(wù),往往需要對系統(tǒng)進(jìn)行較大的更改。另外,程序的編譯下載要和系統(tǒng)相結(jié)合。</p><p> ?、矍度胧较到y(tǒng)一般沒有系統(tǒng)軟件和應(yīng)用軟件的明顯區(qū)分,不要求其功能的設(shè)計(jì)

18、及實(shí)現(xiàn)過于復(fù)雜,這樣既利于控制系統(tǒng)成本,也利于實(shí)現(xiàn)系統(tǒng)安全。</p><p>  ④高實(shí)時性的操作系統(tǒng)軟件是嵌入式軟件的基本要求,而且軟件要求固化存儲,以提高速度軟件代碼要求高質(zhì)量和高可靠性。</p><p> ?、萸度胧杰浖_發(fā)要想走向標(biāo)準(zhǔn)化,就必須使用多任務(wù)操作系統(tǒng)。嵌入式系統(tǒng)的應(yīng)用程序可以沒有操作系統(tǒng)而直接在芯片上運(yùn)行,但為了更合理的調(diào)度多任務(wù),利用系統(tǒng)資源、系統(tǒng)函數(shù),用戶必須自行選

19、配操作系統(tǒng)開發(fā)平臺。</p><p> ?、迗?zhí)行的實(shí)時性、可靠性,并減少開發(fā)時間,保障軟件質(zhì)量。嵌入式系統(tǒng)開發(fā)需要專門的開發(fā)工具和環(huán)境。由于嵌入式系統(tǒng)本身不具備自主開發(fā)能力,即使完成設(shè)計(jì)后,用戶通常也不能對其中的程序功能進(jìn)行修改,因此必須有一套基于通用計(jì)算機(jī)的開發(fā)工具和環(huán)境才能進(jìn)行開發(fā)[2]。</p><p>  1 .2系統(tǒng)平臺中的硬件系統(tǒng)</p><p>  本

20、文使用的系統(tǒng)平臺硬件功能框圖如圖1所示。該平臺采用Samsung公司的處理器S3C2410。該處理器內(nèi)部集成了ARM公司ARM920T處理器核的32位微控制器,資源豐富,帶獨(dú)立的16KB指令Cache 和16KB 數(shù)據(jù)Cache 、LCD控制器、RAM控制器、NAND閃存控制器、3路UART 、4路DMA 、4路帶PWM的Timer、并行I/O口、8路10位ADC、 Touch Screen接口、I2C接口、I2S接口,2個USB接口控

21、制器、2路SPI主頻最高可達(dá)203MHz。在處理器豐富資源的基礎(chǔ)上,還進(jìn)行了相關(guān)的配置和擴(kuò)展,平臺配置了16MB16位的Flash和64MB32位的SDRAM。通過以太網(wǎng)控制器芯片DM9000E擴(kuò)展了一個網(wǎng)口,另外引出了一個串行接口和一個HOST USB接口。在視頻監(jiān)控方面,通過在USB接口上外接一個帶USB口的攝像頭,將采集到的視頻圖像數(shù)據(jù)放入輸入緩沖區(qū)中。然后,保存成文件的形式,或者運(yùn)行移植到平臺上的圖像處理程序,對緩沖的圖像數(shù)據(jù)直

22、接進(jìn)行相關(guān)處理,再保存并打成UDP包最后通過網(wǎng)絡(luò)接口將圖像發(fā)送到Internet上,實(shí)現(xiàn)凸顯的網(wǎng)絡(luò)傳輸和視頻的遠(yuǎn)程監(jiān)控</p><p><b>  圖1:硬件功能框圖</b></p><p><b>  2 嵌入式平臺搭建</b></p><p>  2.1 嵌入式系統(tǒng)的開發(fā)流程</p><p> 

23、 在嵌入式系統(tǒng)開發(fā)中,根據(jù)用戶的應(yīng)用需求,首先選擇相應(yīng)的嵌入式處理器及外圍接口電路來搭建硬件平臺,然后選擇合適的嵌入式操作系統(tǒng),在此基礎(chǔ)上進(jìn)行相應(yīng)的用戶應(yīng)用程序開發(fā),最后是整個系統(tǒng)的調(diào)試運(yùn)行。系統(tǒng)開發(fā)流程如圖2所示:</p><p>  圖2:嵌入式系統(tǒng)開發(fā)流程圖</p><p>  2.2嵌入式Linux開發(fā)環(huán)境的建立</p><p><b>  2.2

24、.1編譯準(zhǔn)備</b></p><p>  建立和安裝交叉開發(fā)環(huán)境通常是在開發(fā)嵌入式軟件之前要做的第一件事情。因?yàn)榍度胧匠绦虻木幾g和連接與通常的Linux程序開發(fā)不同,在嵌入式系統(tǒng)中,由于其硬件能力所限,不可能在嵌入式系統(tǒng)上安裝編譯器和連接器,然后在嵌入式系統(tǒng)上編寫代碼、編譯并連接程序。于是就出現(xiàn)了交叉編譯器(cross-compiler)。交叉編譯器是指運(yùn)行在某臺功能足夠強(qiáng)大的宿主機(jī)(host)上,可

25、用來編譯某個源程序,然后生成針對特定目標(biāo)平臺(target)的代碼的編譯器。除了交叉編譯器,在開發(fā)過程還需要以下幾種工具:</p><p> ?、傧嚓P(guān)二進(jìn)制工具(連接器、歸檔工具、符號剝離器等)。</p><p> ?、卺槍δ繕?biāo)平臺的C頭文件。不同的目標(biāo)平臺具有自身特有的函數(shù)庫及對應(yīng)的頭文件,在宿主機(jī)上,需要保留一份針對該目標(biāo)平臺的頭文件,以便用來交叉編譯C程序。</p>&

26、lt;p> ?、坩槍δ繕?biāo)平臺的C函數(shù)庫。和頭文件一樣,在宿主機(jī)上,要保留一份針對特定目標(biāo)平臺的函數(shù)庫,以便連接生產(chǎn)最終的目標(biāo)程序。</p><p>  以上這些開發(fā)嵌入式系統(tǒng)軟件所使用的工具通常就被稱為交叉開發(fā)鏈或交叉開發(fā)環(huán)境。目前,開發(fā)嵌入式Linux系統(tǒng)首選的開發(fā)工具是自由軟件基金組織 FSF(Free Software Foundation)提供的GNU開發(fā)工具。GNU開發(fā)工具己經(jīng)集成到各Linux發(fā)

27、行版中,它與Linux內(nèi)核一脈相承,作為開發(fā)Linux內(nèi)核及應(yīng)用軟件的標(biāo)準(zhǔn)開發(fā)工具,因?yàn)槠湫矢?、功能?qiáng)大而被移植到多種平臺之上??缙脚_的GNU開發(fā)工具鏈組件包括:二進(jìn)制工具binutils,編譯器gcc,c函數(shù)庫glibc以及Linux內(nèi)核頭文件。</p><p>  交叉編譯環(huán)境的建立步驟如下:</p><p> ?、傧螺d源代碼:下載包括binutils、gcc、glibc以Linux

28、內(nèi)核的源代碼(glibc和內(nèi)核源代碼的版本必須與目標(biāo)機(jī)器實(shí)際使用的版木保持一致),并設(shè)定環(huán)境變量prefix,指定可執(zhí)行程冷的安裝路徑。</p><p> ?、诰幾gbinutils</p><p>  運(yùn)行configure文件,并使用--prefix=$PREFIX參數(shù)指定安裝路徑,使用--target=arm-linux參數(shù)指定目標(biāo)機(jī)類型,然后執(zhí)行 make install。</

29、p><p> ?、叟渲肔inux內(nèi)核文件</p><p>  首先執(zhí)行make mrproper進(jìn)行清理工作,然后執(zhí)行 make config arch=arm(或 make menuconfig/xconfig arch=arm)進(jìn)行配置,這一步需要根據(jù)目標(biāo)機(jī)的實(shí)際情況進(jìn)行詳細(xì)的配置。</p><p>  配置完成之后,需要將內(nèi)核文件拷貝到安裝目錄:</p>

30、;<p>  #cp -dr include/asm-arm $PREFIX/arm-linux/include/asm</p><p>  #cp -dr include/linux-arm $PREFIX/arm-linux/include/linux</p><p>  2.2.2 第一次編譯gcc</p><p>  首先運(yùn)行configure

31、文件,使用-prefix=$PREFIX參數(shù)指定安裝路徑,使用--target=arm-linux參數(shù)指定目標(biāo)機(jī)類型,并使用--disable-threads、--disable-shared、--enable-languages=c參數(shù),然后執(zhí)行 make install。這樣將生產(chǎn)一個最簡單的gcc。由于編譯整個gcc。是需要目標(biāo)機(jī)的glibc庫的,它現(xiàn)在還不存在,因此需要首先產(chǎn)生一個最簡單的gcc,它只需要具備編譯目標(biāo)機(jī)glibc

32、庫的能力即可。</p><p>  2.2.3 交叉編譯glibc</p><p>  這個步驟生成的代碼是針對目標(biāo)機(jī)CPU的,屬于一個交叉編譯過程。該過程要用到Linux內(nèi)核頭文件,默認(rèn)路徑為 $PREFIX/arm-linux/sys-linux,因而需要在$PREFIX/arm-linux中建立一個名為sys-linux的軟連接,使其指向內(nèi)核頭文件所在的include目錄;也可以在接

33、下來要執(zhí)行的configure命令中使用--with-headers參數(shù)指定Linux內(nèi)核頭文件的實(shí)際路徑。</p><p>  configure的運(yùn)行參數(shù)設(shè)置如下:</p><p>  CC=arm-linux-gcc</p><p>  ./configure --prefix==$PREFIX/arm-linux --host=arm-linux --ena

34、ble-add-ones</p><p>  最后,按以上配置執(zhí)行configure和 make install,glibc的交叉編譯過程就完成了,glibc的安裝路徑設(shè)置為$PREFIXARCH=arm/arm-linux,如果此處設(shè)置不當(dāng),第二次編譯gcc時可能找不到glibc的頭文件和庫。</p><p>  2.2.4 第二次編譯gcc</p><p>  

35、運(yùn)行configure,參數(shù)設(shè)置為</p><p>  --prefix=$PREFIX --target=arm-linux --enable-language=c,c++</p><p>  運(yùn)行 make install,到此整個交叉編譯環(huán)境就完全生成。</p><p>  2.3網(wǎng)絡(luò)文件系統(tǒng)及其配置</p><p>  在測試應(yīng)用

36、程序的時候,如果把應(yīng)用程序打包壓縮并燒寫進(jìn)flash,是比較麻煩的。因此,采用NFS文件系統(tǒng)來調(diào)試。Linux內(nèi)核可以從一個遠(yuǎn)程N(yùn)FS(網(wǎng)絡(luò)文件系統(tǒng))服務(wù)器上掛載根文件系統(tǒng),這樣就大大加快了開發(fā)速度,避免不斷地更新目標(biāo)板上的文件系統(tǒng)內(nèi)容和不斷地重新啟動目標(biāo)板。</p><p>  NFS服務(wù)器共享的文件系統(tǒng)目錄可以被網(wǎng)絡(luò)中的其他機(jī)器以NFS客戶端的身份掛載到本地目錄,然后當(dāng)作本地文件系統(tǒng)一樣來訪問和使用[3]。&

37、lt;/p><p>  把編譯好的程序通過NFS服務(wù)共享出去,而目標(biāo)板把該共享目錄通過NFS掛載到本地目錄。開發(fā)時,若重新編譯了服務(wù)器中的內(nèi)容,則在目標(biāo)板上也同時更新了,這樣就使得開發(fā)和調(diào)試變得方便。NFS服務(wù)的建立過程如下:</p><p><b>  NFS服務(wù)器配置</b></p><p>  Step1:設(shè)置共享目錄 </p>

38、<p>  以 root 身份登錄 Fedora9,在命令行運(yùn)行: </p><p>  #gedit /etc/exports </p><p>  編輯nfs 服務(wù)的配置文件(注意:第一次打開時該文件是空的),添加以下內(nèi)容: </p><p>  /opt/FriendlyARM/mini6410/linux/root_qtopia_qt4 *(

39、rw,sync,no_root_squash) </p><p><b>  其中: </b></p><p>  /opt/FriendlyARM/mini6410/linux/root_qtopia_qt4 表示將要共享的的目錄,它可以作為發(fā)板的根文件系統(tǒng)通過 nfs 掛接; </p><p>  * 表示所有的客戶機(jī)都可以掛接此目錄 &

40、lt;/p><p>  rw 表示掛接此目錄的客戶機(jī)對該目錄有讀寫的權(quán)力 </p><p>  no_root_squash 表示允許掛接此目錄的客戶機(jī)享有該主機(jī)的 root 身份 </p><p>  Step2: 啟動 NFS服務(wù) </p><p>  可以通過命令行和圖形界面兩種方式啟動 NFS 服務(wù),我們建立 NFS 服務(wù)的目的是通過

41、網(wǎng)絡(luò)對外提供目錄共享服務(wù),但默認(rèn)安裝的Fedora系統(tǒng)開啟了防火墻,這會導(dǎo)致NFS 服務(wù)無法正常使用。因此先關(guān)閉防火墻,在命令行輸入“l(fā)okkit”命令,打開防火期設(shè)置界面,如圖3所示: </p><p><b>  圖3 :防火墻設(shè)置</b></p><p>  通過命令啟動和停止 nfs 服務(wù) </p><p><b>  在命令

42、行下運(yùn)行: </b></p><p>  #/etc/init.d/nfs start </p><p>  這將啟動 nfs 服務(wù)。 </p><p>  使用這個命令可以停止nfs 服務(wù): </p><p>  #/etc/init.d/nfs stop </p><p>  3 系統(tǒng)平臺中的軟件系統(tǒng)

43、</p><p>  3.1 Linux與嵌入式系統(tǒng)</p><p>  Linux具有內(nèi)核小,效率高,源代碼開放,內(nèi)核直接提供網(wǎng)絡(luò)支持等優(yōu)點(diǎn)。但嵌入式系統(tǒng)的硬件資源畢竟有限,因此不能直接把Linux作為操作系統(tǒng),需要針對具體的應(yīng)用通過配置內(nèi)核、裁減shell和嵌入式C庫對系統(tǒng)定制,使整個系統(tǒng)能夠存放到容量較小的Flash中。Linux的動態(tài)模塊加載,使Linux的裁減極為方便,高度模塊化

44、的部件使添加非常容易。正因?yàn)長inux的上述優(yōu)點(diǎn),在本文實(shí)現(xiàn)的平臺上使用的操作系統(tǒng)是對Linux進(jìn)行了定制的Armlinux 它啟用了MMU(內(nèi)存管理單元),是針對支持MMU的處理器設(shè)計(jì)的。</p><p>  Linux用于嵌入式環(huán)境,就必須修改Linux滿足嵌入式系統(tǒng)的要求。主要集中在兩個方面:一是體積,二是實(shí)時性。與目前眾多商業(yè)的RTOS(實(shí)時操作系統(tǒng))相比,嵌入式Linux擁有以下的特點(diǎn):</p&g

45、t;<p>  (1)完全開放源代碼</p><p>  嵌入式Linux開放源代碼,這使得學(xué)習(xí),修改,剪裁Linux成為可能,嵌入式系統(tǒng)的設(shè)計(jì)者可以對嵌入式Linux進(jìn)行二次開發(fā),去掉操作系統(tǒng)的附加功能,只保留需要的操作系統(tǒng)功能,并且可以根據(jù)實(shí)際應(yīng)用的需要優(yōu)化操作系統(tǒng)的源代碼,從而降低整個操作系統(tǒng)的開銷與消耗。</p><p><b>  (2)成本低</b

46、></p><p>  GPL協(xié)議保證了源自Linux的嵌入式Linux也是開放源代碼的自由軟件,也就是說,只要遵守GPL協(xié)議、嵌入式Linux操作系統(tǒng)的源代碼可以自由獲得。另外,大多數(shù)嵌入式Linux使用的開發(fā)工具也是遵守GPL協(xié)議的,同樣可以免費(fèi)獲得。</p><p>  (3)豐富的實(shí)用軟件支持</p><p>  Linux操作系統(tǒng)是一個完整的,功能強(qiáng)

47、大的操作系統(tǒng),提供了大量的實(shí)用程序和各種各樣的應(yīng)用軟件。這些軟件的正確性和有效性都經(jīng)過了實(shí)際應(yīng)用檢驗(yàn),可以根據(jù)需要,利用Linux提供的豐富的軟件支持,迅速構(gòu)建嵌入式應(yīng)用的軟件環(huán)境。這樣可以極大地減小嵌入式系統(tǒng)軟件開發(fā)的時間和費(fèi)用,提高系統(tǒng)的可靠性。</p><p>  (4)嵌入式Linux的可移植性</p><p>  將Linux移植到新的微處理器體系非常快捷,一般是將其移植到一種新

48、型的目標(biāo)板,其中包含有獨(dú)特的外設(shè)。大部分的內(nèi)核代碼都是相同的,因?yàn)樗鼈兣c微處理器無關(guān),所以,移植的工作多集中在一些存儲器管理及中斷處理程序上。一但完成,將非常穩(wěn)定。</p><p>  (5)嵌入式Linux的應(yīng)用</p><p>  嵌入式系統(tǒng)的涵蓋面是非常廣泛的,其中,家電市場包括機(jī)頂盒、數(shù)字電視、可視電話、家庭網(wǎng)絡(luò)等信息家電;工業(yè)市場包括工業(yè)控制設(shè)備、儀器;商用市場包括掌上電腦、客戶

49、機(jī)、POS終端等;通信市場包括WAP手機(jī)、無線PDA等[4]。</p><p>  3.2 Linux操作系統(tǒng)的移植</p><p>  3.2.1 設(shè)置參數(shù)</p><p>  修改內(nèi)核的Makefile文件。包括指定交叉編譯器和設(shè)置環(huán)境變量。</p><p>  #vi Makefile</p><p>  修改

50、如下:ARCH=arm</p><p>  CROSS_COMPILE=arm-linux-gcc</p><p>  #export PATH=交叉編譯器所在目錄:$PATH</p><p>  3.2.2內(nèi)核編譯步驟</p><p><b>  內(nèi)核配置</b></p><p>  #mak

51、e menuconfig</p><p>  選中與Mini2440相關(guān)的配置。</p><p>  配置:CONFIG_FB</p><p>  內(nèi)核編譯:#make zImage ;開始編譯內(nèi)核,也可以直接使用 make 命令 。</p><p>  編譯結(jié)束后,會在arch/arm/boot目錄下生成 Linux 內(nèi)核映象文件 zIma

52、ge,把zImage 下載到開發(fā)板測試。 </p><p>  3.2.3嵌入式Linux文件系統(tǒng)的組成</p><p>  嵌入式Linux的文件系統(tǒng)和標(biāo)準(zhǔn)Linux文件系統(tǒng)的目錄結(jié)構(gòu)相似。Mini6410開發(fā)板商提供了一個簡單的基本文件系統(tǒng)壓縮文件。下面是對目錄中的各個文件描述。</p><p>  /bin:包含著所有的標(biāo)準(zhǔn)命令和應(yīng)用程序;</p>

53、<p>  /dev:包含外設(shè)的文件接口,在Linux下,文件和設(shè)備采用同種方法進(jìn)行訪問,系統(tǒng)上的每個設(shè)備都在/dev里有一個對應(yīng)的設(shè)備文件;</p><p>  /etc:這個目錄包含著系統(tǒng)設(shè)置文件和其他的系統(tǒng)文件,例如/etc/fstab 記錄了啟動時要mount的filesystem;</p><p>  /home:存放用戶主目錄;</p><p

54、>  /lib(library):存放系統(tǒng)最基本的庫文件;</p><p>  /mnt:用戶臨時掛載文件系統(tǒng)的地方;</p><p>  /Proc:Linux提供的一個虛擬系統(tǒng),系統(tǒng)啟動時在內(nèi)存中產(chǎn)生,用戶可以直接通過訪問這些文件來獲得系統(tǒng)信息;</p><p>  /sbin:這個目錄存放著系統(tǒng)管理程序,如fsck、mount等;</p>

55、<p>  /tmp:存放不同的程序執(zhí)行時產(chǎn)生的臨時文件;</p><p>  /usr:存放用戶應(yīng)用程序和文件;</p><p>  /root:超級用戶主目錄</p><p>  3.3 視頻采集模塊設(shè)計(jì)</p><p>  視頻采集模塊的任務(wù)是從USB攝像頭設(shè)備中讀取視頻幀數(shù)據(jù),并將獲取的視頻數(shù)據(jù)壓縮成一定格式保存。它是后邊圖

56、像處理,視頻監(jiān)控的基礎(chǔ)。USB攝像頭屬于視頻類設(shè)備,在目前的Linux核心中,視頻部分的標(biāo)準(zhǔn)是Video for Linux。這個標(biāo)準(zhǔn)其實(shí)定義了一套接口,內(nèi)核、驅(qū)動、應(yīng)用程序以這個接口為標(biāo)準(zhǔn)進(jìn)行交流。本設(shè)計(jì)采用的是mjpg-streamer視頻服務(wù)器,該視頻服務(wù)器是一個支持V4l2芯片的視頻服務(wù)軟件[5]。 </p><p>  3.3.1基于Video4Linux視頻采集的實(shí)現(xiàn)</p&

57、gt;<p>  基于V4L的視頻采集流程圖,如圖4所示:</p><p>  3.3.2 視頻數(shù)據(jù)的壓縮</p><p>  攝像頭采集到的視頻數(shù)據(jù)可以直接顯示,但是未經(jīng)過壓縮的圖像數(shù)據(jù)量較大,由于本監(jiān)控系統(tǒng)要將采集到的視頻圖像通過網(wǎng)絡(luò)傳輸,未經(jīng)壓縮的數(shù)據(jù)勢必對傳輸介質(zhì),傳輸方法和存儲介質(zhì)提出更高的要求。為了便于傳輸和存儲,必須對視頻數(shù)據(jù)進(jìn)行壓縮處理。</p>

58、<p>  本系統(tǒng)使用的JPEG壓縮編碼。JPEG標(biāo)準(zhǔn)是一個適用范圍較廣的靜態(tài)圖像數(shù)據(jù)壓縮標(biāo)準(zhǔn), 既可用于灰度圖像又可以彩色圖像。和相同質(zhì)量的其它常用文件格式(如BMP,GIF,TIFF 等)相比,JPEG是目前壓縮靜態(tài)圖像中比例最高的,廣泛用于多媒體和網(wǎng)絡(luò)程序中[6]。</p><p>  3.4 嵌入式Web服務(wù)器的實(shí)現(xiàn)</p><p>  3.4.1 嵌入式Web服務(wù)器的

59、工作原理</p><p>  嵌入式Web服務(wù)器器是指將web服務(wù)器引入到嵌入式系統(tǒng)中,在相應(yīng)的硬件平臺和軟件系統(tǒng)的支持下,根據(jù)應(yīng)用的需要實(shí)現(xiàn)通用的web服務(wù)器的全部或者部分功能。嵌入式Web服務(wù)器仍然是以TCP/IP協(xié)議為底層的, 在該web中使用的應(yīng)用層的通信協(xié)議是HTTP協(xié)議,通過HTTP協(xié)議實(shí)現(xiàn)客戶端(一般為瀏覽器)和嵌入式web服務(wù)器的信息交換。嵌入式Web服務(wù)器的工作原理,如圖5所示:</p&g

60、t;<p>  圖5: 嵌入式Web服務(wù)器的工作原理</p><p>  3.4.2 嵌入式Web服務(wù)器boa的移植實(shí)現(xiàn)</p><p>  1.編譯boa程序。</p><p>  首先下載boa源代碼并解壓到linux系統(tǒng)目錄下,使用下面步驟完成:</p><p>  # tar -xzvf boa-0.94.13.tar.

61、gz</p><p>  # cd boa-0.94.13/src</p><p>  # ./configure</p><p>  這樣會在boa-0.94.13/src目錄下生成Makefile,修改Makefile,修改如下:</p><p>  CC = arm-linux-gcc</p><p>  CP

62、P =arm-linux-gcc -E</p><p>  然后進(jìn)行編譯,編譯步驟如下:</p><p><b>  # make</b></p><p>  # arm-linux-strip boa //去掉調(diào)試信息,減小boa體積</p><p>  這樣在boa-0.94.13/src目錄下生成boa應(yīng)用程序,

63、把生成的boa應(yīng)用程序下載到開發(fā)板上Linux系統(tǒng)中的/bin目錄下,讓boa在系統(tǒng)啟動時候自動運(yùn)行,這樣在開發(fā)板上就移植了boa服務(wù)器。要使服務(wù)器安指定的要求運(yùn)行,還需要配置文件boa.conf[7]。</p><p><b>  2.boa的配置</b></p><p>  在boa源代碼目錄下已有一個實(shí)例配置文件boa.conf,修改boa.conf,把修改后的

64、文件復(fù)制到開發(fā)板文件系統(tǒng)/etc/boa/目錄下。修改的主要內(nèi)容,如表1所示:</p><p>  表1 boa.conf配置選項(xiàng)及含義</p><p><b>  3.5溫度采集模塊</b></p><p>  3.5.1 溫度模塊控制框圖</p><p><b>  圖6:溫度監(jiān)控框圖</b>&

65、lt;/p><p>  3.5.2 溫度監(jiān)控實(shí)現(xiàn)原理</p><p>  1.溫度監(jiān)控模塊的電路設(shè)計(jì),本系統(tǒng)溫度傳感器采用DS18B20,測溫范圍-55℃~+125℃,固有測溫分辨率0.5℃,可以直接接到S3C2440的CPU的普通I/O口上。如圖3.5-2,將VDD 接入到+5V GND 接入到板子的GND DQ為數(shù)據(jù)接入到GPF0端口。注意DQ需要被上拉,如圖3.5-3。其中micro板上

66、資源如圖3.5-4,剛好資源分別為1 3 9 管教 EINT0和GPF0同管腳。</p><p>  圖7:DS18B20的引腳圖 圖8:溫度傳感電路圖</p><p>  圖9:開發(fā)板串口引腳圖</p><p>  編寫溫度傳感器DS18B20的驅(qū)動程序,詳細(xì)程序見附錄。DS18B20工作過程一般遵循以下

67、協(xié)議:初始化——ROM操作命令——RAM操作命令——處理數(shù)據(jù)。將編好的驅(qū)動程序編進(jìn)內(nèi)核里面,對應(yīng)的設(shè)備名稱為/dev/mini2440-ds18b20。</p><p>  表2: DS18B20 ROM指令表</p><p>  表3:DS18B20 RAM指令表</p><p>  3.客戶端通過互聯(lián)網(wǎng)訪問嵌入式系統(tǒng)的web服務(wù)器,通過CGI程序輸出溫度。<

68、;/p><p><b>  4 測試</b></p><p>  4.1硬件搭建的實(shí)物圖</p><p>  開發(fā)板采用S3C2440,內(nèi)置嵌入式Linux系統(tǒng),配接了攝像頭,把開發(fā)板通過網(wǎng)線連入到本地網(wǎng)絡(luò),連接到服務(wù)器上,進(jìn)行Web顯示,將溫度模塊、濕度模塊接到開放板的擴(kuò)展口上,實(shí)現(xiàn)機(jī)房的監(jiān)控和管理。</p><p>  

69、4.2測試機(jī)房監(jiān)控系統(tǒng)</p><p>  首先,在電腦的IE瀏覽器上輸入開發(fā)板的IP地址,進(jìn)入機(jī)房監(jiān)控系統(tǒng)的登陸界面,輸入用戶名的密碼。</p><p>  用戶名和密碼正確后,就進(jìn)入機(jī)房監(jiān)控系統(tǒng)的主頁界面,也是視頻監(jiān)控的界面,此界面可以監(jiān)控視頻的靜態(tài)圖像和動態(tài)視頻.</p><p><b>  5.結(jié)束語</b></p>&l

70、t;p>  本系統(tǒng)的設(shè)計(jì)是在數(shù)字信息技術(shù)和網(wǎng)絡(luò)技術(shù)發(fā)展的前提下,運(yùn)用當(dāng)前的嵌入式技術(shù)和ARM技術(shù)設(shè)計(jì)的機(jī)房監(jiān)控系統(tǒng),由于采用了高性能的ARM9處理器和嵌入式Linux操作系統(tǒng),具有一定的擴(kuò)展性,可以通過適當(dāng)?shù)墓δ軘U(kuò)展來滿足用戶更高的要求。在實(shí)驗(yàn)室條件下進(jìn)行測試、調(diào)試和完善。測試結(jié)果表明,監(jiān)測系統(tǒng)能夠?qū)崟r準(zhǔn)確的采集機(jī)房視頻和溫度數(shù)據(jù),并在遠(yuǎn)程瀏覽器動態(tài)流暢顯示,實(shí)現(xiàn)了信息實(shí)時監(jiān)測,滿足了應(yīng)用的需求。本文的后續(xù)工作是在現(xiàn)有的系統(tǒng)基礎(chǔ)上

71、增加攝像頭的云臺控制功能以及嵌入式數(shù)據(jù)庫管理功能,提高系統(tǒng)的整體使用價(jià)值。 此外,本系統(tǒng)具有功能強(qiáng)、穩(wěn)定性好的特點(diǎn),而且成本低。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 俞輝.ARM嵌入式Linux系統(tǒng)設(shè)計(jì)與開發(fā).北京:機(jī)械工業(yè)出版社,2010.</p><p>  [2] 王黎明. ARM9嵌入式系統(tǒng)開發(fā)與實(shí)

72、踐. 北京航空航天大學(xué)出版社.2008.</p><p>  [3] 韋東山. 嵌入式Linux應(yīng)用開發(fā)完全手冊.北京:人民郵電出版社,2008.</p><p>  [4] 科波特. LINUX設(shè)備驅(qū)動程序(第3版).中國電力出版社,2006.</p><p>  [5] 張帆. 嵌入式Linux系統(tǒng)開發(fā)教程.北京:清華大學(xué)出版社,2010.</p>

73、<p>  [6] 楊水清. ARM嵌入式Linux系統(tǒng)開發(fā)技術(shù)詳解(珍藏版). 電子工業(yè)出版社,2010.</p><p>  [7] 弓雷. ARM嵌入式Linux系統(tǒng)開發(fā)詳解. 清華大學(xué)出版社,2010.</p><p>  [8] 王洪輝. 嵌入式系統(tǒng)Linux內(nèi)核開發(fā)實(shí)戰(zhàn)指南(ARM平臺). 電子工業(yè)出版社,2009.</p><p>  [9

74、] 劉淼. 嵌入式系統(tǒng)接口設(shè)計(jì)與Linux驅(qū)動程序開發(fā). 北京航空航天大學(xué)出版社,2006.</p><p>  [10] 凌明. 嵌入式系統(tǒng)高級C語言編程. 北京航空航天大學(xué)出版社.2011.</p><p>  [11] 羅苑棠.嵌入式Linux應(yīng)用系統(tǒng)開發(fā)(實(shí)例精講).北京:電子工業(yè)出版社,2007. </p><p>  [12] 孫弋. 基于S3C2440

75、的嵌入式Linux開發(fā)實(shí)例. 西安電子科技大學(xué)出版社,2010. </p><p>  [13] 侯殿有. ARM嵌入式C編程標(biāo)準(zhǔn)教程.北京:人民郵電出版社,2010.</p><p>  [14] 康維新. 嵌入式Linux系統(tǒng)開發(fā)與應(yīng)用.北京:機(jī)械工業(yè)出版社,2011.</p><p>  [15] 斯洛斯. ARM嵌入式系統(tǒng)開發(fā):軟件設(shè)計(jì)與優(yōu)化. 北京航空航天

76、大學(xué)出版社.2005.</p><p><b>  致 謝</b></p><p>  畢業(yè)設(shè)計(jì)的過程中遇到的很多問題都是通過向老師求助,或者在一些技術(shù)論壇上發(fā)帖子求助解決的,當(dāng)畢業(yè)設(shè)計(jì)完成時才知道自己通過畢設(shè)結(jié)識了很多的良師益友。</p><p>  在此感謝我的畢業(yè)設(shè)計(jì)指導(dǎo)老師,是他引導(dǎo)我踏入了我的研究領(lǐng)域,教給我進(jìn)行學(xué)習(xí)和科學(xué)研究的方法。

77、他除了細(xì)心指導(dǎo)我設(shè)計(jì)過程中遇到的問題以外,還嚴(yán)格督促我使我們的畢業(yè)設(shè)計(jì)能夠按期完成。在此向老師表示衷心的感謝。</p><p>  衷心感謝悉心教導(dǎo)過我的老師們和給過我無數(shù)幫助的同學(xué)們。感謝在技術(shù)論壇上給予我無私幫助的工程師們,雖然不知道他們的真實(shí)名字,但還是在此向他們表示由衷的敬意。</p><p>  特別感謝我的父母對我的關(guān)心和理解,他們的支持和期盼永遠(yuǎn)是我奮發(fā)前進(jìn)的動力。</

78、p><p>  最后感謝母校,在母校這四年的生活是我人生中最美好的一部分,祝愿母校的明天更加美好!</p><p><b>  附錄</b></p><p>  登錄用戶和密碼驗(yàn)證CGI程序:</p><p>  #include <stdio.h></p><p>  #include

79、<stdlib.h></p><p>  int main(void)</p><p><b>  {</b></p><p>  char *str_len=NULL;</p><p>  int len=0;</p><p>  char buf[100]=""

80、;</p><p>  char user[20]="";</p><p>  char passwd[20]="";</p><p>  printf("%s\r\n\r\n","Content-Type:text/html");</p><p>  prin

81、tf("<html>\n<head>\n<title>CGI3:登錄結(jié)果</title></head><br>\n");</p><p>  str_len = getenv("CONTENT_LENGTH"); </p><p>  if( (str_len==NULL)

82、|| (sscanf(str_len, "%d", &len)!=1) || (len>80) )</p><p>  printf("sorry!error!");</p><p>  fgets(buf, len+1, stdin);</p><p>  sscanf(buf, "name=%[^

83、&]&password=%s", user,passwd);</p><p>  if( (strncmp(user,"root",4)==0) && (strncmp(passwd, "111111", 6)==0) ) </p><p><b>  {</b></p>

84、<p>  printf("<script language=\"JavaScript\">self.location='/homePage.html';</script>");</p><p><b>  }</b></p><p><b>

85、  else</b></p><p>  printf("<h1>Sorry! 用戶名或密碼錯誤!");</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  DS18B20驅(qū)動程序:<

86、/p><p>  /************************************************</p><p>  硬件接法:DQ --> GPG5</p><p>  驅(qū)動用法:設(shè)備名稱:mini2440-ds18b20</p><p>  **************************************

87、***********/</p><p>  #define DQ_PIN S3C2410_GPG5</p><p>  #define DQ_PIN_OUTP S3C2410_GPIO_OUTPUT</p><p>  #define DQ_PIN_INP S3C2410_GPIO_INPUT</p><p>  #def

88、ine HIGH 1</p><p>  #define LOW 0</p><p>  //定義DS18B20ROM指令</p><p>  #define DS18B20_ReadROM 0x33 //讀ROM</p><p>  #define DS18B20_MatchROM 0x55

89、 //匹配ROM</p><p>  #define DS18B20_SkipROM 0xCC //跳過ROM</p><p>  #define DS18B20_SearchROM 0xF0 //搜索ROM</p><p>  #define DS18B20_AlarmROM 0xEC //報(bào)

90、警搜索</p><p>  //定義DS18B20存儲器操作命令</p><p>  #define DS18B20_WriteSCR 0x4E //寫暫存存儲器</p><p>  #define DS18B20_ReadSCR 0xBE //讀暫存存儲器</p><p>  #define

91、 DS18B20_CopySCR 0x48 //復(fù)制暫存存儲器</p><p>  #define DS18B20_ConvertTemp 0x44 //溫度變換</p><p>  #define DS18B20_RecallEP 0xB8 //重新調(diào)出</p><p>  #define

92、DS18B20_ReadPower 0xB4 //讀電源</p><p>  typedef unsigned char U8;</p><p>  typedef unsigned short U16;</p><p>  #define DEVICE_NAME"GT2440-ds18b20" /* 設(shè)備名稱 */&

93、lt;/p><p>  static int DS18B20_Major = 0;/* 主設(shè)備號 */</p><p><b>  U16 temp;</b></p><p>  U8 DS18B20_ID[8] = {0};</p><p>  U8 DS18B20_Init(void)</p><

94、;p><b>  {</b></p><p>  s3c2410_gpio_cfgpin(DQ_PIN, DQ_PIN_OUTP);</p><p>  s3c2410_gpio_setpin(DQ_PIN, LOW);</p><p>  udelay(700);</p><p>  s3c2410_gpio_

95、setpin(DQ_PIN, HIGH);</p><p>  udelay(4);</p><p>  s3c2410_gpio_cfgpin(DQ_PIN, DQ_PIN_INP);</p><p>  udelay(100);</p><p><b>  return 0;</b></p><p

96、><b>  }</b></p><p>  U8 DS18B20_ReadBit(void) </p><p><b>  {</b></p><p><b>  U8 dat;</b></p><p>  s3c2410_gpio_cfgpin(DQ_PIN,

97、DQ_PIN_OUTP);</p><p>  s3c2410_gpio_setpin(DQ_PIN, LOW);</p><p>  udelay(2);</p><p>  s3c2410_gpio_setpin(DQ_PIN, HIGH); //add</p><p>  s3c2410_gpio_cfgpin(DQ_PIN, DQ_P

98、IN_INP);</p><p>  udelay(10);</p><p>  if(s3c2410_gpio_getpin(DQ_PIN)!=0)</p><p><b>  dat=1;</b></p><p><b>  else </b></p><p><b

99、>  dat=0;</b></p><p>  s3c2410_gpio_cfgpin(DQ_PIN, DQ_PIN_OUTP);</p><p>  s3c2410_gpio_setpin(DQ_PIN, HIGH);//add</p><p>  udelay(50);</p><p>  return (dat);&l

100、t;/p><p><b>  }</b></p><p>  U8 DS18B20_ReadByte(void) </p><p><b>  {</b></p><p>  U8 i,j,dat;</p><p><b>  dat=0;</b><

101、;/p><p>  for(i=1;i<=8;i++)</p><p><b>  {</b></p><p>  j=DS18B20_ReadBit();</p><p>  dat=(j<<7)|(dat>>1); </p><p><b>  }<

102、;/b></p><p>  return(dat);</p><p><b>  }</b></p><p>  void DS18B20_WriteByte(U8 dat) </p><p><b>  {</b></p><p><b>  U8 j;&

103、lt;/b></p><p><b>  U8 testb;</b></p><p>  for(j=1;j<=8;j++)</p><p><b>  {</b></p><p>  testb=dat&0x01;</p><p>  dat=dat&g

104、t;>1;</p><p>  if(testb) </p><p><b>  {</b></p><p>  s3c2410_gpio_setpin(DQ_PIN, LOW);</p><p>  udelay(8);</p><p>  s3c2410_gpio_setpin(

105、DQ_PIN, HIGH);</p><p>  udelay(50);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  s3c2410_gpio_setp

106、in(DQ_PIN, LOW);</p><p>  udelay(90);</p><p>  s3c2410_gpio_setpin(DQ_PIN, HIGH);</p><p>  udelay(8);</p><p><b>  }</b></p><p><b>  }<

107、/b></p><p><b>  }</b></p><p>  void DS18B20_ReadID(void)</p><p><b>  {</b></p><p>  udelay(1);</p><p>  DS18B20_Init();</p>

108、;<p>  DS18B20_WriteByte(DS18B20_ReadROM);</p><p>  DS18B20_ID[0] = DS18B20_ReadByte();</p><p>  DS18B20_ID[1] = DS18B20_ReadByte();</p><p>  DS18B20_ID[2] = DS18B20_ReadByte

109、();</p><p>  DS18B20_ID[3] = DS18B20_ReadByte();</p><p>  DS18B20_ID[4] = DS18B20_ReadByte();</p><p>  DS18B20_ID[5] = DS18B20_ReadByte();</p><p>  DS18B20_ID[6] = DS18

110、B20_ReadByte();</p><p>  DS18B20_ID[7] = DS18B20_ReadByte();</p><p><b>  }</b></p><p>  void DS18B20_Match(void)</p><p><b>  {</b></p>&l

111、t;p>  DS18B20_WriteByte(DS18B20_MatchROM);</p><p>  DS18B20_WriteByte(DS18B20_ID[0]);</p><p>  DS18B20_WriteByte(DS18B20_ID[1]);</p><p>  DS18B20_WriteByte(DS18B20_ID[2]);</p&

112、gt;<p>  DS18B20_WriteByte(DS18B20_ID[3]);</p><p>  DS18B20_WriteByte(DS18B20_ID[4]);</p><p>  DS18B20_WriteByte(DS18B20_ID[5]);</p><p>  DS18B20_WriteByte(DS18B20_ID[6]);<

113、;/p><p>  DS18B20_WriteByte(DS18B20_ID[7]);</p><p><b>  }</b></p><p>  void DS18B20_TmpChange(void)</p><p><b>  {</b></p><p>  udelay(

114、100);</p><p>  DS18B20_WriteByte(DS18B20_SkipROM); </p><p>  DS18B20_WriteByte(DS18B20_ConvertTemp); </p><p><b>  }</b></p><p>  U16 DS18B20_Temperature(v

115、oid)</p><p><b>  {</b></p><p><b>  U8 a,b;</b></p><p>  udelay(100);</p><p>  DS18B20_WriteByte(DS18B20_SkipROM);</p><p>  DS18B20_

116、WriteByte(DS18B20_ReadSCR);</p><p>  udelay(4);</p><p>  a=DS18B20_ReadByte();</p><p>  b=DS18B20_ReadByte();</p><p><b>  temp=b;</b></p><p>  

117、temp<<=8; </p><p>  temp=temp|a;</p><p>  return temp;</p><p><b>  }</b></p><p>  static int GT2440_ds18b20_open(struct inode *inode, stru

118、ct file *file)</p><p><b>  {</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  static int GT2440_ds18b20_release(struct inode

119、 *inode, struct file *file)</p><p><b>  {</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  static int GT2440_ds18b20_read(st

120、ruct file *filp, char *buf, size_t count, loff_t *f_pos)</p><p><b>  {</b></p><p>  U16 ds18b20_val;</p><p>  DS18B20_TmpChange();</p><p>  udelay(5);</p

121、><p>  ds18b20_val = DS18B20_Temperature();</p><p>  if (ds18b20_val < 10000)</p><p>  copy_to_user(buf, &ds18b20_val, sizeof(ds18b20_val));</p><p><b>  retu

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論