當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]面向物聯(lián)網(wǎng)的嵌入式以太網(wǎng)終端平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)

摘要:為了在面向物聯(lián)網(wǎng)的應(yīng)用中,完成對(duì)RFID讀卡器以及傳感器模塊數(shù)據(jù)的網(wǎng)絡(luò)傳輸,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于ARM7的以太網(wǎng)終端平臺(tái)。針對(duì)低成本嵌入式系統(tǒng)資源匱乏的問題,提出了把瀏覽器請(qǐng)求當(dāng)作函數(shù)調(diào)用的辦法,在平臺(tái)上實(shí)現(xiàn)了動(dòng)態(tài)網(wǎng)頁服務(wù)。該平臺(tái)硬件部分采用ATMEL公司AT91SAM7X512微處理器作為主控芯片,軟件部分通過移植LwIP協(xié)議棧并調(diào)用其API實(shí)現(xiàn)了TCP客戶端和WEB服務(wù)器。平臺(tái)在取得數(shù)據(jù)后主動(dòng)向上位機(jī)請(qǐng)求連接并傳送數(shù)據(jù),上位機(jī)可通過網(wǎng)頁對(duì)平臺(tái)進(jìn)行訪問和設(shè)置。
關(guān)鍵詞:物聯(lián)網(wǎng);以太網(wǎng)終端;LwIP;嵌入式WEB服務(wù)器

    物聯(lián)網(wǎng)是在互聯(lián)網(wǎng)的基礎(chǔ)上,將用戶與物品或者物品與物品用互聯(lián)網(wǎng)進(jìn)行連接,并通過互聯(lián)網(wǎng)進(jìn)行信息交換和通信的一種概念。物聯(lián)網(wǎng)主要通過信息采集設(shè)備以及能夠?qū)⑦@些信息采集設(shè)備接入互聯(lián)網(wǎng)的終端平臺(tái)來實(shí)現(xiàn)。近年來,嵌入式系統(tǒng)以其功能完善,設(shè)計(jì)方案靈活,功耗可控制等特點(diǎn),已廣泛應(yīng)用于生活、商業(yè)、醫(yī)療以及工業(yè)等各個(gè)領(lǐng)域。比起通用計(jì)算機(jī)來,嵌入式系統(tǒng)具有針對(duì)性更強(qiáng)、體積更小,成本更低等優(yōu)點(diǎn),是物聯(lián)網(wǎng)領(lǐng)域應(yīng)用設(shè)計(jì)的首選方案。對(duì)于一些數(shù)據(jù)量不大,傳輸速率要求不高的應(yīng)用,要考慮用較低的成本實(shí)現(xiàn)最可靠的物聯(lián)網(wǎng)服務(wù)。

1 平臺(tái)硬件設(shè)計(jì)
1.1 平臺(tái)結(jié)構(gòu)及原理
    該平臺(tái)采用ATMEL公司AT91SAM7X512處理器作為主控芯片,該處理器內(nèi)部集成了以太網(wǎng)控制器、512kbytes FALSH以及128kbytes SRAM。只需外接一片以太網(wǎng)物理層(PHY)收發(fā)芯片DM9161和一個(gè)網(wǎng)絡(luò)變壓器HR601680,即可構(gòu)成以太網(wǎng)終端硬件平臺(tái)。AT91SAM7X512采用3.3 V和1.8 V雙工作電壓,使用頻率為18.432 MHZ的晶振作為時(shí)鐘電路的振蕩源,調(diào)試電路采用標(biāo)準(zhǔn)的20針JTAG仿真調(diào)試接口。該方案成本低,功耗小,并且所用芯片集成度很高因而保證了系統(tǒng)的穩(wěn)定性。
    AT91SAM7X512的以太網(wǎng)控制模塊實(shí)現(xiàn)了一個(gè)與IEEE802.3標(biāo)準(zhǔn)兼容的以太網(wǎng)MAC,支持全雙工模式,可通過DMA方式進(jìn)行數(shù)據(jù)收發(fā)。當(dāng)物理層芯片DM9161接收到來自以太網(wǎng)的上位機(jī)數(shù)據(jù)時(shí),ARM通過MII接口(媒體獨(dú)立接口)讀取數(shù)據(jù),并在內(nèi)部通過DMA方式將數(shù)據(jù)讀入SRAM中交給TCP/IP協(xié)議棧進(jìn)行處理。同時(shí),當(dāng)RFID射頻讀卡器或者傳感模塊有數(shù)據(jù)需要傳輸時(shí),平臺(tái)也能沿著相同的通道將數(shù)據(jù)傳輸至上位機(jī)。系統(tǒng)整體結(jié)構(gòu)如圖1所示:


1.2 AT91SAM7X512和DM9161的接口電路設(shè)計(jì)
    AT91SAM7X512的以太網(wǎng)控制器和物理層收發(fā)芯片DM9161之間有MII(Media Independent Interface)和RMII(Reduced Media Independent Interface)兩種接口。這兩種接口都能夠工作在10 Mb/s和100 Mb/s共兩種速率下,在本設(shè)計(jì)中采用MII接口。MII數(shù)據(jù)接口總共需要16個(gè)信號(hào),包括TX_ER,TXD<3:0>,TX_EN,TX_CLK,COL,RXD<3:0>,RX_EX,RX_CLK,CRS,RX_DV等,在時(shí)鐘速率25 MHz的情況下以4-bit并行方式發(fā)送和接收數(shù)據(jù)。以太網(wǎng)控制器依靠MDIO接口與物理層芯片進(jìn)行通信,用于自動(dòng)協(xié)商期間確保以太網(wǎng)控制器和物理層芯片被配置為相同的速度和雙工模式。AT91SAM7X512和DM9161的接口電路如圖2所示。


    當(dāng)系統(tǒng)上電后,由AT91SAM7X512給DM9161提供復(fù)位信號(hào)及引腳初始化電平,完成DM9161的上電初始化工作。當(dāng)初始化完成后,系統(tǒng)會(huì)通過MII接口讀取DM9161內(nèi)部狀態(tài)寄存器的值來完成對(duì)網(wǎng)絡(luò)連接模式和連接狀態(tài)的檢測(cè)。

2 平臺(tái)軟件的實(shí)現(xiàn)
2.1 TCP/IP協(xié)議棧的移植
    LwIP是瑞典計(jì)算機(jī)科學(xué)研究院(SICS)設(shè)計(jì)的一個(gè)開源的輕量級(jí)TCP/IP協(xié)議棧。它的目的是減少內(nèi)存使用率和代碼大小,使LwIP能夠適用于資源緊張的嵌入式系統(tǒng)。利用μC/OS-Ⅱ提供的信號(hào)量和消息傳遞機(jī)制等系統(tǒng)服務(wù)可以實(shí)現(xiàn)對(duì)LwIP的移植。
2.1.1 信號(hào)量操作函數(shù)
    LwIP使用信號(hào)量進(jìn)行通信,這個(gè)信號(hào)量可以是計(jì)數(shù)信號(hào)量,也可以是二值信號(hào)量,所以在sys_arch中需要實(shí)現(xiàn)與信號(hào)量操作相關(guān)的信號(hào)量結(jié)構(gòu)體struct sys_sem_t、信號(hào)量建立函數(shù)sys_sem_new()、信號(hào)量釋放函數(shù)sys_sem_free()、信號(hào)量發(fā)出函數(shù)sys_sem_signal()和信號(hào)量等待函數(shù)sys_arch_sem_wait()。由于在μC/OS-Ⅱ中已經(jīng)實(shí)現(xiàn)了與信號(hào)量操作有關(guān)的各種函數(shù),而且功能和上述幾個(gè)LwIP中所需要實(shí)現(xiàn)的函數(shù)的功能是完全一致的,所以只要調(diào)用μC/OS-Ⅱ中的信號(hào)量操作函數(shù)來重新包裝成LwIP中的信號(hào)量操作函數(shù)即可。
2.1.2 郵箱操作函數(shù)
    LwIP使用郵箱來進(jìn)行消息傳遞,用戶可以用一個(gè)隊(duì)列來將其實(shí)現(xiàn),需要注意的一點(diǎn)是,投遞進(jìn)郵箱中的消息只能是一個(gè)指針。因此要根據(jù)以上要求來實(shí)現(xiàn)消息隊(duì)列結(jié)構(gòu)sys_mbox_t,以及相應(yīng)的操作函數(shù):sys_mbox_new()、sys_mbox_free()、sys_mbox_post()和sys_arch_mbox _fetch()。μC/OS-Ⅱ很好地實(shí)現(xiàn)了消息隊(duì)列結(jié)構(gòu)及其操作,為消息隊(duì)列提供了豐富的管理函數(shù),但μC/OS-Ⅱ沒有對(duì)消息隊(duì)列中的消息進(jìn)行管理,因而不能直接使用,必須在μC/OS-Ⅱ的基礎(chǔ)上重新實(shí)現(xiàn)。具體實(shí)現(xiàn)時(shí),可創(chuàng)建多個(gè)郵箱,并使用單向鏈表將這些郵箱鏈接在一起,每個(gè)郵箱可接收消息的數(shù)量由消息數(shù)組的大小來決定。對(duì)消息隊(duì)列本身的管理用μC/OS-Ⅱ中的隊(duì)列操作函數(shù)來完成,然后通過對(duì)鏈表的操作來實(shí)現(xiàn)對(duì)消息的創(chuàng)建、使用、刪除和回收,兩部分綜合起來形成了LwIP的郵箱功能。
