999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于μC/TCP-IP協(xié)議棧的嵌入式以太網(wǎng)通信系統(tǒng)

2017-09-23 02:57:17李逸瀚
計算機應(yīng)用與軟件 2017年9期
關(guān)鍵詞:嵌入式

李逸瀚 石 春 吳 剛

(中國科學(xué)技術(shù)大學(xué)信息學(xué)院自動化系工業(yè)自動化研究所 安徽 合肥 230026)

基于μC/TCP-IP協(xié)議棧的嵌入式以太網(wǎng)通信系統(tǒng)

李逸瀚 石 春 吳 剛

(中國科學(xué)技術(shù)大學(xué)信息學(xué)院自動化系工業(yè)自動化研究所 安徽 合肥 230026)

隨著因特網(wǎng)(俗稱互聯(lián)網(wǎng))技術(shù)的發(fā)展和成熟,大量的嵌入式設(shè)備也開始接入互聯(lián)網(wǎng)。為實現(xiàn)嵌入式設(shè)備和互聯(lián)網(wǎng)的通信,并考慮到嵌入式設(shè)備自身資源的有限性,選擇恩智浦MK60DN512VLQ10微控制器和TI公司的DP83640物理層收發(fā)器為基礎(chǔ)設(shè)計嵌入式以太網(wǎng)通信系統(tǒng),移植μC/OS-II操作系統(tǒng),移植μC/TCP-IP通信協(xié)議棧。實驗結(jié)果表明,開發(fā)板之間、開發(fā)板和PC機之間可建立UDP鏈接、TCP鏈接進行數(shù)據(jù)收發(fā)。

K60 DP83640 μC/OS-II μC/TCP-IP

0 引 言

因特網(wǎng)(俗稱互聯(lián)網(wǎng))技術(shù)日趨成熟,帶來的信息共享和遠程操控改變了人們的生活方式,其普及度越來越廣,已經(jīng)滲透到嵌入式領(lǐng)域。隨著嵌入式技術(shù)的發(fā)展日新月異,嵌入式以太網(wǎng)技術(shù)應(yīng)運而生。如何在嵌入式設(shè)備上實現(xiàn)嵌入式以太網(wǎng)技術(shù)并將嵌入式設(shè)備連接至互聯(lián)網(wǎng)具有重要的研究價值。

嵌入式設(shè)備能夠接入互聯(lián)網(wǎng),根本在于在嵌入式終端設(shè)備上實現(xiàn)了TCP/IP網(wǎng)絡(luò)通信,使得嵌入式設(shè)備上的數(shù)據(jù)成為可以在互聯(lián)網(wǎng)上傳輸?shù)臄?shù)據(jù)包。嵌入式設(shè)備不同于通用計算機系統(tǒng),嵌入式設(shè)備存儲資源有限,處理器的性能較低。因此,使嵌入式設(shè)備連接互聯(lián)網(wǎng)需要選擇嵌入式設(shè)備專用的操作系統(tǒng)和互聯(lián)網(wǎng)通信協(xié)議棧。嵌入式領(lǐng)域的實時操作系統(tǒng)主要有μCLinux、VxWorks、QNX、Palm OS、Windows CE和μC/OS-II等。其中μC/OS-II系統(tǒng)短小精悍,源碼公開,代碼結(jié)構(gòu)清晰明了,系統(tǒng)裁剪方便,是研究和學(xué)習(xí)嵌入式實時操作系統(tǒng)的首選[1-2]。在嵌入式領(lǐng)域,通常使用的嵌入式通信協(xié)議棧有BSD TCP/IP、LwIP、μIP、TinyTcp和μC/TCP-IP等[3]。其中μC/TCP-IP和μC/OS-II都是Micrium公司的產(chǎn)品,對于μC/OS-II操作系統(tǒng)而言,μC/TCP-IP的兼容性非常好。目前系統(tǒng)研究μC/TCP-IP的參考資料不多,對于移植μC/TCP-IP也沒有系統(tǒng)的資料,因此研究移植μC/TCP-IP更具有研究價值。

本文從工程應(yīng)用的角度首先介紹嵌入式以太網(wǎng)各層實現(xiàn)的功能,接著詳細地闡述嵌入式以太網(wǎng)硬件電路的設(shè)計,然后介紹系統(tǒng)的軟件架構(gòu),μC/OS-II操作系統(tǒng)移植,并詳細介紹如何移植μC/TCP-IP,實現(xiàn)嵌入式設(shè)備聯(lián)網(wǎng)功能,最后對整個通信系統(tǒng)進行功能測試。

1 嵌入式以太網(wǎng)和μC/TCP-IP協(xié)議

1.1 以太網(wǎng)物理層

IEEE802.3標(biāo)準(zhǔn)規(guī)定了以太網(wǎng)物理層的相關(guān)協(xié)議。物理層主要實現(xiàn)的功能有:

