當(dāng)前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]通過分析和實(shí)驗(yàn),研究嵌入式TCP/IP協(xié)議棧S1C33-Stack的結(jié)構(gòu)及運(yùn)行原理,給出以S1C33-Stack構(gòu)造單芯片嵌入式網(wǎng)絡(luò)服務(wù)器,將信息家電組網(wǎng)及接入Internet的實(shí)現(xiàn)方案。

摘要:通過分析和實(shí)驗(yàn),研究嵌入式TCP/IP協(xié)議棧S1C33-Stack的結(jié)構(gòu)及運(yùn)行原理,給出以S1C33-Stack構(gòu)造單芯片嵌入式網(wǎng)絡(luò)服務(wù)器,將信息家電組網(wǎng)及接入Internet的實(shí)現(xiàn)方案。研究單芯片嵌入式網(wǎng)絡(luò)服務(wù)器中S1C33-Stack與用戶程序的接口方案,用戶登錄軟件及信息家電監(jiān)測(cè)軟件的設(shè)計(jì)方法。

    關(guān)鍵詞:SIC33209 嵌入式系統(tǒng) TCP/IP協(xié)議棧 網(wǎng)絡(luò)服務(wù)器 信息家電 Internet

引言

S1C33209是EPSON公司推出的RISC結(jié)構(gòu)的32位高性能CMOS微處理器,具有高速、低功耗、低電壓操作、精簡(jiǎn)指令集等特點(diǎn),提供乘與累加功能,既可用于辦公設(shè)備,也特別適用于需要高級(jí)數(shù)據(jù)處理的便攜設(shè)備,可以進(jìn)行高速運(yùn)算、靈活的I/O口控制和高效的數(shù)據(jù)操作。S1C33209具有8KB的內(nèi)部RAM,其運(yùn)算速率可達(dá)60MHz,加上優(yōu)化的多數(shù)為單時(shí)鐘周期的指令集,使S1C33209吞吐量大為提高。S1C33209比常規(guī)MCU有更快的運(yùn)算速度及可靠的性能、可重復(fù)編程的結(jié)構(gòu),使得精簡(jiǎn)的TCP/IP能夠在其中可靠運(yùn)行。

1 硬件平臺(tái)結(jié)構(gòu)及設(shè)計(jì)

信息家電遠(yuǎn)程訪問時(shí),通信數(shù)據(jù)量不大,10M以太網(wǎng)的通信速率即可滿足要求;其次信息家電對(duì)實(shí)時(shí)性的要求不高,可定位在秒級(jí)。

在這種情況下,構(gòu)造了家電網(wǎng)絡(luò)硬件平臺(tái)服務(wù)器S1C-WebServer,其結(jié)構(gòu)如圖1所示。S1C33-WebServer主要由三部分組成,即S1C33209微處理器、RTL8019AS全雙工以太網(wǎng)控制器(RealTek公司出品,100腳的TQFP封裝,最大速率10Mbps,自帶16KB的SRAM,工作在Ethernet II和IEEE802.3、10Base5、10Base2、10BasetT下,全雙工,支持8位與16位數(shù)據(jù)總線,與NE2000兼容)、可擦寫Flash(采用Intel的E28F320,容量為4MB)。考慮到Flash的擦寫在程序調(diào)試中不太方便,所以為S1C33209外圍擴(kuò)展512KB的SDRAM。在S1C33209中,運(yùn)行用戶程序和S1C33-Stack。在Flash中,存放S1C-WebServer的各種Web資源信息,綜可處理Web頁面、圖像文件等,與PC機(jī)上WebServer中的硬盤可以存儲(chǔ)大量的不同頁面。Flash的容量決定了WebServer的資源文件的大小。RTL9019AS是Ethernet控制器,負(fù)責(zé)S1C33209與Ethernet的數(shù)據(jù)傳遞。在信息家電已具備RS232或相關(guān)標(biāo)準(zhǔn)接口的條件下,使用家庭自動(dòng)化總線HAB(Home Automation Bus)作為S1C33-WebServer與家庭網(wǎng)絡(luò)協(xié)議SHNP(Simple Home Networks Protocol)。家電通過RS232接口與S1C33-WebServer連接,經(jīng)由EEthernet接入Internet。

    經(jīng)過分析,S1C33209與RTL8019AS讀寫時(shí)序是兼容的,而且MCU的讀寫時(shí)延比RTL8019AS小得多。MCU與RTL8019AS的連接如圖2所示。RTL8019AS的工作電壓為5V,而S1C33209的工作電壓為3.3V,所以RTL8019AS的數(shù)據(jù)線輸出需要電平的轉(zhuǎn)換。選用2個(gè)8位(采用16位數(shù)據(jù)總線)的具有雙向數(shù)據(jù)傳輸功能的74HC245來完成,由于S1C33209的輸出電平符合RTL8019AS輸入電平的要求,所以地址線可以直接相連,而不需電平轉(zhuǎn)換,RTL8019AD中斷信號(hào)(INT0)為高電平有效,在S1C33209中選用端口中斷輸入的K60端口與之相連。由于S1C33209的中斷有效方式(高、低電平或脈沖)可以根據(jù)對(duì)寄存器的設(shè)置調(diào)節(jié)),所以不用對(duì)INT0作反向或電平轉(zhuǎn)換。