2.1.3 創(chuàng)建新線程函數(shù)
    在μC/OS-Ⅱ中只有任務(wù)的概念,建立一個(gè)新的線程實(shí)際上就是建立一個(gè)新的任務(wù)。因此只需要把OSTaskCreate()封裝一下,就可以實(shí)現(xiàn)sys_thread_new()。需要注意的是當(dāng)前μC/OS-Ⅱ不支持時(shí)間片輪番調(diào)度法,不允許兩個(gè)或兩個(gè)以上的任務(wù)有同樣的優(yōu)先級(jí),所以用戶要事先為L(zhǎng)wIP中創(chuàng)建的線程分配好優(yōu)先級(jí)。通過對(duì)LwIP中的宏TCPIP_THREAD_PRIO進(jìn)行包裝,來避免TCPIP線程優(yōu)先級(jí)與其他線程相同。
2.1.4 定時(shí)器函數(shù)
    LwIP中每個(gè)線程都有一個(gè)timeouts鏈表,這個(gè)鏈表在建立之后其首地址必須固定。因此用于保存鏈表首地址的sys_timeouts結(jié)構(gòu)必須與線程一一對(duì)應(yīng),而且其地址不能改變,以便能夠隨時(shí)得到鏈表的首地址。可用一個(gè)靜態(tài)的sys_timeouts結(jié)構(gòu)數(shù)組來存放各個(gè)線程的鏈表,以線程的優(yōu)先級(jí)號(hào)來作為數(shù)組索引號(hào),這樣每一個(gè)線程就能對(duì)應(yīng)一個(gè)sys-timeouts結(jié)構(gòu)體了,并且在系統(tǒng)運(yùn)行期間對(duì)應(yīng)的結(jié)構(gòu)體數(shù)組成員的地址會(huì)一直固定不變。移植時(shí)通過實(shí)現(xiàn)stmctsys_timeouts*sys_arch_timeouts(void)函數(shù),來返回目前正處于運(yùn)行態(tài)的線程所對(duì)應(yīng)的timeouts隊(duì)列指針。
2.2 驅(qū)動(dòng)程序
    操作系統(tǒng)是通過各種驅(qū)動(dòng)程序來和各種硬件打交道的,驅(qū)動(dòng)程序?yàn)橛脩羝帘瘟烁鞣N各樣的硬件設(shè)備,而只提供了簡(jiǎn)單明了的函數(shù)接口給操作系統(tǒng)調(diào)用。LwIP已經(jīng)設(shè)計(jì)好了這些框架,用戶只需嚴(yán)格按照順序完成與底層硬件相關(guān)的部分即可實(shí)現(xiàn)網(wǎng)絡(luò)接口層和IP層的通信。需要實(shí)現(xiàn)的包括:底層網(wǎng)絡(luò)接口初始化函數(shù)ethernetif_init()、網(wǎng)卡接收函數(shù)ethernetif_input()、網(wǎng)卡發(fā)送函數(shù)ethernetif_output()和網(wǎng)卡中斷處理函數(shù)ethernetif_isr()等。驅(qū)動(dòng)程序完成了對(duì)設(shè)備的初始化、釋放和管理,并且完成對(duì)底層以太網(wǎng)數(shù)據(jù)包的接收、搬運(yùn)和發(fā)送。
2.3 應(yīng)用程序
    系統(tǒng)應(yīng)用程序的任務(wù)主要是在嵌入式平臺(tái)上實(shí)現(xiàn)網(wǎng)絡(luò)通信客戶端和HTTP網(wǎng)頁服務(wù)器兩方面的功能。利用LwIP提供的API,采用TCP協(xié)議客戶端到服務(wù)器通信的模式,實(shí)現(xiàn)嵌入式終端和上位機(jī)之間的通信。在這種模式下,嵌入式終端定義為客戶端,主動(dòng)向服務(wù)器發(fā)起TCP連接;而上位機(jī)(PC)定義為服務(wù)器端,始終監(jiān)聽來自網(wǎng)絡(luò)的連接。嵌入式終端主要負(fù)責(zé)采集來自于傳感器或RFID模塊的數(shù)據(jù),并將這些數(shù)據(jù)通過以太網(wǎng)傳送給上位機(jī)。同時(shí)嵌入式終端平臺(tái)上也運(yùn)行著一個(gè)HTTP網(wǎng)頁服務(wù)器,上位機(jī)(PC)可通過網(wǎng)頁對(duì)嵌入式終端平臺(tái)進(jìn)行訪問、查看和設(shè)置。