(1) 實現(xiàn)自協(xié)商功能。物理層在上電、管理命令發(fā)出或者是在用戶干預(yù)時發(fā)出快速鏈接脈沖(FLP),F(xiàn)LP序列包含本地以太網(wǎng)絡(luò)的鏈接能力:雙工模式、運行速率、流控等內(nèi)容。各方將自協(xié)商的能力值記錄在本地的自協(xié)商對端能力寄存器中,然后根據(jù)本地和對端的最大連接能力確定傳輸時的雙工模式、運行速率、流控等相關(guān)參數(shù)。

(2) 處理收發(fā)數(shù)據(jù)。發(fā)送數(shù)據(jù)時,接受到MAC層發(fā)送過來的數(shù)據(jù)之后將并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)流,按照物理層的編碼規(guī)則將數(shù)據(jù)編碼,再處理成模擬信號將數(shù)據(jù)傳送出去。接受數(shù)據(jù)的流程則與之相反。

(3) CSMA/CD功能。檢測鏈路中是否有數(shù)據(jù)在傳輸,檢測到鏈路為空閑時等待一個隨機時間將數(shù)據(jù)送出,若恰好和另外等待傳送數(shù)據(jù)的物理層同時送出了數(shù)據(jù),造成沖突,物理層可以檢測到這個沖突,利用多重算法重新計算等待的隨機時間值,這些算法使得兩臺主機之間再次發(fā)生沖突的概率很小[4-5]。

實際工程應(yīng)用中,上述(2)、(3)都是由物理層在合理的條件下由硬件自動完成,設(shè)計人員需要關(guān)注如何配置相關(guān)寄存器使得物理層可順利的實現(xiàn)自動協(xié)商。并從物理層相關(guān)寄存器中讀取自動協(xié)商的結(jié)果編寫合理的上層代碼。

1.2 以太網(wǎng)數(shù)據(jù)鏈路層

以太網(wǎng)數(shù)據(jù)鏈路層主要實現(xiàn)將上層需要發(fā)送的數(shù)據(jù)打包成以太網(wǎng)幀發(fā)送至物理層;將物理層接收的以太網(wǎng)幀提取IP包傳遞給IP層。

μC/TCP-IP協(xié)議棧將數(shù)據(jù)鏈路層分成了兩部分:(1) 涉及到具體硬件細節(jié)部分,由用戶編寫代碼,實現(xiàn)鏈路層的初始化和收發(fā)緩沖區(qū)的配置、實現(xiàn)物理層的接口代碼、實現(xiàn)上層接口代碼。(2) 無關(guān)具體硬件細節(jié)的部分。以太網(wǎng)幀和上層數(shù)據(jù)報之間的轉(zhuǎn)換,即添加、剝離幀頭幀尾部分工作由μC/TCP-IP協(xié)議棧實現(xiàn)。

1.3 μC/TCP-IP協(xié)議棧

μC/TCP-IP協(xié)議棧實現(xiàn)的功能主要有:

(1) 數(shù)據(jù)鏈路層的包處理功能、ARP協(xié)議;

(2) IP協(xié)議、ICMP協(xié)議;

(3) 傳輸層的協(xié)議:TCP和UDP協(xié)議[6]。

綜上所述,設(shè)計并實現(xiàn)基于μC/TCP-IP協(xié)議棧的嵌入式以太網(wǎng)通信關(guān)鍵在于:設(shè)計正確的硬件電路。在μC/OS-II的環(huán)境下編寫正確的物理層代碼、數(shù)據(jù)鏈路層代碼,實現(xiàn)以太網(wǎng)通信,并實現(xiàn)μC/TCP-IP與數(shù)據(jù)鏈路層的接口函數(shù)。如此,可成功將μC/TCP-IP移植到特定處理器上,并實現(xiàn)嵌入式設(shè)備和互聯(lián)網(wǎng)的通信。

2 硬件電路設(shè)計

恩智浦MK60DN512VLQ10(以下簡稱K60)微控制器是一款32位ARM微處理器,有512 KB的Flash、128 KB的RAM,100 M的運行速度,內(nèi)置以太網(wǎng)控制器。由于ROM、RAM空間大,在移植μC/OS-II和μC/TCP-IP時無需擴充內(nèi)存,降低硬件設(shè)計難度。

DP83640是TI公司設(shè)計的物理層芯片,3.3 V供電,工作溫度為-40~85 ℃,支持簡化媒體獨立接口RMII(Reduced Media Independent Interfac)和介質(zhì)獨立接口MII(Medium Independent Interface)接口,具備ESD保護等功能,可工作于主、從兩種模式,并支持IEEE1588時鐘。

K60內(nèi)置以太網(wǎng)控制器具有標(biāo)準(zhǔn)接口,可通過MII和RMII與DP83640連接,DP83640和以RJ45接口相連,構(gòu)成整個以太網(wǎng)收發(fā)的鏈路。MII和RMII接口都是標(biāo)準(zhǔn)的以太網(wǎng)接口,在相同線速的情況下,RMII需要的總線時鐘是MII總線時鐘的兩倍。同時MII比RMII多了一倍的I/O傳輸線[7]。本文從設(shè)計簡潔的角度出發(fā)選擇RMII接口連接,硬件電路連接的示意圖如圖1所示。