2 精簡(jiǎn)TCP/IP協(xié)議棧的實(shí)現(xiàn)

構(gòu)建的S1C33-Stack運(yùn)行在以S1C33209嵌入式CPU為基礎(chǔ)的硬件平臺(tái)上,是一組可配置的多種Internet協(xié)議的組成。這些協(xié)議按照分層協(xié)議棧的方式組織,包括應(yīng)用層的HTTP、DHCP、SMTP,傳輸層的TCP、UDP,網(wǎng)絡(luò)層的IP/ICMP、ARP,通過鏈路層和物理層(如Ethernet)進(jìn)行數(shù)據(jù)的交互。S1C33-Stack的結(jié)構(gòu)模型如圖3所示。S1C33-Stack利用S1C33的高速處理能力處理TCP/IP數(shù)據(jù)包,避免了在有限容量的RAM中緩存大量數(shù)據(jù),使得控制器可以處理比內(nèi)部RAM總線更多的數(shù)據(jù)包。利用嵌入的S1C33-Stack,Webserver能通過Hypertext Transfer Protocol(HTTP)與任何瀏覽器通信,能夠提供各種類型的資源,如HTML、圖片文件等。這些資源可以使用一種特殊的文件系統(tǒng)URI,被存放在容量為4MB的Flash中。這種文件系統(tǒng)可包含任意多的目錄,對(duì)URL的長(zhǎng)度也沒有限制。

    考慮到嵌入式系統(tǒng)的可用資源有限,在此采用經(jīng)過裁減的TCP/IP協(xié)議棧—uIP。uIP協(xié)議主要包括TCP/IP協(xié)議組中的四個(gè)基本的協(xié)議:ARP、IP、ICMP、TCP。鏈路層協(xié)議,如PPP,則作為設(shè)備驅(qū)動(dòng)在uIP底層實(shí)現(xiàn)。應(yīng)用層協(xié)議,如HTTP、FTP、SMTP則作為應(yīng)用程序在uIP上層實(shí)現(xiàn)。

(1)地址解析協(xié)議ARP

該協(xié)議將IP地址映射成以太網(wǎng)MAC地址。在uIP中,ARP的執(zhí)行依靠維持一張表來完成IP地址和MAC的地址的映射。當(dāng)有一個(gè)IP數(shù)據(jù)包要發(fā)送到以太網(wǎng)上時(shí),從ARP表中查詢相應(yīng)的MAC地址。如果在ARP表中找不到IP地址則送出相應(yīng)的ARP請(qǐng)求。當(dāng)目的主機(jī)收到ARP請(qǐng)求報(bào)文后,發(fā)送ARP REPLY報(bào)文將請(qǐng)求的MAC地址送出。當(dāng)收到ARP REPLY后,ARP表被更新。每隔10s,ARP表就被新新一次,舊的ARP表項(xiàng)將被刪除。每個(gè)ARP表項(xiàng)的生存周期是20min。

(2)網(wǎng)間協(xié)議IP

