基于單片機(jī)的嵌入式系統(tǒng)網(wǎng)絡(luò)設(shè)計(jì)方案
系統(tǒng)主應(yīng)用程序的實(shí)現(xiàn)
系統(tǒng)初始化后,進(jìn)入主程序循環(huán)的兩部分:一是對(duì)接收到的以太網(wǎng)數(shù)據(jù)幀進(jìn)行解包,供應(yīng)用程序使用,一是對(duì)發(fā)送的數(shù)據(jù)進(jìn)行封裝并發(fā)送,使采用TCP/IP協(xié)議的以太網(wǎng)內(nèi)的所有計(jì)算機(jī)都能收到此數(shù)據(jù)幀。圖2是系統(tǒng)的主應(yīng)用程序的流程圖。
圖2 系統(tǒng)的主應(yīng)用程序的流程圖
單片機(jī)實(shí)現(xiàn)TCP/IP協(xié)議的難點(diǎn)
51單片機(jī)的程序空間、可用的內(nèi)存RAM、運(yùn)算速度、指令集等原因,在UNIX或Windows上實(shí)現(xiàn)的TCP/IP協(xié)議的源代碼并不能夠直接移植到8位的單片機(jī)上。在51單片機(jī)上編寫代碼會(huì)受許多限制,特別是實(shí)現(xiàn)TCP/IP協(xié)議這樣關(guān)系復(fù)雜的程序,我們必須根據(jù)實(shí)際情況盡可能挖掘51單片機(jī)的性能。綜合來說,單片機(jī)實(shí)現(xiàn)與UNIX實(shí)現(xiàn)TCP/IP有如下區(qū)別:
?。?)操作系統(tǒng):Windows或UNIX都是多任務(wù)操作系統(tǒng),這使得代碼編寫簡單化,在單片機(jī)只能是單任務(wù)系統(tǒng),代碼結(jié)構(gòu)為順序執(zhí)行+硬件中斷的方式,無法并發(fā)執(zhí)行。
(2)內(nèi)存分配:Windows或UNIX的內(nèi)存分配是動(dòng)態(tài)的。而一般單片機(jī)只有外接的一塊32K字節(jié)的RAM,并同時(shí)被各個(gè)協(xié)議使用。一個(gè)最大的以太網(wǎng)數(shù)據(jù)包有1.5K字節(jié),分配一包的緩沖區(qū)就要1.5K字節(jié)。為此,我們分配一個(gè)256×6=1536個(gè)字節(jié)的固定的RAM來存放收到的以太網(wǎng)數(shù)據(jù)包。收到一包就處理一包。
?。?)指針:在PC里所有程序都必須先放在RAM里才能運(yùn)行,所以它的指針都指向RAM.而單片機(jī)的結(jié)構(gòu)和PC的結(jié)構(gòu)有很大差別,指針類型很多,各指針運(yùn)算的速度也不一樣,特別是“一般指針”運(yùn)算很慢,還會(huì)占用很多程序空間。UNIX實(shí)現(xiàn)TCP/IP的源代碼中,用得最多的就是指針,而在單片機(jī)里一般要求少用指針,或使用特定類型的指針。對(duì)使用UNIX的源代碼需要作很多的改動(dòng)。
?。?)參數(shù)傳遞:在UNIX實(shí)現(xiàn)的TCP/IP源代碼中,一般有很多的參數(shù)傳遞,而在單片機(jī)里允許傳遞的參數(shù)是有限的(因?yàn)槭艿絻?nèi)部RAM的限制),同時(shí)參數(shù)傳遞的過程要浪費(fèi)程序代碼空間,也降低單片機(jī)執(zhí)行速度。所以在單片機(jī)的實(shí)現(xiàn)里,一般不要做太多的參數(shù)傳遞,而多使用公共的全局變量來實(shí)現(xiàn)調(diào)用的過程。
?。?)硬件接口:在UNIX或Windows里,對(duì)網(wǎng)卡驅(qū)動(dòng)無一例外都是采用中斷方式,因?yàn)镻C的處理速度快,一次中斷的處理時(shí)間也很短,不會(huì)影響系統(tǒng)內(nèi)的其它中斷。而在單片機(jī)的應(yīng)用中,大部分的方案都是查詢式的。PC的NE2000的網(wǎng)卡,一般都是用16位DMA的方式,而在單片機(jī)里卻只能用8位DMA方式。這也使UNIX對(duì)網(wǎng)卡驅(qū)動(dòng)的代碼不能直接移植。
結(jié)語
本文設(shè)計(jì)的嵌入式網(wǎng)絡(luò)接入方案,采用廉價(jià)的8位51單片機(jī)實(shí)現(xiàn)了簡化TCP協(xié)議和UDP協(xié)議,并支持主動(dòng)和被動(dòng)連接、跨越網(wǎng)關(guān),實(shí)現(xiàn)互聯(lián)網(wǎng)接入,在被控設(shè)備與上位控制機(jī)之間提供了一條透明的傳輸通道,用戶不需對(duì)原有串口設(shè)備或其他數(shù)字設(shè)備做任何修改,就可享受到網(wǎng)絡(luò)的好處。目前,本文的系統(tǒng)已被成功使用在網(wǎng)絡(luò)化的數(shù)據(jù)采集器中。
tcp/ip相關(guān)文章:tcp/ip是什么
評(píng)論