圖1 以太網(wǎng)硬件電路連接示意圖

K60內(nèi)部集成的以太網(wǎng)控制器MAC和PHY之間的RMII連接示意圖如圖2所示。

圖2 RMII接口示意圖

(1) RMII串行管理接口

RMII串行管理接口是雙信號接口,由串行管理接口的時鐘信號MDC、數(shù)據(jù)信號MDIO組成。通過串行管理接口,MAC層可以配置、讀取物理層的相關(guān)寄存器。從而達到相關(guān)的控制目的以及監(jiān)控PHY的狀態(tài)。

DP83640的串行管理接口的時鐘信號最高可達25 MHz,K60要求該時鐘信號小于等于2.5 MHz,因此在實際工程中需配置該時鐘信號不高于2.5 MHz,串行管理接口才可以正常工作。K60中該時鐘來源于內(nèi)部總線時鐘,其具體值由ENETn_MSCR[MII_SPEED]寄存器配置。

(2) 發(fā)送數(shù)據(jù)信號線

由發(fā)送使能位TX_EN和兩位發(fā)送數(shù)據(jù)線TXD[1∶0]組成。TX_EN置位表明TXD[1∶0]上的數(shù)據(jù)有效。TX_EN在前導(dǎo)碼的首個半字節(jié)出現(xiàn)時被硬件同步置“1”,在幀的最后半字節(jié)的首個時鐘信號出現(xiàn)之前被硬件置“0”。因此在實際工程中,這部分只需要將復(fù)合的I/O口配置成以太網(wǎng)的工作模式即可,硬件可自動完成其余工作。

(3) 接受數(shù)據(jù)信號線

由接受數(shù)據(jù)有效/載波感應(yīng)位CRS_DV(在RMII模式下,K60的該位同時還具備CRC功能)和兩位數(shù)據(jù)接受線RXD[1∶0]組成。類似于發(fā)送數(shù)據(jù)信號線,CRS_DV被硬件自動置“1”置“0”,無需用戶干預(yù),CRS_DV只有高時,接受數(shù)據(jù)信號線上的數(shù)據(jù)才有可能被接收到。在實際工程中,用戶只需將該復(fù)合I/O口配置成工作在以太網(wǎng)模式下即可,其余工作也是由硬件自動完成。

(4) 時鐘信號

連續(xù)時鐘X1/REF_CLK可以為CRS_DV、RXD[1∶0]、TX_EN、TXD[1∶0]等信號提供時鐘參考。在RMII模式下,K60要求該引腳的時鐘頻率為50 MHz。由于K60的RMII_REF_CLK內(nèi)部綁定在EXTAL上,并未有單獨的引腳出現(xiàn)。因此在實際工程中可選擇K60和DP83640共用50 MHz的有源晶振。確保MAC和PHY的RMII_REF_CLK時鐘源一致。當(dāng)然,還有另外的設(shè)計方式。

3 軟件總體設(shè)計

3.1 軟件架構(gòu)

本工程選用K60、DP83640作為硬件基礎(chǔ),選用μC/OS-II操作系統(tǒng)和μC/TCP-IP協(xié)議棧作為主要軟件框架。圖3是基于μC/TCP-IP協(xié)議棧的嵌入式以太網(wǎng)的整體軟件框架。

圖3 基于μC/TCP-IP協(xié)議棧的軟件框架

由整體軟件框架圖可知:

(1) 移植uC/OS-II操作系統(tǒng)需修改與處理器相關(guān)代碼、修改板級支持包的內(nèi)容。μC/OS-II官網(wǎng)提供操作系統(tǒng)的板級支持包。因此,針對不同的處理器只需要修改與處理器相關(guān)部分的代碼即可。

(2) μC/TCP-IP協(xié)議棧采用合理的分層結(jié)構(gòu),其中與硬件有關(guān)的代碼為物理層的net_phy.c/h文件以及數(shù)據(jù)鏈路層的net_mac.c/h文件。與操作系統(tǒng)有關(guān)的代碼是net_os.c/h文件。因此,μC/TCP-IP可以很方便的移植到不同的處理器上、不同的嵌入式實時操作系統(tǒng)上。

(3) 不考慮為上層代碼提供的接口函數(shù)時,物理層和MAC層只與硬件有關(guān)。這兩層代碼完成整個鏈路的硬件配置,可實現(xiàn)數(shù)據(jù)收發(fā)。而上層協(xié)議主要實現(xiàn)的是對收到的數(shù)據(jù)進行數(shù)據(jù)管理。因此,只需要物理層和MAC層的代碼就可以實現(xiàn)局域網(wǎng)的以太網(wǎng)通信。實際工程中,在移植μC/TCP-IP協(xié)議棧時可首先從編寫物理層和MAC層代碼出發(fā),利用這部分代碼測試鏈路是否完好,然后再增加和上層代碼的接口函數(shù)。從而降低移植難度。