在uIP中,IP層的代碼有兩個(gè)功能:驗(yàn)證到來的IP報(bào)文報(bào)頭的正確性,并且對(duì)TCP和ICMP報(bào)文實(shí)行分流。因?yàn)椴豢紤]IP的分片和重組,uIP中IP層的代碼非常的精簡(jiǎn)。

(3)網(wǎng)間報(bào)文控制協(xié)議ICMP

在uIP中,僅有一種類型的ICMP信息被實(shí)現(xiàn):ICMP ECHO主要用于應(yīng)用程序ping,檢查網(wǎng)絡(luò)是否連通。在uIP中,ICMP ECHO通常以一種很簡(jiǎn)單的方式進(jìn)行處理;將ICMP類型由“ECHO”改為“REPLY”,同時(shí)調(diào)整ICMP校驗(yàn),交換發(fā)送方和接收方的IP地址。

(4)傳送控制協(xié)議TCP

為了減少對(duì)內(nèi)存的使用,在uIP中,TCP并不使用滑動(dòng)窗口來接收和發(fā)送數(shù)據(jù),到達(dá)的TCP報(bào)文并不進(jìn)行緩沖而是立刻交給應(yīng)用程序處理。但是應(yīng)用程序本身可以對(duì)要發(fā)送的程序本身可以對(duì)要發(fā)送的數(shù)據(jù)進(jìn)行緩沖,因?yàn)槊看芜B接中通常有若干的TCP報(bào)文要發(fā)送。uIP網(wǎng)絡(luò)通信模塊結(jié)構(gòu)如圖4所示。

網(wǎng)絡(luò)通信需要要底層RTL8019AS驅(qū)動(dòng)程序的支持,參考RTL8019AS與S1C33209的資料說明文檔,編寫出針對(duì)此系統(tǒng)的RTL8019AS驅(qū)動(dòng)。

uIP并不緩存到達(dá)的數(shù)據(jù)包,當(dāng)網(wǎng)絡(luò)上有數(shù)據(jù)包(在這里專指出太幀)到達(dá)網(wǎng)卡時(shí),網(wǎng)卡驅(qū)動(dòng)程序?qū)捍嬖诰W(wǎng)卡緩存中的數(shù)據(jù)包,一次一個(gè)的以DMA形式傳送到目標(biāo)板上的RAM中。這時(shí)將會(huì)有一段代碼將到達(dá)目標(biāo)板RAM中的數(shù)據(jù)包復(fù)制到全局?jǐn)?shù)組uip_buf[]中,uIP協(xié)議棧程序隨后對(duì)uip_buf[]中的數(shù)據(jù)進(jìn)行操作。

當(dāng)上層應(yīng)用程序或協(xié)議棧程序產(chǎn)生了向網(wǎng)絡(luò)上發(fā)送的數(shù)據(jù)包時(shí),也將數(shù)據(jù)包放入uip_buf[]。然后調(diào)用網(wǎng)卡驅(qū)動(dòng)程序,將uip_buf[]中的數(shù)據(jù)讀到網(wǎng)卡的緩存中,隨后發(fā)送到網(wǎng)絡(luò)中。

在此要說明一下協(xié)議棧與網(wǎng)卡驅(qū)動(dòng)程序、應(yīng)用程序之間的同步機(jī)制問題。在系統(tǒng)初始化的時(shí)候,通過操作系統(tǒng)提供的系統(tǒng)調(diào)用vcre_tsk()創(chuàng)建三個(gè)任務(wù):任務(wù)一(task1),uIP協(xié)議棧;任務(wù)二(task2),家電監(jiān)控程序;任務(wù)三(idle_task),空閑任務(wù)。而網(wǎng)卡驅(qū)動(dòng)程序則作為硬件中斷,由“檢測(cè)到網(wǎng)絡(luò)上傳過來數(shù)據(jù)包”事件激發(fā)。

整個(gè)協(xié)議棧程序流程圖如圖5所示。

