第一篇:嵌入式程序設(shè)計(jì)課程設(shè)計(jì)
課程設(shè)計(jì)
課 程 名嵌入式軟件開發(fā)技術(shù)
題 目 基于嵌入式Linux的溫度監(jiān)測系統(tǒng)的
設(shè)計(jì)與實(shí)現(xiàn)
專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù)(嵌入式系統(tǒng)方向)班 級(jí) 13計(jì)算機(jī)嵌入式系統(tǒng)班 學(xué) 號(hào) 學(xué)生姓名
2016年6月
摘要
溫度是個(gè)很普遍而又非常重要的參數(shù),在日常生活、工農(nóng)業(yè)生產(chǎn)以及科研領(lǐng)域都有著廣泛的應(yīng)用。因此,研制能夠準(zhǔn)確地測量和記錄這個(gè)參數(shù)值的系統(tǒng)具有十分重要的意義。
基于ARM的嵌入式溫度監(jiān)測系統(tǒng)是采用嵌入式Linux作為操作系統(tǒng),針對(duì)以S5PV210為處理器的開發(fā)板設(shè)計(jì)的一個(gè)嵌入式溫度監(jiān)測系統(tǒng)。論文在分析了Linux設(shè)備驅(qū)動(dòng)程序的基本工作原理基礎(chǔ)上,討論了開發(fā)中經(jīng)常會(huì)碰到的中斷處理、擁塞處理、I/O端口,并在此基礎(chǔ)上實(shí)現(xiàn)了基于S5PV210嵌入式處理器的開、讀、寫、關(guān)外部RAM的字符設(shè)備驅(qū)動(dòng)和網(wǎng)絡(luò)驅(qū)動(dòng)。結(jié)合高精度溫度傳感器DS18B20,實(shí)現(xiàn)溫度的正確采集,并通過以太網(wǎng)絡(luò)將數(shù)據(jù)上傳給上位機(jī)客戶端。
論文首先介紹了通信網(wǎng)絡(luò)中各種設(shè)備特性、總線結(jié)構(gòu)及傳輸技術(shù),然后根據(jù)單片機(jī)與PC機(jī)之間的串行通信原理,用ubantu完成溫度監(jiān)測系統(tǒng)的軟件設(shè)計(jì)與實(shí)現(xiàn),為用戶提供一個(gè)友好的人機(jī)界面,對(duì)監(jiān)測系統(tǒng)進(jìn)行控制并顯示采集后的數(shù)據(jù)。本系統(tǒng)還通過多線程實(shí)現(xiàn)了多個(gè)客戶端與服務(wù)器的通信。
關(guān)鍵詞:S5PV210;嵌入式Linux操作系統(tǒng);DS18B20;網(wǎng)絡(luò)編程
I
Abstract
Temperature is a very common and very important parameter, in daily life, industrial and agricultural production and scientific research fields have a wide range of applications.Therefore, it is very important to develop a system that can accurately measure and record the value of this parameter.The temperature monitoring system of base on the ARM is use of embedded Linux as the operating system for the processor to S5PV210 development board designed for an embedded temperature monitoring system.Based on the analysis of the basic working principle based on the Linux device drivers discussed development often encounter interrupt handling, congestion handling, I / O ports, and on this basis to achieve the embedded processor based on open S5PV210 reading, writing, characters off the external RAM device driver and network drives.Combined with precision temperature sensor DS18B20, to achieve the correct temperature acquisition, and upload the data via Ethernet to a PC client.At first,the paper introduces the characteristics of various devices in a communication network, the bus structure and transmission technology, and according to the principle of serial communication between SCM and PC, with ubantu complete temperature monitoring system software design and implementation, to provide users with a friendly man-machine interface, the monitoring system to control and display the data after collection.The system also enables communication via a plurality of multi-threaded client and the server.Key words:S5PV210;embedded Linux operating system;DS18B20;Network programming
II
1.引言.......................................................................................................................................1 1.1 設(shè)計(jì)背景及意義...............................................................................................................1 1.2 設(shè)計(jì)的主要內(nèi)容................................................................................................................2 2.相關(guān)技術(shù)...............................................................................................................................2 2.1 嵌入式Linux......................................................................................................................2 2.2 S5PV210.............................................................................................................................3 2.3 socket網(wǎng)絡(luò)編程..............................................................................................................3 3.具體實(shí)現(xiàn)功能.......................................................................................................................4 3.1總體框架圖........................................................................................................................4 3.2客戶端功能........................................................................................................................5 3.3 服務(wù)器功能........................................................................................................................5 3.4 實(shí)驗(yàn)板輸出信息...............................................................................................................5 4.具體實(shí)現(xiàn)過程.......................................................................................................................6 4.1 交叉編譯工具的安裝.......................................................................................................6 4.2 客戶端模塊的設(shè)計(jì)...........................................................................................................7 4.3 服務(wù)器模塊.......................................................................................................................8 4.4 LED點(diǎn)亮模塊..................................................................................................................10 4.5 溫度感應(yīng)模塊.................................................................................................................11 5.測試結(jié)果分析.....................................................................................................................13 5.1 各模塊運(yùn)行的效果.........................................................................................................13 5.2 可擴(kuò)展功能......................................................................................................................15 6.總結(jié)與展望.......................................................................................................................15
第一章 引言
1.1 設(shè)計(jì)背景及意義
溫度作為工業(yè)、農(nóng)業(yè)、國防和科研等部門最普遍的測量項(xiàng)目。它在工農(nóng)業(yè)生產(chǎn)、現(xiàn)代科學(xué)研究以及高新技術(shù)開發(fā)過程中也是一個(gè)極其普遍而又非
常重要的參數(shù)。因此,在這些領(lǐng)域中,對(duì)于這個(gè)參數(shù)的測量與控制就顯得尤為重要,特別是在紡織工業(yè)、冶金、化工、食品、溫室種植,汽車制造以及氣象預(yù)報(bào)和科研實(shí)驗(yàn)室等許多地方,都具有舉足輕重的作用。
以往這些工作大多是由人工完成,不但工作量大,記錄的數(shù)據(jù)少,對(duì)溫度的調(diào)節(jié)缺乏實(shí)時(shí)性,而且電路復(fù)雜,標(biāo)定和校準(zhǔn)也比較麻煩,難以滿足現(xiàn)代溫度測量的要求[1]。自從傳感器技術(shù)、微控制器技術(shù)和計(jì)算機(jī)技術(shù)日漸成熟之后,現(xiàn)代的溫度測量與控制系統(tǒng)克服了以往系統(tǒng)中存在的一些問題,比如對(duì)環(huán)境溫度的控制與調(diào)節(jié)以及數(shù)據(jù)的記錄都由微控制器或計(jì)算機(jī)自動(dòng)完成,人們的工作量大大地降低,而且測得的數(shù)據(jù)也更加的精確,對(duì)環(huán)境溫度的調(diào)節(jié)更具有實(shí)時(shí)性[2]。
1.2 設(shè)計(jì)的主要內(nèi)容
此次主要采用嵌入式Linux作為操作系統(tǒng),針對(duì)以S5PV210為處理器的開發(fā)板設(shè)計(jì)的一個(gè)嵌入式溫度監(jiān)測系統(tǒng)。在Linux設(shè)備驅(qū)動(dòng)程序的基本工作原理基礎(chǔ)上,討論了開發(fā)中經(jīng)常會(huì)碰到的中斷處理、擁塞處理、I/O端口,并在此基礎(chǔ)上實(shí)現(xiàn)了基于S5PV210嵌入式處理器的開、讀、寫、關(guān)外部RAM的字符設(shè)備驅(qū)動(dòng)和網(wǎng)絡(luò)驅(qū)動(dòng)。結(jié)合高精度溫度傳感器DS18B20,實(shí)現(xiàn)溫度的正確采集,并通過以太網(wǎng)絡(luò)將數(shù)據(jù)上傳給上位機(jī)客戶端。
溫度監(jiān)測系統(tǒng)根據(jù)Linux中的網(wǎng)絡(luò)通信技術(shù)和串口通信技術(shù)來傳輸數(shù)據(jù)。用ubantu完成溫度監(jiān)測系統(tǒng)的軟件設(shè)計(jì)與實(shí)現(xiàn),為用戶提供一個(gè)友好的人機(jī)界面,對(duì)監(jiān)測系統(tǒng)進(jìn)行控制并顯示采集后的數(shù)據(jù)。本系統(tǒng)還通過多線程實(shí)現(xiàn)了多個(gè)客戶端與服務(wù)器的通信。
第二章 相關(guān)技術(shù)
2.1 嵌入式Linux Linux是UNIX系統(tǒng)的一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個(gè)基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的UNIX工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。它誕生與1991年的10月5日。以后借助與Internet
網(wǎng),并進(jìn)過全世界各地計(jì)算機(jī)愛好者的共同努力下,現(xiàn)已成為世界上使用最多的一種UNIX類操作系統(tǒng),并且使用人數(shù)還在迅猛增漲。
本次設(shè)計(jì)采用Linux作為嵌入式操作系統(tǒng)的原因有以下幾點(diǎn):[3] 1)低成本開發(fā)系統(tǒng): 2)可應(yīng)用于多種硬件平臺(tái) 3)可定制的內(nèi)核 4)性能優(yōu)異 5)良好的網(wǎng)絡(luò)支持
2.2 S5PV210
S5PV210又名“蜂鳥”(Hummingbird),是三星推出的一款適用于智能手機(jī)和平板電腦等多媒體設(shè)備的應(yīng)用處理器。
S5PV210采用了ARM CortexTM-A8內(nèi)核,ARM V7指令集,主頻可達(dá)1GHZ,64/32位內(nèi)部總線結(jié)構(gòu),32/32KB的數(shù)據(jù)/指令一級(jí)緩存,512KB的二級(jí)緩存,可以實(shí)現(xiàn)2000DMIPS(每秒運(yùn)算20億條指令集)的高性能運(yùn)算能力。
包含很多強(qiáng)大的硬件編解碼功能,內(nèi)建MFC(Multi Format Codec),支持MPEG-1/2/4,H.263,H.264等格式視頻的編解碼,支持模擬/數(shù)字TV輸出。JPEG硬件編解碼,最大支持8000x8000分辨率
內(nèi)建高性能PowerVR SGX540 3D圖形引擎和2D圖形引擎,支持2D/3D圖形加速,是第五代PowerVR產(chǎn)品,其多邊形生成率為2800萬多邊形/秒,像素填充率可達(dá)2.5億/秒,在3D和多媒體方面比以往大幅提升,能夠支持DX9,SM3.0,OpenGL2.0等PC級(jí)別顯示技術(shù)。
具備IVA3硬件加速器,具備出色的圖形解碼性能,可以支持全高清、多標(biāo)準(zhǔn)的視頻編碼,流暢播放和錄制30幀/秒的1920×1080像素(1080p)的視頻文件,可以更快解碼更高質(zhì)量的圖像和視頻,同時(shí),內(nèi)建的HDMIv1.3,可以將高清視頻輸出到外部顯示器上。
2.3 socket網(wǎng)絡(luò)編程
Socket是進(jìn)程通訊的一種方式,即調(diào)用這個(gè)網(wǎng)絡(luò)庫的一些API函數(shù)實(shí)現(xiàn)分布在不同主機(jī)的相關(guān)進(jìn)程之間的數(shù)據(jù)交換。[4] 幾個(gè)定義:
(1)IP地址:即依照TCP/IP協(xié)議分配給本地主機(jī)的網(wǎng)絡(luò)地址,兩個(gè)進(jìn)程要通訊,任一進(jìn)程首先要知道通訊對(duì)方的位置,即對(duì)方的IP。
(2)端口號(hào):用來辨別本地通訊進(jìn)程,一個(gè)本地的進(jìn)程在通訊時(shí)均會(huì)占用一個(gè)端口號(hào),不同的進(jìn)程端口號(hào)不同,因此在通訊前必須要分配一個(gè)沒有被訪問的端口號(hào)。
(3)連接:指兩個(gè)進(jìn)程間的通訊鏈路。
(4)半相關(guān):網(wǎng)絡(luò)中用一個(gè)三元組可以在全局唯一標(biāo)志一個(gè)進(jìn)程:(協(xié)議,本地地址,本地端口號(hào))
這樣一個(gè)三元組,叫做一個(gè)半相關(guān),它指定連接的每半部分。(4)全相關(guān):一個(gè)完整的網(wǎng)間進(jìn)程通信需要由兩個(gè)進(jìn)程組成,并且只能使用同一種高層協(xié)議。也就是說,不可能通信的一端用TCP協(xié)議,而另一端用UDP協(xié)議。因此一個(gè)完整的網(wǎng)間通信需要一個(gè)五元組來標(biāo)識(shí):(協(xié)議,本地地址,本地端口號(hào),遠(yuǎn)地地址,遠(yuǎn)地端口號(hào))
這樣一個(gè)五元組,叫做一個(gè)相關(guān)(association),即兩個(gè)協(xié)議相同的半相關(guān)才能組合成一個(gè)合適的相關(guān),或完全指定組成一連接。
第三章 具體實(shí)現(xiàn)功能
3.1總體框架圖
圖1 項(xiàng)目總體框架圖
3.2客戶端功能
1)顯示簡單的用戶界面 2)發(fā)送命令給服務(wù)器 3)接收服務(wù)器傳輸?shù)臄?shù)據(jù) 4)顯示溫度數(shù)據(jù)
3.3 服務(wù)器功能
1)接收客戶端發(fā)送的命令 2)處理命令
3)把命令轉(zhuǎn)發(fā)給硬件 4)獲取硬件處理所得的數(shù)據(jù) 5)把該數(shù)據(jù)傳給客戶端
3.4 實(shí)驗(yàn)板輸出信息
1)LED燈按照客戶端的指令亮滅 2)蜂鳴器唱歌
3)核心板控制輸出溫度傳感器的數(shù)據(jù)到服務(wù)器
第四章 具體實(shí)現(xiàn)過程
個(gè)應(yīng)用系統(tǒng)要完成各項(xiàng)功能,首先必須有較完善的硬件作保證。同時(shí)還必須得到相應(yīng)設(shè)計(jì)合理的軟件的支持,尤其是微機(jī)應(yīng)用高速發(fā)展的今天,許多由硬件完成的工作,都可通過軟件編程而代替。甚至有些必須采用很復(fù)雜的硬件電路才能完成的工作,用軟件編和有時(shí)會(huì)變得很簡單。因此充分利用其內(nèi)部豐富的硬件資源和軟件資源。
程序設(shè)計(jì)語言有三種:機(jī)器語言、匯編語言、高級(jí)語言。本系統(tǒng)運(yùn)用的是高級(jí)語言所編寫,也就是C語言。所用到的開發(fā)平臺(tái)為ubuntu系統(tǒng)。
4.1 交叉編譯工具的安裝
(1)考慮到現(xiàn)今Linux平臺(tái)發(fā)展,交叉編譯平臺(tái)編統(tǒng)一為arm-linux-gcc-4.4.3(2)在windows系統(tǒng)下,建立一個(gè)共享目錄,如:e:/linux_file(3)將光盤目錄linux中的arm-linux-gcc-4.4.3.tar.gz 復(fù)制到e:/linux_file(4)注意在進(jìn)行虛擬機(jī)設(shè)置時(shí)使共享目錄的有效,并添加共享目錄e:/linux_file(5)進(jìn)入linux操作系統(tǒng),root目錄下建立一個(gè)Armcode的子目錄,將共享目錄下的文件arm-linux-gcc-4.4.3.tar.gz復(fù)制到該目錄(6)然后進(jìn)入到該目錄,執(zhí)行解壓命令:#cd /root/Armcode;#tar xvzf arm-linux-gcc-4.4.3.tgz –C /;注意:C 后面有個(gè)空格,并且C 是大寫的,它是英文單詞“Change”的第一個(gè)字母,在此是改變目錄的意思。(7)執(zhí)行
該
命
令,將
把
arm-linux-gcc
安
裝
到/opt/FriendlyARM/toolschain /4.4.3/bin 目錄。
(8)把編譯器路徑加入系統(tǒng)環(huán)境變量,運(yùn)行命令:#gedit /root/.bashrc 編輯/root/.bashrc 文件,在最后一行添加:export PATH=$PATH: /opt/FriendlyARM/toolschain/4.4.3/bin(9)重新登錄系統(tǒng)(不必重啟機(jī)器,開始->logout 即可),使以上設(shè)置生效,在命令行輸入:arm-linux-gcc –v,會(huì)出現(xiàn)如下信息,這說明交叉編譯環(huán)境已經(jīng)成功安裝。
4.2 客戶端模塊的設(shè)計(jì)
用戶界面的顯示:
void interface_print(char *temp){ system(“clear”);printf(“e[31m*******************2016梧*********************e[0mn”);printf(“e[31m*
*e[0mn”);printf(“e[31m*e[0m e[32m點(diǎn)亮LED1: on1
on2e[0me[31m
*e[0mn”);printf(“e[31m*e[0m e[33m關(guān)閉LED1: off1
off2e[0me[31m
*e[0mn”);printf(“e[31m*e[0m e[34m開蜂鳴器: onb
songe[0me[31m
*e[0mn”);printf(“e[31m*e[0m e[35m獲取溫度: get
e[31m *e[0mn”,temp);printf(“e[31m*e[0m e[36m退
出: e[0me[31m
*e[0mn”);printf(“e[31m*
*e[0mn”);printf(“e[31m******************未
來**********************e[0mn”);}
發(fā)送命令給服務(wù)器:
/*5.調(diào)用I/O函數(shù)(read/write)與客戶端通訊。*/ int i = 5;int pos;while(1){
ret = poll(pfd,2,-1);
if(ret > 0){
if(pfd[0].revents == POLLIN){
interface_print(temp);
/*從終端讀取數(shù)據(jù)*/
memset(buf,0,sizeof(buf));
ret = read(pfd[0].fd,buf,sizeof(buf)-1);7
州學(xué)院
|
點(diǎn)亮LED2:
|
關(guān)閉LED2:
|
播放音樂:
|
溫度:[%s]e[0m quit
|
的大
神
們
} if(ret > 0){
}
/*發(fā)送數(shù)據(jù)給服務(wù)器*/ write(sockfd,buf,ret);
接受服務(wù)器傳輸?shù)臄?shù)據(jù):
if(pfd[1].revents == POLLIN){
if(!strncmp(buf,“get”,3)){
/*接收服務(wù)器發(fā)送的信息*/
memset(temp,0,sizeof(temp));
ret = read(pfd[1].fd,temp,sizeof(temp)-1);
if(ret > 0){
temp[ret-1] = '