3.2 移植uC/OS-II操作系統(tǒng)

由圖3可知,移植μC/OS-II至K60需要修改OS_CPU.H、OS_CPU_A.ASM和OS_CPU_C.C這三個文件,修改include.h文件包含相關(guān)的頭文件。

OS_CPU.H:這個文件中主要包含:(1) 對數(shù)據(jù)類型的定義,根據(jù)特定處理器的數(shù)據(jù)類型修改相關(guān)宏定義;(2) 定義堆棧的增長方向,ARM的堆棧增長方向是從高地址到低地址,置堆棧增長方向的宏為1;(3) 函數(shù)聲明:主要包括任務(wù)切換函數(shù)、中斷級任務(wù)切換函數(shù)、開始最高優(yōu)先級任務(wù)的函數(shù)、可懸起系統(tǒng)調(diào)用函數(shù)(PendSV處理函數(shù))、系統(tǒng)節(jié)拍中斷函數(shù)等的聲明。

OS_CPU_A.ASM:文件主要是使用匯編語言實現(xiàn)OS_CPU.H中聲明的函數(shù)

OS_CPU_C.C:文件中主要包含堆棧初始化函數(shù)和用戶hook函數(shù),最主要的是實現(xiàn)用戶堆棧初始化函數(shù),hook函數(shù)做簡單的聲明即可,在有具體需求時再作改寫[8-10]。

3.3 移植μC/TCP-IP協(xié)議棧

由軟件架構(gòu)可知,移植μC/TCP-IP協(xié)議棧主要包含四個文件的編寫:net_phy.c/h和net_mac.c/h。

3.3.1 物理層

其中物理層net_phy.c/h文件主要包含兩個內(nèi)部函數(shù)和三個外部函數(shù)。

外部函數(shù)為:

(1) 物理層初始化函數(shù):初始化串行管理接口的MDC時鐘,如果對芯片的其他引腳設(shè)置了保護電路,在這個函數(shù)中配置正常工作時的引腳電平。

(2) 物理層自協(xié)商函數(shù):返回自協(xié)商的結(jié)果,包括雙工模式、傳輸速率。

(3) 物理層連接狀態(tài)函數(shù):返回鏈路的連接狀態(tài)。鏈路連接狀態(tài)良好返回1,鏈路未能成功建立連接返回0。

內(nèi)部函數(shù)包括:

(1) 寫PHY寄存器的函數(shù):配置K60的相關(guān)寄存器,使得串行管理接口通過MDIO將特定值寫入DP83640的特定寄存器。

(2) 讀PHY寄存器的函數(shù):配置K60的相關(guān)寄存器,使得串行管理接口通過MDIO從DP83640中讀取指定地址中的寄存器的值。

內(nèi)部函數(shù)主要供三個外部函數(shù)調(diào)用,外部函數(shù)供MAC層調(diào)用,外部函數(shù)即物理層和數(shù)據(jù)鏈路層之間的接口。實際工程中,在搭建完硬件電路之后,通過編寫物理層代碼測試是否可以實現(xiàn)自協(xié)商可驗證電路設(shè)計的正確性。

3.3.2 數(shù)據(jù)鏈路層

數(shù)據(jù)鏈路層函數(shù)主要涉及初始化、以太網(wǎng)幀的發(fā)送和以太網(wǎng)幀的接收[11-12]。為了進行幀的收發(fā),以太網(wǎng)的MAC需要將收發(fā)的數(shù)據(jù)存放在發(fā)送/接收緩沖區(qū)中,這些緩沖區(qū)通常位于片內(nèi)RAM,當(dāng)然,可以位于任何DMA能夠訪問到的位置。以太網(wǎng)MAC通過緩沖區(qū)描述符BD來管理相應(yīng)的緩沖區(qū)描述符。需要注意的是,K60中緩沖區(qū)描述符是以大端格式存儲操作的,且發(fā)送/接收緩沖區(qū)描述符的環(huán)起始地址寄存器的低三位為0。因此首個接受/發(fā)送緩沖區(qū)描述符的首地址需要8字節(jié)對齊。如果使用數(shù)組作為發(fā)送/接受緩沖區(qū),需要手動尋找8字節(jié)對齊的地址作為接受/發(fā)送緩沖區(qū)的首地址。

數(shù)據(jù)鏈路層的初始化所做的主要工作有:

1) 創(chuàng)建NetOS_NIC_TxRdySignalPtr信號量并初始化為1。在每一幀發(fā)送之前需請求該信號量。

2) 配置MAC模塊本身的時鐘和引腳復(fù)用。

3) 復(fù)位以太網(wǎng)模塊。

4) 配置本地的MAC地址,初始化發(fā)送/接受緩沖區(qū)描述符。

5) 配置以太網(wǎng)的中斷函數(shù)。μC/TCP-IP涉及到的中斷有三個:發(fā)送中斷、接受中斷、錯誤中斷。

6) 配置接收器和發(fā)送器的工作模式和屬性。