任務(wù)一的優(yōu)先級(jí)最高,任務(wù)二次之,任務(wù)三的優(yōu)先級(jí)最低。當(dāng)系統(tǒng)開始運(yùn)行時(shí),任務(wù)一首先進(jìn)入RUN狀態(tài),在任務(wù)一中加入系統(tǒng)調(diào)用wai_flg(),由于沒有網(wǎng)絡(luò)請(qǐng)求,任務(wù)一隨后進(jìn)入WAIT狀態(tài)。此時(shí)任務(wù)二進(jìn)入RUN狀態(tài)。當(dāng)網(wǎng)絡(luò)上有數(shù)據(jù)包到達(dá),網(wǎng)卡驅(qū)動(dòng)程序作為硬件中斷開始執(zhí)行。在退出中斷前,通過系統(tǒng)調(diào)用set_flg(),將任務(wù)一期望的標(biāo)志位置位。當(dāng)中斷返回后,由于任務(wù)一的等待條件已經(jīng)滿足,任務(wù)一的優(yōu)先級(jí)又高于任務(wù)二,因此任務(wù)一進(jìn)入RUN狀態(tài),即uIP協(xié)議開始處理數(shù)據(jù)。如果網(wǎng)絡(luò)上一直有數(shù)據(jù)包到達(dá),則任務(wù)一和中斷程序不斷的切換。當(dāng)網(wǎng)絡(luò)任務(wù)完成,返回到任務(wù)二的斷點(diǎn)處繼續(xù)向下執(zhí)行。

由于uIP不緩存網(wǎng)絡(luò)數(shù)據(jù),因此在任務(wù)一執(zhí)行的過程中,即uip_buf[]正在被操作時(shí),將關(guān)閉所有中斷。這樣可以避免數(shù)據(jù)包被破壞,缺點(diǎn)是實(shí)時(shí)性差了一些,但是滿足本系統(tǒng)要求。

3 操作系統(tǒng)

本系統(tǒng)使用的操作系統(tǒng)是由EPSON公司提供的ROS33V31。ROS33是為S1C33系列MCU提供的一種嵌入式實(shí)時(shí)操作系統(tǒng),符合uITRON 3.0標(biāo)準(zhǔn)。使用ROS33可以迅速、有效地開發(fā)針對(duì)打印機(jī)、PDA以及各類控制設(shè)備的嵌入式應(yīng)用程序。

ROS33具有以下特點(diǎn):

*支持uITRON 3.0標(biāo)準(zhǔn)——符合該標(biāo)準(zhǔn)的S級(jí)*最大任務(wù)數(shù)為255,采用優(yōu)先級(jí)調(diào)度機(jī)制,支持9種不同的優(yōu)先級(jí),提供信號(hào)燈、郵箱、消息緩沖等多種通信機(jī)制:

*內(nèi)核優(yōu)先并緊湊——最小可為1.7K;

*響應(yīng)快——最快調(diào)度響應(yīng)時(shí)間為7.8μS(CPU主頻為33MHz,下同),最大中斷屏蔽時(shí)間為4.3μs ;

*高級(jí)語言支持——除匯編語言外,還支持基于ANSI標(biāo)準(zhǔn)的C語言編程。

注釋:μITRON將系統(tǒng)功能分成四級(jí)。R級(jí)(必要級(jí))只提供包括實(shí)時(shí)、多任務(wù)OS所需的基本系統(tǒng)調(diào)用;S級(jí)(標(biāo)準(zhǔn)級(jí))提供所有標(biāo)準(zhǔn)的系統(tǒng)調(diào)用;E級(jí)(擴(kuò)展級(jí))包括附加的和擴(kuò)展的系統(tǒng)功能;C級(jí)(CPU依賴級(jí))的系統(tǒng)功能依賴于具體的CPU和系統(tǒng)實(shí)現(xiàn)方式。

ROS33基本內(nèi)核按功能劃分為6大部分:

*任務(wù)管理——負(fù)責(zé)系統(tǒng)中任務(wù)狀態(tài)的變遷;

*任務(wù)相關(guān)的同步管理——通過睡眠/喚醒、掛起/解掛等操作,處理相關(guān)任務(wù)及任務(wù)之間的同步關(guān)系;

*同步與通信——通過信號(hào)燈、事件、郵箱等通信機(jī)制,實(shí)現(xiàn)獨(dú)立任務(wù)之間的同步與通信;

*系統(tǒng)管理——對(duì)系統(tǒng)環(huán)境的管理;

*時(shí)鐘管理——日歷時(shí)鐘、定時(shí)器、定時(shí)任務(wù)等的管理;