[!--empirenews.page--]
3 WEB服務(wù)器的實(shí)現(xiàn)
    HTTP定義了瀏覽器與服務(wù)器交互的不同方法,最基本的方法有4種。本系統(tǒng)的實(shí)現(xiàn)只涉及到GET和POST這兩種最基本的方法。GET一般用于向服務(wù)器獲取和查詢資源信息,而POST一般用于向服務(wù)器上傳和更新沒有長(zhǎng)度限制的、大容量的資源信息。一個(gè)基本的WEB服務(wù)器要實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁服務(wù)的關(guān)鍵是要能夠?qū)g覽器發(fā)送的GET或POST請(qǐng)求做出響應(yīng)。一般情況下制作動(dòng)態(tài)網(wǎng)頁需要使用語言:HTML+ASP或HTML+PHP或HTML+ JSP等。要在資源有限的嵌入式系統(tǒng)上實(shí)現(xiàn)這樣的功能是不現(xiàn)實(shí)的,一種明智的辦法是通過使用回調(diào)函數(shù)的方式,為瀏覽器的每一種請(qǐng)求都設(shè)計(jì)一個(gè)服務(wù)函數(shù)與之對(duì)應(yīng)。當(dāng)有新增加的GET或POST請(qǐng)求時(shí),則只需要增加相應(yīng)的服務(wù)函數(shù)即可。具體實(shí)現(xiàn)時(shí)可設(shè)計(jì)一個(gè)存放服務(wù)函數(shù)地址的結(jié)構(gòu)體,其成員包括所請(qǐng)求服務(wù)參數(shù)的長(zhǎng)度、名稱和對(duì)應(yīng)服務(wù)函數(shù)的地址。然后將所有的結(jié)構(gòu)體都初始化在一個(gè)數(shù)組中,代碼如下:

    在編寫應(yīng)用程序的時(shí)候,只需抓取瀏覽器所發(fā)送的請(qǐng)求類型和參數(shù),即可根據(jù)不同的請(qǐng)求來調(diào)用相應(yīng)的服務(wù)函數(shù)。當(dāng)有新的GET或者POST請(qǐng)求增加時(shí),只需要增加與之對(duì)應(yīng)的服務(wù)函數(shù)即可,這樣就實(shí)現(xiàn)了擴(kuò)展性很強(qiáng)的動(dòng)態(tài)網(wǎng)頁服務(wù)。WEB服務(wù)器響應(yīng)瀏覽器訪問的流程如圖3所示。


    POST請(qǐng)求分為帶參數(shù)和不帶參數(shù)兩類,帶參數(shù)的POST請(qǐng)求,如:設(shè)置IP地址,子網(wǎng)掩碼等操作,需要提取相關(guān)參數(shù)后再調(diào)用服務(wù)函數(shù)進(jìn)行處理。不帶參數(shù)的POST請(qǐng)求只需直接調(diào)用相應(yīng)服務(wù)函數(shù)即可,如:重啟系統(tǒng)、恢復(fù)默認(rèn)參數(shù)等操作。遠(yuǎn)端PC可以通過該動(dòng)態(tài)WEB服務(wù)器來對(duì)平臺(tái)進(jìn)行訪問,完成上述幾項(xiàng)操作。在第一次啟動(dòng)本系統(tǒng)時(shí),系統(tǒng)通過運(yùn)行DHCP客戶端程序,向DHCP服務(wù)器(路由器等設(shè)備)主動(dòng)申請(qǐng)IP地址,獲得IP后,遠(yuǎn)端PC即可通過該IP地址對(duì)本系統(tǒng)進(jìn)行訪問和設(shè)置。網(wǎng)頁界面如圖4所示。



4 結(jié)束語
    平臺(tái)采用AT91SAM7X512處理器和DM9161以太網(wǎng)物理層芯片。兩者通過MII接口連接,高集成度的處理器提高了系統(tǒng)穩(wěn)定性,降低了數(shù)據(jù)傳輸出錯(cuò)機(jī)率。通過向終端平臺(tái)移植LwIP協(xié)議,使終端具備連入以太網(wǎng)的能力,并通過調(diào)用函數(shù)的方式在該低成本平臺(tái)上實(shí)現(xiàn)了動(dòng)態(tài)網(wǎng)頁服務(wù)器。在局域網(wǎng)條件下運(yùn)行該終端和上位機(jī)PC進(jìn)行連接,能很好的通過網(wǎng)絡(luò)傳遞RFID讀卡器采集的信息,并且上位機(jī)PC能夠通過網(wǎng)頁對(duì)本終端進(jìn)行訪問和參數(shù)設(shè)置。針對(duì)更復(fù)雜的遠(yuǎn)程網(wǎng)絡(luò)連接和訪問,網(wǎng)絡(luò)延遲和丟包等問題還有待進(jìn)一步的研究。

本站聲明: 本文章由作者或相關(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)閉