7) 設(shè)置最大接收幀長度,設(shè)置哈希表單播寄存器和組播寄存器。

8) 調(diào)用物理層的初始化函數(shù)完成物理層的初始化,調(diào)用物理層的自協(xié)商函數(shù)完成自協(xié)商并將協(xié)商結(jié)果寫入MAC的相關(guān)寄存器中,調(diào)用物理層的鏈路連接狀態(tài)函數(shù)獲取鏈路的連接狀態(tài)為全局變量NetNIC_ConnStatus賦值。

9) 配置MAC的中斷寄存器使能相關(guān)中斷,使能以太網(wǎng)模塊,激活接收緩沖區(qū)描述符。

初始化函數(shù)中涉及到μC/TCP-IP細節(jié)為:初始化NetOS_NIC_TxRdySignalPtr信號量為1;獲取鏈路連接狀態(tài)為全局變量NetNIC_ConnStatus賦值。余下的操作是為了實現(xiàn)正常的以太網(wǎng)通信進行的配置。數(shù)據(jù)鏈路層初始化的函數(shù)NetNIC_Init()在μC/TCP-IP協(xié)議棧初始化的時候調(diào)用。

數(shù)據(jù)發(fā)送流程:

以太網(wǎng)的數(shù)據(jù)發(fā)送主要涉及到將發(fā)送的數(shù)據(jù)寫入發(fā)送緩沖區(qū)中,通過設(shè)置緩沖區(qū)描述符以及相關(guān)寄存器將數(shù)據(jù)發(fā)送出去。μC/TCP-IP協(xié)議對發(fā)送過程增加了部分限制條件,具體發(fā)送過程如下:

1) 獲取鏈路連接狀態(tài),如果連接狀態(tài)不正常需要丟棄該幀并返回錯誤碼。

2) 對上層傳送下來的數(shù)據(jù),取出需要發(fā)送的數(shù)據(jù)的頭指針,以及需要發(fā)送的字節(jié)數(shù)。

3) 等待NetOS_NIC_TxRdySignalPtr信號量,如果成功獲取該信號量該流程得以繼續(xù)執(zhí)行,否則執(zhí)行該流程的任務(wù)被掛起,直到該信號量被釋放或者是等待超時。

4) 若在第三步成功等到該信號量,就可以調(diào)用發(fā)送函數(shù)將數(shù)據(jù)發(fā)送出去。

以上所述的流程都存在于IF層的net_if_pkt.c的NetIF_Pkt_Tx()函數(shù)中,該文件或者說該函數(shù)屬于μC/TCP-IP協(xié)議與硬件無關(guān)、與操作系統(tǒng)無關(guān)的部分。底層實現(xiàn)與具體與硬件相關(guān)的細節(jié),最后抽象成接口函數(shù)供NetIF_Pkt_Tx()函數(shù)調(diào)用。實際工程中,在實現(xiàn)將數(shù)據(jù)寫入發(fā)送緩沖區(qū)并發(fā)送出去之后,對于移植μC/TCP-IP而言,從上述提及的四點出發(fā),按照μC/TCP-IP協(xié)議棧給出的接口函數(shù)的名稱,實現(xiàn)相應(yīng)接口函數(shù)即可。其中,獲取鏈路狀態(tài)已在初始化部分提及;取出發(fā)送數(shù)據(jù)的頭指針和字節(jié)數(shù)無需用戶修改;NetOS_NIC_TxRdySignalPtr信號量在初始化時創(chuàng)建并設(shè)置初始值為1,移植時需要在每一次發(fā)送中斷中釋放該信號量,保證μC/TCP-IP協(xié)議一次只能且能成功發(fā)送一幀數(shù)據(jù);數(shù)據(jù)發(fā)送根據(jù)μC/TCP-IP協(xié)議給出的函數(shù)名實現(xiàn)以太網(wǎng)的數(shù)據(jù)發(fā)送功能即可。

數(shù)據(jù)接收流程:

以太網(wǎng)的數(shù)據(jù)接收是將接收到數(shù)據(jù)從接收數(shù)據(jù)緩沖區(qū)中讀出來,再配置相關(guān)的接收緩沖區(qū)描述符,配置相關(guān)的以太網(wǎng)寄存器。μC/TCP-IP協(xié)議基于此過程實現(xiàn)對收到的數(shù)據(jù)加工處理。類似于數(shù)據(jù)發(fā)送流程,移植的關(guān)鍵在于找到μC/TCP-IP協(xié)議棧管理接收數(shù)據(jù)的接口。

μC/TCP-IP協(xié)議棧專門申請了一個任務(wù)NetOS_IF_RxTask(),該函數(shù)位于net_os.c中,只用于數(shù)據(jù)接收以及對接收到的數(shù)據(jù)進行處理的作用[13]。處理接收數(shù)據(jù)的大致流程如下:

1) 申請信號量NetOS_IF_RxQ_SignalPtr。如果成功申請該信號量,流程得以繼續(xù)進行,否則這個任務(wù)掛起。該信號量具體是在net_os.c文件中NetOS_IF_Init()函數(shù)初始化為0,由Net_Init()協(xié)議棧初始化函數(shù)調(diào)用,如果使用的是μC/OS-II系統(tǒng),該信號量的創(chuàng)建代碼無須更改。該信號量初始化為0,在接收中斷中釋放,從而MAC可在接收到一幀數(shù)據(jù)之后通過中斷通知μC/TCP-IP來處理該幀數(shù)據(jù)。

2) 讀取接收到的數(shù)據(jù)包的大小并判斷接收到的字節(jié)數(shù)是否在60字節(jié)至1 518字節(jié)之間。如果不在就要丟棄該包。

3) 調(diào)用接收函數(shù)將數(shù)據(jù)讀取入?yún)f(xié)議棧申請的存儲空間中。

綜上,尋找μC/TCP-IP協(xié)議棧的發(fā)送函數(shù)對外接口,需要從接收任務(wù)的代碼開始,往下尋找。主要涉及到NetOS_IF_RxQ_SignalPtr信號量的釋放;獲得接收數(shù)據(jù)包大小函數(shù)的編寫;以及如何將接收到的數(shù)據(jù)從以太網(wǎng)接收緩沖區(qū)中讀出來。

3.3.3 配置文件的修改

正確地完成net_phy.c/h、net_mac.c/h文件的編寫之后,還需要正確配置一些變量,才可使得μC/TCP-IP協(xié)議棧正常的工作。

1) 接收任務(wù)的優(yōu)先級配置:只是移植μC/TCP-IP協(xié)議做一些簡單的測試時,該項參數(shù)只需設(shè)置賦值即可,但是當(dāng)任務(wù)較多,先后次序有要求的時候該任務(wù)的優(yōu)先級需要根據(jù)實際情況合理的設(shè)置。

2) μC/TCP-IP協(xié)議棧中網(wǎng)絡(luò)緩沖區(qū)buff的個數(shù)設(shè)置:μC/TCP-IP協(xié)議棧設(shè)置的大buff的容積為1 596字節(jié),小buff的容積為256字節(jié),如果設(shè)置得個數(shù)過多的話,會導(dǎo)致RAM存儲空間不夠,如果設(shè)置得過少的話可能會使得程序出錯??紤]到ARP協(xié)議會申請小的buff,建議單向收或者發(fā)測試時,小buff的個數(shù)為3個以上,雙向同時收發(fā)測試時小buff為5個以上;大buff的個數(shù)根據(jù)發(fā)送的數(shù)據(jù)來定,如果發(fā)送、接收的數(shù)據(jù)沒必要使用到大的buff,可以不申請。

3) IP地址的設(shè)置:移植完成μC/TCP-IP協(xié)議之后,若需要實現(xiàn)通信必須為本地設(shè)備分配IP地址、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)。涉及到的變量有APP_CFG_IP_ADDR_STR_THIS_HOST、APP_CFG_IP_ADDR_STR_NET_MASK、APP_CFG_IP_ADDR_STR_DFLT_GATEWAY??墒褂渺o態(tài)IP地址,手工為這幾個值賦值。也可以考慮移植DHCP協(xié)議,向路由器申請這幾個變量的值。本文使用靜態(tài)IP地址進行的相關(guān)測試。

4 系統(tǒng)測試

4.1 測試環(huán)境搭建

使測試所需工具:兩個嵌入式硬件平臺、兩根雙絞線、一臺路由器、一臺PC機。物理連接如圖4所示。

圖4 測試環(huán)境連接示意圖

圖4(a)中嵌入式硬件平臺A和B分別用于模擬客戶端與服務(wù)器,圖4(b)中嵌入式硬件平臺和PC即作為服務(wù)器也作為客戶端。

4.2 功能測試

1) 硬件平臺之間的通信測試

測試采用靜態(tài)IP的方式配置IP地址。在客戶端,設(shè)置IP地址:192.168.1.110,子網(wǎng)掩碼:255.255.255.0,默認(rèn)網(wǎng)關(guān):192.168.1.1,硬件MAC地址:00:CF:52:35:00:01。在服務(wù)器,設(shè)置IP地址:192.168.1.100,子網(wǎng)掩碼:255.255.255.0,默認(rèn)網(wǎng)關(guān):192.168.1.1,硬件MAC地址:00:AB:CD:EF:00:01??蛻舳讼蚍?wù)器發(fā)送的數(shù)據(jù)為字符串“hello, world!!!”。測試結(jié)果如圖5所示。

LCD顯示屏的第一行:Linked!?。”硎炬溌愤B接正常。第二行的三位數(shù)的計數(shù)值是表示接收到的幀數(shù),實驗結(jié)果表明,RJ45口的LED燈每閃爍一次該值就增加1;第三行的三位數(shù)表示收到幀的字節(jié)數(shù);第四行顯示接收到的內(nèi)容;第五行的三位數(shù)表示服務(wù)器發(fā)送出的幀數(shù)。