*中斷管理——開/關(guān)中斷。

圖6給出了ROS33內(nèi)核的概念模型。

4 Web服務(wù)器及上層應(yīng)用程序框架

WEB服務(wù)器所采用的方式稱為uip_connect,比通常在設(shè)計(jì)中所使用的Socket套接字更適合于嵌入式系統(tǒng)下面即是WEB服務(wù)器的大體框架。

#include<uip.h>

void http_listen_init(void){

uip_listen(80);

} //http listen初始化

void listen_init(void){

http_listen_init();

}

void application(void){

if(uip_connected()) //如果當(dāng)前的連接狀態(tài)為connected

switch (uip_conn->lport){

case htons(80):

httpd; //如果80 PORT有數(shù)據(jù)到達(dá),則調(diào)用HTTP處理HTML文件的傳送

}

}

    首先,服務(wù)器與客戶機(jī)建立連接,再通過偵聽端口80,判斷是否有客戶請(qǐng)求到達(dá),若有則將調(diào)用應(yīng)用程序httpd進(jìn)行相應(yīng)處理,否則,繼續(xù)偵聽。Httpd是用于處理HTTP請(qǐng)求的應(yīng)用程序,具體設(shè)計(jì)在協(xié)議棧uIP中有描述。uip.h是協(xié)議uIP的一個(gè)頭文件。

在應(yīng)用軟件上實(shí)現(xiàn)簡(jiǎn)單WEB服務(wù)器功能,其主要由兩個(gè)模塊構(gòu)成:一是用戶登陸模塊;二是家電監(jiān)控模塊。用戶登陸模塊需要解決用戶的合法性檢查,即接收用戶輸入的用戶名和密碼,進(jìn)行校驗(yàn),合法則進(jìn)入家單監(jiān)控頁面,非法則發(fā)出警告頁面。家電監(jiān)控模塊針對(duì)各家電的硬件情況,收集信息家電的狀態(tài)碼,并通過網(wǎng)頁形式顯示。

在兩個(gè)模塊中,有一部分相似的處理,即對(duì)輸入的數(shù)據(jù)進(jìn)行解析。現(xiàn)在定義數(shù)組htmlinputs來存放解析后的信息。對(duì)表單輸入的數(shù)據(jù)進(jìn)行解析后,將其name值和value值分別存放在htmlinput_struct.name和htmlinput_struct.value里,便于以后的處理。變量htmlinputcount存放表單里輸入變量的個(gè)數(shù)。定義如下:

struct htmlinput_struct htmlinputs[100];

int htmlinputcount=0;

除此外,定義函數(shù)get_inputs()和translate()對(duì)輸入的數(shù)據(jù)進(jìn)行處理。

Int get_inputs();//將從表單輸入的數(shù)據(jù)分別裝到對(duì)應(yīng)的name/value數(shù)據(jù)隊(duì)中

Void translate(char*sourcestr);//解讀編碼URL字符

具體程序代碼在此就不再多述。

整個(gè)上層應(yīng)用程序的流程圖如圖7所示。

5 小結(jié)

以太網(wǎng)作為接口,以S1C33系列微處理器為硬件平臺(tái),利用軟件化的精簡(jiǎn)嵌入式TCP/IP,能夠?qū)崿F(xiàn)HTTP服務(wù)。當(dāng)然在系統(tǒng)成熟的條件下,還可以考慮把以太網(wǎng)接口替換為無線網(wǎng)絡(luò)接口。本文為信息家電網(wǎng)絡(luò)接入Internet提供了一種無需額外的PC或網(wǎng)關(guān)設(shè)備的解決方案。這種低成本、高性能的方案,具有可靠、靈活的特點(diǎn),適用于通信速率不太、允許時(shí)延大于1s且需要連接Internet的家庭自動(dòng)化設(shè)備。此外用戶還可以根據(jù)需要,按照此方法,構(gòu)造自己的網(wǎng)絡(luò)服務(wù)器,可為普通的電氣設(shè)備或系統(tǒng)如公共服務(wù)設(shè)備、家庭醫(yī)療保健設(shè)備、工業(yè)自動(dòng)化系統(tǒng)等,賦予接入Internet的能力。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