基于嵌入式Web服務(wù)器的溫室遠(yuǎn)程監(jiān)控的研究
3.1 單片機(jī)中TCP/IP協(xié)議的嵌入
嵌入式系統(tǒng)接入Internet同PC機(jī)接入Internet一樣,必須要有相應(yīng)通信協(xié)議。目前Internet主要采用TCP/IP協(xié)議,因此,采用嵌入式系統(tǒng)通過TCP/IP協(xié)議接入Internet的方案,嵌入式系統(tǒng)對信息進(jìn)行TCP/IP協(xié)議處理,使其變成可以在Internet上傳輸?shù)腎P數(shù)據(jù)包和以太網(wǎng)幀。
溫室中的主控單片機(jī)要作為Web服務(wù)器接入以太網(wǎng),必須嵌入TCP/IP協(xié)議。Internet通信協(xié)議對計(jì)算機(jī)系統(tǒng)的CPU速度、存儲(chǔ)器容量等要求比較高,用于PC機(jī)不存在任何困難,但用于自身資源有限的嵌入式系統(tǒng)就必須考慮性價(jià)比,根據(jù)需要有所取舍,合理選擇通信協(xié)議的實(shí)現(xiàn)和處理方案。根據(jù)所選的單片機(jī)C8051F020的資源,對TCP/IP協(xié)議做了裁減,系統(tǒng)中使用了ARP、RARP、ICMP、UDP、HTTP等部分協(xié)議,即可保證單片機(jī)接入以太網(wǎng),同時(shí)亦保證有足夠小的代碼量。
根據(jù)實(shí)際需要,該系統(tǒng)采用一種簡化的TCP/IP 4層網(wǎng)絡(luò)模型,分別為:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層。應(yīng)用層傳遞來自以太網(wǎng)和數(shù)據(jù)終端的數(shù)據(jù),并對數(shù)據(jù)作打包拆包處理;傳輸層采用用戶數(shù)據(jù)包協(xié)議UDP;網(wǎng)絡(luò)層實(shí)現(xiàn)IP協(xié)議,還要實(shí)現(xiàn)能報(bào)告數(shù)據(jù)傳輸差錯(cuò)等情況的ICMP協(xié)議;鏈路層由控制同一物理網(wǎng)絡(luò)上不同機(jī)器間數(shù)據(jù)傳送的底層協(xié)議組成。在簡化的TCP/IP協(xié)議4層模型中,鏈路層部分由RTL8019AS完成,網(wǎng)絡(luò)層和傳輸層由溫室控制的單片機(jī)來處理,應(yīng)用層則根據(jù)需要可以在單片機(jī)內(nèi)完成,也可以由單片機(jī)轉(zhuǎn)給用戶或終端設(shè)備完成[3]。
3.2 單片機(jī)控制以太網(wǎng)卡工作過程
系統(tǒng)在上電工作時(shí)首先要進(jìn)行初始化,即初始化單片機(jī)C8051F020和RTL8019AS,進(jìn)行工作參數(shù)和條件的設(shè)置,主要是一些寄存器的配置和內(nèi)置RAM空間的分配。初始化之后,由于MCU系統(tǒng)中的TCP/IP是直接面向硬件的,沒有嵌入式實(shí)時(shí)操作系統(tǒng)的支持,程序結(jié)構(gòu)一般采用順序執(zhí)行和硬件中斷相結(jié)合的方式,與操作系統(tǒng)的多進(jìn)程并發(fā)執(zhí)行的方式截然不同。當(dāng)所有初始化完成之后,就采用查詢方式開始工作,程序流程圖見圖2。 本文引用地址:http://2s4d.com/article/173726.htm
當(dāng)系統(tǒng)接入以太網(wǎng)開始運(yùn)行時(shí),首先進(jìn)行地址解析,在網(wǎng)絡(luò)內(nèi)進(jìn)行“身份識別”,當(dāng)用戶通過瀏覽器發(fā)出請求時(shí),網(wǎng)絡(luò)芯片驅(qū)動(dòng)程序接收以太網(wǎng)幀形式的用戶請求,然后傳輸給上層協(xié)議逐層分離取出用戶請求,控制系統(tǒng)根據(jù)用戶請求調(diào)用單片機(jī)C8051F020外圍傳感器采集溫室內(nèi)相應(yīng)的狀態(tài)數(shù)據(jù),再將數(shù)據(jù)逐層打包,最后交給以太網(wǎng)芯片RTL8019AS封裝成以太網(wǎng)幀發(fā)送出去。如果傳輸?shù)臄?shù)據(jù)量比較大,則重復(fù)多次數(shù)據(jù)發(fā)送過程,便可完成一個(gè)數(shù)據(jù)的完整傳輸。在終端可以以Web網(wǎng)頁的形式供用戶瀏覽和做出進(jìn)一步的判斷控制。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論