實驗結(jié)果表明,硬件平臺之間可以正常通信。客戶端可以正常接收到服務(wù)器發(fā)送的數(shù)據(jù)。μC/TCP-IP協(xié)議棧的移植是成功的。

2) 硬件平臺和PC間的通信測試

將PC換成有線連接,為其有線網(wǎng)卡分配IP地址,打開“cmd”窗口,輸入“ipconfig”命令,查看PC的IP地址如圖6所示,更改客戶端機的相關(guān)參數(shù)。打開路由器的配置界面,查看當(dāng)前以分配的IP地址,為嵌入式硬件平臺配置一個未分配的IP地址,防止地址沖突,本文配置成192.168.1.113。

圖6 PC機的IP地址、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)

使用wireshark抓取嵌入式目標(biāo)板和PC機通信的整個過程如圖7所示。

圖7 嵌入式平臺和PC機之間的通信結(jié)果

實驗結(jié)果顯示,嵌入式平臺首先發(fā)出一幀ARP報文詢問IP地址為192.168.1.112的MAC地址。PC機識別這幀ARP報文并回應(yīng)一幀ARP報文,將自己的MAC地址告訴嵌入式平臺。這也解釋了在兩個硬件平臺之間做測試時,作為服務(wù)器的硬件平臺發(fā)送的幀數(shù)顯示為1。此后,嵌入式平臺可以和PC之間正常通信,如發(fā)送一幀UDP報文,報文內(nèi)容為:“Hello,PC~”測試TCP通信結(jié)果如圖8所示。

圖8 TCP的通信結(jié)果測試

實驗結(jié)果再次表明, μC/TCP-IP協(xié)議的移植是成功的,UDP、TCP都可實現(xiàn)通信功能,嵌入式設(shè)備在移植μC/TCP-IP協(xié)議之后可接入互聯(lián)網(wǎng)。

5 結(jié) 語

本文從工程應(yīng)用的角度出發(fā)介紹了以太網(wǎng)協(xié)議的物理層和數(shù)據(jù)鏈路層的主要作用,以及電路連接原理,并結(jié)合μC/TCP-IP協(xié)議棧介紹了軟件設(shè)計流程,最后詳細介紹了如何移植μC/TCP-IP協(xié)議棧。并對整個移植結(jié)果進行測試,測試結(jié)果表明實現(xiàn)了以太網(wǎng)通信,實現(xiàn)了嵌入式設(shè)備以TCP、UDP方式接入互聯(lián)網(wǎng)。本文進一步的研究方向是對移植好的代碼從實際工程應(yīng)用的角度出發(fā)做代碼優(yōu)化,并基于μC/TCP-IP協(xié)議的基礎(chǔ)上研究嵌入式聯(lián)網(wǎng)的信息安全技術(shù)。

[1] 徐海龍,邱建,王曉娜,等.μC/OS-Ⅱ的優(yōu)化移植和設(shè)備驅(qū)動框架設(shè)計[J].計算機測量與控制,2012,20(9):2501-2503.

[2] 郝玉勝,逯玉蘭.基于uC/OS-II的嵌入式網(wǎng)絡(luò)通信模塊[J].計算機與現(xiàn)代化,2014(2):142-146,153.

[3] 陸旭.基于μC/OS-Ⅱ和LwIP的嵌入式設(shè)備監(jiān)控平臺研究[D].重慶大學(xué),2013.

[4] 王多.基于IEEE802.3標(biāo)準(zhǔn)的10M/100M以太網(wǎng)MAC控制器設(shè)計[D].江南大學(xué),2013.

[5] 謝希仁.計算機網(wǎng)絡(luò)[M].北京:電子工業(yè)出版社,2008.

[6] 范道威,曲波,楊曄.基于ARM9和μC/OS-Ⅱ的μC/TCP-IP協(xié)議棧移植[J].蘇州大學(xué)學(xué)報(工科版),2010,30(4):49-53.

[7] 宋鑫,郭勇,謝興紅.RMII模式以太網(wǎng)PHY芯片DP83848C的應(yīng)用[J].單片機與嵌入式系統(tǒng)應(yīng)用,2010(8):50-53.

[8] 王曉鳴,王樹新,張宏偉.實時操作系統(tǒng)μC/OS-II在ARM上的移植[J].機電一體化,2007(1):56-58.

[9] 滕艷平,賈思禹,金梅,等.基于ARM11的μC/OS-II操作系統(tǒng)內(nèi)核移植實驗的設(shè)計[J].實驗技術(shù)與管理,2016,33(3):142-146.

[10] 邵貝貝.嵌入式實時操作系統(tǒng)μC/OS-II [M].北京:清華大學(xué)出版社,2009.

[11] 栗清樂,賴康生.基于ARM的嵌入式以太網(wǎng)設(shè)計[J].工業(yè)控制計算機,2014(6):7-8.

[12] 王國法,劉薇,段明瑋.基于嵌入式系統(tǒng)的以太網(wǎng)通信開發(fā)[J].光通信技術(shù),2012,36(4):40-42.

[13] Li J,Zheng W,Shen C,et al.Application of Modbus Protocol Based on μC/TCPIP in Water Saving Irrigation in Facility Agricultural[C]//International Conference on Computer and Computing Technologies in Agriculture. Springer Berlin Heidelberg,2013:281-288.

EMBEDDEDETHERNETCOMMUNICATIONSYSTEMBASEDONμC/TCP-IPPROTOCOLSTACK

Li Yihan Shi Chun Wu Gang

(InstituteofIndustrialAutomation,DepartmentofAutomation,UniversityofScienceandTechnologyofChina,Hefei230026,Anhui,China)

As the Internet technology has grown and matured, a large number of embedded devices have connected to the Internet as well. To realize the communication between embedded devices and the Internet, we take into account the limitations of embedded devices with its own resources. This article chooses NXP’s MK60DN512VLQ10 microcontroller and TI’s DP83640 physical layer transceiver as the basis for designing embedded Ethernet communication system, transplanting μC/OS-II operating system, transplanting μC/TCP-IP communication protocol stack. The experimental results show that UDP links and TCP links can be established between board and board, as well as board and PC.

K60 DP83640 μC/OS-II μC/TCP-IP

TP3

A

10.3969/j.issn.1000-386x.2017.09.031

2016-11-15。李逸瀚,碩士生,主研領(lǐng)域:嵌入式以太網(wǎng)通信,車聯(lián)網(wǎng)信息安全。石春,高工。吳剛,教授。

猜你喜歡
嵌入式
Focal&Naim同框發(fā)布1000系列嵌入式揚聲器及全新Uniti Atmos流媒體一體機
TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應(yīng)用
電子制作(2019年7期)2019-04-25 13:17:14
基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
嵌入式系統(tǒng)通信技術(shù)的應(yīng)用
電子制作(2018年18期)2018-11-14 01:48:16
嵌入式PLC的設(shè)計與研究
電子制作(2018年16期)2018-09-26 03:27:18
搭建基于Qt的嵌入式開發(fā)平臺
基于嵌入式系統(tǒng)Windows CE的應(yīng)用程序開發(fā)
嵌入式單片機在電機控制系統(tǒng)中的應(yīng)用探討
電子制作(2017年8期)2017-06-05 09:36:15
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
Altera加入嵌入式視覺聯(lián)盟
主站蜘蛛池模板: 精品福利网| 亚洲永久色| 超碰精品无码一区二区| 国产欧美日韩精品综合在线| 农村乱人伦一区二区| 久久五月天国产自| 日韩麻豆小视频| 国产91无毒不卡在线观看| 国产男女免费完整版视频| 国产女人18毛片水真多1| 久久综合五月婷婷| 国产爽妇精品| 久久大香香蕉国产免费网站| 日本午夜影院| 日韩精品资源| 玖玖免费视频在线观看| 亚洲精品无码成人片在线观看| 秋霞午夜国产精品成人片| 亚洲无码91视频| 色欲综合久久中文字幕网| 国产精品播放| 国产三级视频网站| 自拍欧美亚洲| 欧美日韩国产综合视频在线观看 | 在线观看亚洲精品福利片| 欧美日韩在线观看一区二区三区| 久久频这里精品99香蕉久网址| 国产成人高清在线精品| 亚洲国产天堂久久综合226114| 亚洲国产在一区二区三区| 极品私人尤物在线精品首页 | 无码综合天天久久综合网| 色爽网免费视频| 欧美日韩一区二区三区四区在线观看| 国产精品女同一区三区五区| 男人的天堂久久精品激情| 色综合狠狠操| 久久精品一卡日本电影| 国产经典免费播放视频| 一本大道在线一本久道| 国产a在视频线精品视频下载| 日韩精品一区二区三区大桥未久| 黄色污网站在线观看| 手机在线看片不卡中文字幕| 日韩色图区| 亚洲精品视频免费观看| 久久这里只有精品2| 欧美午夜在线观看| 丁香婷婷久久| 永久免费无码日韩视频| 国产嫩草在线观看| 91亚洲精品国产自在现线| 色婷婷色丁香| 无码一区二区波多野结衣播放搜索| 99ri精品视频在线观看播放| 丝袜美女被出水视频一区| 国产91高清视频| 热热久久狠狠偷偷色男同| www.91在线播放| 日本不卡视频在线| 国产精品视频3p| 亚洲国产日韩视频观看| 91蜜芽尤物福利在线观看| 国产一区二区丝袜高跟鞋| 天天做天天爱夜夜爽毛片毛片| 久久综合色天堂av| 亚洲日韩AV无码精品| 国产久草视频| 国产精品女人呻吟在线观看| 69视频国产| 国产小视频网站| 久久a级片| 中国国语毛片免费观看视频| 在线高清亚洲精品二区| 免费AV在线播放观看18禁强制| 国产人前露出系列视频| 91人妻日韩人妻无码专区精品| 欧美在线精品怡红院| 国产在线视频导航| 99久视频| 亚洲天堂视频网站| 日韩精品一区二区三区中文无码|