色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

EtherCAT EOE移植及上手說明

RT-Thread官方賬號 ? 2024-09-12 08:11 ? 次閱讀

01

EtherCAT介紹

1

EtherCAT狀態機制

ESM (EtherCAT state machine)是用來在啟動或者工作時協調主站和從站關系用的,由應用層控制器將從站應用的狀態寫入AL狀態寄存器,主站通過寫AL控制寄存器進行狀態請求。因此從邏輯上說,ESM位于EtherCAT從站控制器與應用之間。

78dcef68-709b-11ef-bb4b-92fbcf53809c.png

如下所示,它包含 EtherCAT狀態轉換的過程。

運行狀態

描述

Initial

初始化狀態

Pre-Operational

預運行狀態

Safe-Operational

安全運行狀態

Operational

運行狀態

初始狀態(Init)

此時應用層無通信,沒有郵箱通信也沒有過程數據通信

轉換到預工作狀態(Init to Pre-Op)

主站配置地址和SM,用于進行郵箱通信;同時主站請求向Pre-Op模式轉換;接著從站檢查郵箱是否初始化正確

安全工作狀態(Safe-Op)

在這一階段,從站應用程序將傳輸實際輸入數據,此時主站并不對從站輸出進行操作,并將輸出模式設為安全狀態

轉換到工作狀態(Safe Op to Op)

這一階段主站開始發送有效的輸出數據,同時請求向工作模式轉換

工作狀態(Op)

此時主站的輸入和輸出均有效,可以進行過程數據的通信

Bootstrap狀態

此外還有個Bootstrap狀態,該狀態作為可選項,一般是在固件更新時使用,該狀態只允許從初始狀態切換到該狀態,在此狀態期間是沒有過程數據通信的,一般是用于FOE協議文件傳輸或固件升級的

下面是具體的一些狀態轉換,此處不再說明

狀態轉換

描述

IP

啟動郵箱通訊

PI

停止郵箱通訊

PS

啟動輸入更新

SP

停止輸入更新

SO

啟動輸出更新

OS

停止輸出更新

OP

停止輸入輸出更新

SI

停止輸入更新,停止郵箱通訊

OI

停止輸入輸出更新,停止郵箱通訊

IB

啟動bootstrap模式

BI

重啟節點

2

EtherCAT尋址

EtherCAT通信是指主設備從EtherCAT從設備的內部閃存讀取和寫入數據,通常來說有兩種尋址方式來控制內部的ESC寄存器:

1)設備尋址

在設備尋址時,EtherCAT子報文頭內的32位地址分為16位從站設備地址和16位從站設備內部物理存儲空間地址。設備尋址時,每個報文只尋址唯一的一個從站設備,但對于尋址機制又分為兩種:

順序尋址:使用順序尋址時,從站的地址由其在網段內的連接位置確定,用一個負數來表示每個從站在網段內由接線順序決定的位置。順序尋址子報文在經過每個從站設備時,其順序地址加1,從站在接收報文時,順序地址位0的報文就是尋址到自己的報文,因此這種尋址機制也被稱為“自動增量尋址”;

78e64a86-709b-11ef-bb4b-92fbcf53809c.png

例如:主站發起三個子報文分別去尋址三個從站,其中地址分別為0,-1,-2,如上圖中的數據幀1,數據幀在到達從站1時,從站1檢查到子報文1中的地址為0,從而得知子報文1就是尋址到自己的報文,數據幀經過從站1后,所有的順序地址都增加1,稱為1,0,-1,以此類推...

在設置尋址時,從站的地址與其在網段內的連接順序無關,地址可以由主站在數據鏈路層啟動階段配置EtherCAT ID給從站;也可以由從站在上電初始化時從自身的EEPROM內部讀取EtherCAT ID進而分配地址。

2)邏輯尋址

前面講的設備尋址一般來說只針對某一從站進行讀寫操作,并且是在掃描階段去使用的,相對與邏輯尋址來說并不常見。邏輯尋址面向過程數據,可以實現多播,同一個子報文可以讀取多個從站設備。

在邏輯尋址時,從站地址并不是單獨定義的,而是使用了尋址段內4G邏輯地址空間中的一段區域,報文內的32位地址作為整體的數據邏輯地址完成對設備的邏輯尋址。

而談到邏輯尋址,需要了解FMMU(現場總線內存管理單元),邏輯尋址由FMMU實現,在ESC(從站控制器),主要負責邏輯地址與物理地址的映射,用于將過程數據映射到主站,從而減輕主站的存儲器管理負擔。

當從站設備收到一個數據邏輯尋址的EtherCAT子報文時,會檢查是否由FMMU單元地址匹配,如果有的話,就會將輸入類型數據插入至EtherCAT子報文數據區的對應位置。


3

EtherCAT從站同步模式

EtherCAT從站同步模式主要分為以下幾種:

(1)自由運行模式(Free Run Mode)

在此模式下,從站設備獨立于主站運行,內部沒有同步到任何外部信號。設備的周期性操作由內部時鐘定時器控制,通常用于非實時要求的應用場景。

(2)分布式時鐘模式(Distributed Clocks,DC

分布式時鐘是 EtherCAT 的關鍵同步機制之一,廣泛用于需要高精度同步的場景。在 DC 模式下,所有 EtherCAT 從站通過一個參考時鐘(通常由主站或某個從站提供)實現時間同步。每個從站都會調整其內部時鐘,使所有設備在微秒級別內同步。此模式適用于需要精確協調多個設備動作的應用,例如運動控制。

(3)同步管理器事件模式(SyncManager Event Mode)

前面我們說了,FMMU主要用于地址映射,尋找對應的地址(尋址),那SyncManager就是用于交換數據,將數據同步進去。

在此模式下,從站設備通過 SyncManager 同步數據傳輸。每當主站寫入或讀取 SyncManager 寄存器時,從站的同步管理器事件會觸發中斷,從而引發應用程序的執行。這個模式下的同步精度不如 DC 模式高,通常用于不需要嚴格時間同步的應用場合。

SyncManager主要有兩種模式:

1)郵箱(單緩存模式)

78ec901c-709b-11ef-bb4b-92fbcf53809c.png

使用單個緩存區,通過握手的機制完成數據交換,一般情況下,一端在完成數據的讀寫后,另一端才能訪問該緩存區,這樣可以保證數據不被丟失。

一般來說,數據發送方首先將數據寫入緩存區,此時緩存區被鎖定為只讀狀態,一直等到數據接收方將數據讀走。

該模式通常使用在非周期性的數據交換,分配的緩存區也叫郵箱。

郵箱模式通常使用兩個SM通道,一般情況下主站到從站通信使用SM0,從站到主站通信使用SM1。

對于郵箱模式來說,分析其主從站的通信模式:

主站到從站的通信:主站必須檢查從站郵箱命令中的應答工作計數器(Working counter),如果工作計數器沒有增加(通常是因為從站沒有完全讀取上一條命令),或者在規定時間期限內沒有響應,主站必須重發該郵箱命令。

從站到主站到通信:主站必須確定從站是否用郵箱命令填滿了SM,并且盡快地發送適當的讀命令

2)緩存

78fdb09a-709b-11ef-bb4b-92fbcf53809c.png

使用三個緩存區,允許EtherCAT主站的控制權和從站控制器在做任何時候都訪問數據交換緩存區。

接收數據的那一方隨時可以得到最新的數據,數據發送那一方也可以隨時更新緩存區里的內容。

假如寫緩存區的速度比讀緩存區的速度快,則舊數據就會被覆蓋。


02

軟件開發環境說明

IAR 9.50.2

RZSC v2.0.0

Slave Stack Code (SSC) Tool Version 5.13

Beckhoff Automation TwinCAT3

03

安裝Patch軟件

下載 mingw-get-setup.exe 并根據提示安裝“Mingw-installation-manager”,若安裝完成,出現“Mingw-installation-manager”窗口,在左側窗口中選擇“Basic Setup”,在右側窗口中右鍵點擊“msys-base-bin”,選擇“Mark for Installation”。

79249426-709b-11ef-bb4b-92fbcf53809c.png

在左側窗口中選擇“All Packages”,在右側窗口中右鍵單擊“msys-patch-bin”,并選擇“標記為安裝”。

7934b14e-709b-11ef-bb4b-92fbcf53809c.png

在上面的菜單欄中的安裝中選擇“Apply Changes”

79452254-709b-11ef-bb4b-92fbcf53809c.png

顯示“Schedule of Pending Actions”窗口,單擊“應用”按鈕。

如果顯示“All changes were applied successfully; you may now clone this dialogue”,則表示安裝 patch.exe 成功。

將安裝的 patch.exe 的路徑注冊到系統環境變量中。注冊后,重新啟動電腦

795667d0-709b-11ef-bb4b-92fbcf53809c.png

啟動命令提示符,輸入“where patch”。如果顯示了安裝的patch.exe的路徑,則沒有問題。

7963db86-709b-11ef-bb4b-92fbcf53809c.png

04

EtherCAT EOE 從站代碼生成

從 renesas 官網下載 EtherCAT 示例包(https://www.renesas.cn/cn/zh/document/scd/rzt2m-group-ethercat-sample-program-package?r=1574901),解壓后打開 common\ecat_EoE_lwIP\SSCconfig 目錄下的 RZT2 EtherCAT EoE.esp 文件,點擊上方導航欄的 Project-> Create_new_Slaver_Files,依次配置 Source Folder(生成文件位置需向下延伸一級目錄 Src) 和 ESI File。

7979ffb0-709b-11ef-bb4b-92fbcf53809c.png

798d4520-709b-11ef-bb4b-92fbcf53809c.png

回到目錄 common\ecat_EoE_lwIP\Patch ,執行腳本 apply_patch_ewarm_xSPI0.bat 將生成的從站代碼移動到工程目錄下。


05

EOE Ethernet配置

首先使用FSP打開工程下的 configuration.xml 文件,添加EtherCAT SSC Port Stack,并進行配置:

79ac0140-709b-11ef-bb4b-92fbcf53809c.png

使能網卡類型、配置網卡設備參數,這里我們添加兩個phy(phy0和phy1):

79cf1720-709b-11ef-bb4b-92fbcf53809c.png

ETHER_ETH配置

79d4cb34-709b-11ef-bb4b-92fbcf53809c.png

ETHER_ESC配置

79fba5c4-709b-11ef-bb4b-92fbcf53809c.png

ETHER_GMAC配置

7a005f38-709b-11ef-bb4b-92fbcf53809c.png

為ethercat_ssc_port添加cmt定時器并配置中斷優先級

7a1d91e8-709b-11ef-bb4b-92fbcf53809c.png

添加Ethernet

7a2bd320-709b-11ef-bb4b-92fbcf53809c.png

ethernet中斷觸發回調設置為:vEtherISRCallback

7a364328-709b-11ef-bb4b-92fbcf53809c.png

到這里,FSP的配置就告一段落了。


06

EOE工程簡述

移植后的RT-Thread EtherCAT EOE工程目錄層次如下所示:

7a5f0826-709b-11ef-bb4b-92fbcf53809c.png

其中EOE功能的主要部分位于 board/port/ethercat 目錄下,對于各個文件夾的解釋如下:

application:初始化并配置以太網接口及LWIP TCP/IP協議棧,同時實現一個lwip的TCP服務器;

beckhoff:EtherCAT協議棧從站代碼,由SSC生成;

module:設計了一套實例管理器模式,根據ethernet netif及lwip port返回的事件進行階段性處理。

ether_netif:分別創建三個ethernet線程,負責以太網的讀(eth_reader)、寫(eth_writer)及以太網事件監測回調處理(eth_monitor);

lwip_port:創建兩個lwip port線程,一個負責接收以太網Link回調并將其廣播給netif,另外一個負責接收以太網回調并將參數映射到實例管理器管理的所有接口中;為lwip注冊網絡接口的同時,處理Link事件及回調

renesas:主要包括EtherCAT數據幀的校驗和處理,并根據AL狀態碼處理不同的運行狀態,此外還包括對輸入輸出數據的映射生成和處理等等。

此外在main線程中,會靜態初始化兩個線程:

main_thread:EtherCAT SSC端口及PHY初始化,EtherCAT從站初始化,運行EtherCAT從站主循環,處理主站的通信請求、更新AL狀態機等等。

ecat_thread:初始化并啟動LWIP內核

07

以太網PHY初始化配置

這部分的初始化配置在ecat_thread中,進入RM_ETHERCAT_SSC_PORT_Open(), 這個EtherCAT 接口配置函數之后,可以看到EtherCAT Slave Controller 的一些初始化配置,其中就包括了PHY 的初始化:

7a746072-709b-11ef-bb4b-92fbcf53809c.png

7a9bf880-709b-11ef-bb4b-92fbcf53809c.png這里初始化的一個PHY 實例是:p_ether_phy_instance,它是一個 ether_phy_instance_t 類型的變量,這個PHY 的實例是在調用RM_ETHERCAT_SSC_PORT_Open函數的時候形參傳遞進來的,也就是 gp_ethercat_ssc_port。這種設計方式在下面的ether_netif及lwip port中的定義也有體現。

typedef struct st_ether_phy_instance
{
ether_phy_ctrl_t * p_ctrl; /// 指向PHY實例的控制結構體
ether_phy_cfg_t const * p_cfg; /// 指向實例配置的結構體指針
ether_phy_api_t const * p_api; /// 配置過程中用到的API操作方式所組成的結構體指針
} ether_phy_instance_t;

也就是說其實此處其實打開的是 g_ethercat_ssc_port0:

7ab74144-709b-11ef-bb4b-92fbcf53809c.png

7acbe7c0-709b-11ef-bb4b-92fbcf53809c.png可以看到 g_ethercat_ssc_port0_ctrl 指向的是 g_ethercat_ssc_port0 的控制結構體指針:

const ethercat_ssc_port_instance_t g_ethercat_ssc_port0 =
{
.p_ctrl = &g_ethercat_ssc_port0_ctrl, // 指向g_ethercat_ssc_port0的控制結構體指針
.p_cfg = &g_ethercat_ssc_port0_cfg, // 指向g_ethercat_ssc_port0的配置結構體指針
.p_api = &g_ethercat_ssc_port_on_ethercat_ssc_port // 指向g_ethercat_ssc_port0配置方法的結構指針
};

PHY 的驅動是ethercat_ssc_port0 外設驅動的子模塊,同樣我們來看下PHY的初始化:

7aee5ada-709b-11ef-bb4b-92fbcf53809c.png

通過調用 ether_phy_targets_initialize 根據配置的PHY型號執行對應的初始化配置:

7b0cade6-709b-11ef-bb4b-92fbcf53809c.png

08

LWIP協議棧初始化

1

tcpip_init()

lwip協議棧的初始化是通過um_lwip_port_core_open()函數去實現的,在該函數中會調用tcpip_init()函數進行lwip協議棧的初始化,主要會創建一個tcpip_mbox郵箱,用于接收底層或者上層傳遞過來的消息,此外還會創建一個tcpip_thread線程,所有需要處理的數據都會通過這個函數去處理。

7b4e9c24-709b-11ef-bb4b-92fbcf53809c.png

在tcpip_mbox郵箱中會接收來自tcpip_input的數據包,并由該郵箱將其傳遞給tcpip_thread線程進行處理。


2

netifapi_netif_add()

netifapi_netif_add()由 lwip port open中的um_lwip_port_netif_open()函數調用,該函數主要功能為:將網絡接口添加到 lwIP 網絡堆棧的調用。

7b645514-709b-11ef-bb4b-92fbcf53809c.png

這里我們需要關注兩個回調函數:

_netif_add_callback

tcpip_input

tcpip_input內部具體調用的就是tcpip_inpkt(),調用該函數會將ethernet_input()函數作為結構體的一部分傳遞給內核,當內核接收到數據包時就會調用這個函數。

而在_netif_add_callback()函數中,我們關注三個接口函數:

etharp_output

_link_output

_status_changed

第一個 p_netif->output = etharp_output 是以太網接口的輸出回調函數,用于處理IP數據包,主要負責將IP數據包通過以太網發送出去,并處理ARP協議以解析IP到MAC地址的映射關系。

第二個 p_netif->linkoutput 是鏈路層的輸出回調函數,該函數被用來實際發送以太網幀到網絡驅動程序,etharp_output 等高層協議函數會處理好數據包內容,最終調用 linkoutput 將數據幀發送到硬件

第三個是當網絡接口狀態發生變化時調用的回調函數。比如,網絡接口的鏈路狀態(link up/down)發生變化時,lwIP就會調用這個回調函數,如果說netif已經up并且IP地址被設置時,他就會發送一個Event:LWIP_PORT_LAUNCHER_EVENT_IP_UP


09

網卡數據傳入LWIP內核流程

當eth接收完數據后會產生一個中斷,在中斷中會釋放一個信號量

7b6b28b2-709b-11ef-bb4b-92fbcf53809c.png

此時在ether_reader線程中收到此信號量,會從以太網驅動緩沖區中讀取接收到的以太網幀,并通過um_ether_netif_callback_request執行回調p_func

7b98e612-709b-11ef-bb4b-92fbcf53809c.png

此時event為ETHER_NETIF_CALLBACK_EVENT_RECEIVE_ETHER_FRAME,執行 um_lwip_port_thread_receiver_request();

7b9dcaf6-709b-11ef-bb4b-92fbcf53809c.png

此時lwip_recv線程收到該Frame,執行_netif_frame_input(p_callback),在此函數中通過um_lwip_port_netif_input()將以太網幀傳入到lwip netif中;

緊接著調用tcpip_input回調,將封裝的消息傳遞給tcpip_mbox郵箱中,同時由tcpip_thread對該消息進行解析。


10

EOE從站接收以太網數據幀流程(使用ping指令)

1

初始化前提

首先系統需要以此完成兩部分初始化:

ethernet網絡接口初始化

ether_monitor Thread: 檢查netif link狀態,同時將收到的狀態發送給回調更新event

ether_reader Thread: 接收來自ethernet的通知并接收數據幀,由ethernet中斷觸發

ether_writer Thread: 接收來自消息隊列的數據幀

tcp/ip網絡協議棧初始化

LWIP_PORT_LAUNCHER_EVENT_LINK_UP -> _netif_link_on

LWIP_PORT_LAUNCHER_EVENT_LINK_DOWN -> _netif_link_off

LWIP_PORT_LAUNCHER_EVENT_IP_UP -> um_lwip_port_netif_set_netif_state(LWIP_PORT_NETIF_STATE_UP);

LWIP_PORT_LAUNCHER_EVENT_IP_DOWN -> um_lwip_port_netif_set_netif_state(LWIP_PORT_NETIF_STATE_DOWN);

lwip_launch Thread: 接收來自ethernet link回調的通知,以此判斷請求的event

lwip_recv Thread: 接收來自ether link回調的通知,并廣播給netif

在此期間以此通過幾個Event來完成網絡的初始化

ETHER_NETIF_CALLBACK_EVENT_LINK_DOWN:此時的所有網絡端口處于初始狀態,還未初始化

ETHER_NETIF_CALLBACK_EVENT_LINK_UP:存在端口link up,執行um_lwip_port_task_launcher_request,將event狀態設置為LWIP_PORT_LAUNCHER_EVENT_LINK_UP

LWIP_PORT_LAUNCHER_EVENT_LINK_UP:netif鏈路link up,執行 netif_link_on ,并設置 network interface up(um_lwip_port_netif_set_up),最終執行到status_changed,并執行 um_lwip_port_task_launcher_request 修改 event 為 LWIP_PORT_LAUNCHER_EVENT_IP_UP

LWIP_PORT_LAUNCHER_EVENT_IP_UP:IP is up,執行um_lwip_port_netif_set_netif_state設置netif狀態并設置通知回調,將event修改為LWIP_PORT_CALLBACK_EVENT_NETIF_UP

LWIP_PORT_CALLBACK_EVENT_NETIF_UP:network interface link up,檢查IP地址是否有效,并創建sock監聽

只有當這么幾個Event依次觸發,才能完成對EtherCAT從站網絡的初始化,主從站之間才能正常收發數據:

7bab8024-709b-11ef-bb4b-92fbcf53809c.png

2

ICMP簡要介紹

ICMP一般被認為是IP協議層的一部分,但在結構上位于IP協議層之上。主要用于確認網絡狀態或者鏈路不同等場景,當數據報文無法正常到達目標主機時,ICMP就會返回一個差錯報文,讓源主機知道數據到達情況,常見的ping命令就是屬于ICMP 查詢報文功能的一部分,當ping成功,也就代表網卡、IP層、ICMP層都能正常通信,也可以證明LWIP移植成功。

下面是使用Wireshark抓包抓取回顯應答報文的示例:

7bb42ac6-709b-11ef-bb4b-92fbcf53809c.png

3

ARP簡要介紹

ARP:地址解析協議,主要是通過解析IP地址得到數據鏈路層的MAC地址(網卡標識符),在以太網中,一個主機想要與另一個主機直接通信,必須知道目標主機的MAC地址,這時候就需要ARP進行地址解析。

ARP緩存表:在每臺主機的內存中都有一個ARP緩存表,記錄了IP地址到MAC地址的映射關系,通過arp -a可獲取信息

7bc743a4-709b-11ef-bb4b-92fbcf53809c.png

其主要的運作流程是:

1.如果主機A想要發送數據給主機B,那么主機A會先檢查自己的ARP緩存中是否有主機B的IP地址及MAC地址的映射,如果有的話才會將主機B的MAC地址作為源地址封裝到數據幀中;如果沒有,那主機A就會向局域網中廣播ARP請求(包括發送方的IP地址、MAC地址,接收方的IP地址),每臺其他主機在收到ARP請求后都會檢查自己的IP地址是否與ARP請求中接收方的IP地址相同,如不相同,就會丟棄ARP請求包。

2.當交換機接收到此數據幀后,發現此數據幀為廣播幀,因此會將此數據幀從非接收的所有接口中發送出去。

3.當主機B接收到此數據幀后,會核對IP地址是否是自己的,并將主機A的IP地址和MAC地址的對應關系記錄到自己的ARP緩存表中,同時發送一個ARP響應,其中就包括自己的MAC地址。

4.當主機A接收到這個主機B回應的數據幀后,就會在自己的ARP緩存表中記錄主機B的IP地址和MAC映射關系。

具體流程可見下圖:

7bdb8c56-709b-11ef-bb4b-92fbcf53809c.png

下面這個是EtherCAT EOE工程測試ping命令時ARP緩存表的變化情況

7bf6b2c4-709b-11ef-bb4b-92fbcf53809c.png

那這里LWIP是怎么處理ARP請求并且獲取到從站的IP及MAC地址的呢,我們接著往下看

4

ARP接收數據包流程

先來了解兩個API:

LWIP從網卡中接收數據包的函數是:ethernet_input()

ARP數據包的處理函數是:etharp_input(),其主要內容為:

(1)檢查ARP報文。

(2)ARP請求報文:如果是請求報文的目標IP和本地的匹配,就組裝ARP響應報文并發送出去。

(3)ARP響應報文:

1)更新ARP緩存表。

2)把阻塞在arp entry緩存隊列的IP數據報發送出去。

3)釋放pbuf。因為ARP報文到此已經處理完畢。

對于ARP處理數據包來說,有這么兩種情況:

(1)收到APR應答包:此時說明之前發送的APR請求包得到了回應,那么就根據應答包去更新自身的ARP緩存表;

(2)收到ARP請求包:首先會判斷包中的目標是否與主機IP匹配,匹配上的話就記錄下源主機的IP及MAC地址,接著在更新自身的ARP表外,還要向源主機發送一個ARP應答包;如果說包中的目標IP與主機IP并不匹配,那么根據ARP表的空余情況選擇記錄源主機的IP及MAC地址(如果沒有空余的表項,則不會記錄),并丟棄該請求包。

7c09fd20-709b-11ef-bb4b-92fbcf53809c.png

這里對應我們EtherCAT EOE工程來說,ethernet調用流程為:

ethernet_input(收到ARP數據包) ->etharp_input()-> etharp_raw(發送應答包) ->ethernet_output()-> _link_output -> um_lwip_port_ether_netif_send -> UM_ETHER_NETIF_Send()

5

ARP發送數據包流程

前面我們了解了一個數據包的接收流程,如果收到的是ARP數據包,那么就會交給ARP處理,如果是IP數據包就會調用ip4_input()函數將其傳遞給上層.

arp通過 etharp_output() 函數接收到IP數據包后,判斷該數據包是單播,多播還是廣播,對于其處理方式:

對于多播或者廣播數據包,直接交給網卡處理(調用ethernet_output)

對于單播,arp需要根據IP找到對應的MAC地址,如果找不到MAC地址,還要延遲發送數據包。ARP首先會創建一個ARP表項,再將數據包掛載到ARP表項上對應的緩存隊列上,同時會發出一個ARP請求包,等待目標主機的回應后再發送IP數據包

7c247574-709b-11ef-bb4b-92fbcf53809c.png

那么對應netif->linkoutput()其實就是在初始化lwip網卡接口設備時綁定的 _link_output()

7c3a44da-709b-11ef-bb4b-92fbcf53809c.png

11

EtherCAT EOE測試

編譯并啟動下載調試,終端出現RT-Thread LOGO即為啟動成功

7c60c92a-709b-11ef-bb4b-92fbcf53809c.png

瑞薩EtherCAT EOE例程下的ESI文件(RZT2M_EtherCAT_RSK_rev0200\common\ecat_EoE_lwIP\ESI\Renesas EtherCAT RZT2 EoE.xml)復制到TwinCAT安裝目錄下(C:\TwinCAT\3.1\Config\Io\EtherCAT)

啟動TwinCAT,并燒入EEPROM的EOE固件


使用ping命令測試EOE協議是否運行成功


使用TCPIP測試工具測試TCP通信回顯功能


12

其他說明:三網口使用配置說明

打開RZSC,配置ethercat_ssc_port的phy2

7c723f16-709b-11ef-bb4b-92fbcf53809c.png

設置第三個網口的PHY

7c98a110-709b-11ef-bb4b-92fbcf53809c.png

設置ETHER_ETH2

7cbaeaf4-709b-11ef-bb4b-92fbcf53809c.png

設置ETHER_ESC的phy2配置,修改ESC_LINKACT2為P21_0,ESC_PHYLINK2為P00_5

7cbf0bf2-709b-11ef-bb4b-92fbcf53809c.png

生成RZSC源碼,回到IAR工程重新編譯下載

EEPROM固件更新

7ce3071e-709b-11ef-bb4b-92fbcf53809c.png

此時T2M的三個網口都可以進行EtherCAT EOE通信,具體測試方法參考如上


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5336

    瀏覽量

    120229
  • ESM
    ESM
    +關注

    關注

    0

    文章

    9

    瀏覽量

    9051
  • ethercat
    +關注

    關注

    18

    文章

    686

    瀏覽量

    38673
收藏 人收藏

    評論

    相關推薦

    瑞米派實時系統與EtherCAT移植-米爾Remi Pi

    136us表3-1.數據信息 4.EtherCAT IGH移植4.1. 下載EtherCAT IGH源碼到官網下載1.5版本的EtherCAT源碼,如圖4-1:https://git
    發表于 04-30 18:14

    【米爾-瑞米派兼容樹莓派擴展模塊-試用體驗】EtherCAT移植

    output.tar.bz2 output.tar.bz2 至此IGH交叉編譯完成,下面是在對應arm目標板上的操作。 4.5. 移植EtherCAT相關庫到開發板 將上面制作好的output.tar.bz2
    發表于 06-19 17:07

    【分享】工業級開發板IMX6Q移植ethercat通訊協議

    (點此了解板載資源),Linux-4.1.4+Ubuntu16.04系統,以下具體說明ethercat移植:1.解壓IGH源碼進入目錄#tar xjf
    發表于 06-25 09:15

    EtherCAT的原理是什么?EtherCAT有哪些應用實例?

    EtherCAT的原理是什么?EtherCAT有哪些功能?怎樣去實現EtherCAT的應用層?EtherCAT有哪些應用實例?
    發表于 07-02 06:52

    DIY一個EtherCAT控制器

    3.1 RT-Thread 下載本次移植基于最新發布的release4.1.0, 這個可以到github下載,最近Gitee也更新了。移植EtherCAT之前,首先把Nuvoton的BSP跑起來。這個
    發表于 06-09 11:12

    EtherCAT從站開發板及源程序說明

    EtherCAT從站開發板及源程序說明:簡化XML生成,簡化編程,10分鐘快速入門
    發表于 02-18 12:03

    【沁恒 CH32V208 開發板免費試用】2.EtherCat主站移植前準備(一)

    本次EtherCat主站移植是基于SOEM源碼進行移植,收集并整理部分資料作為學習EtherCat通訊參考內容。一 、T EtherCAT
    發表于 04-17 10:29

    【沁恒 CH32V208 開發板免費試用】7.EtherCat開始移植(一)

    首先本次移植以TcpClint作為模板進行移植。 先準備ethercat的基于SOEM的移植庫文件 總共22個文件 把這些文件加入到工程后,根據不同的錯誤對其進行調整,使得整個工程
    發表于 04-22 17:37

    工業通訊中CANOPEN轉EtherCAT的轉換

    EtherCAT主PLC/控制器。 從CANopen移植EtherCAT的優缺點包括: 優點: 適合軸間高度耦合的集中式控制; 更長的通信距離(100m); 標準以太網接口,無需CAN卡。 缺點: 增加了
    發表于 12-12 11:31

    lwip移植說明及心得

    lwip是一套用于嵌入式系統的開放源代碼TCP/IP協議棧。Lwip既可以移植到操作系統上,又可以在無操作系統的情況下獨立運行。下面我們來看看lwip移植說明及心得。
    發表于 12-11 16:06 ?2.1w次閱讀
    lwip<b class='flag-5'>移植</b><b class='flag-5'>說明</b>及心得

    Boa服務器的移植說明分析

    Boa服務器的移植,內含說明文檔,原理分析和源碼
    發表于 01-18 14:13 ?0次下載

    KPA EtherCAT主站軟件如何做移植測試

    虹科KPA EtherCAT主站是一款協議棧產品,能夠使用戶快速利用EtherCAT技術的所有好處,例如實時操作、極短的循環時間、以及最低成本的最高性能。該協議棧的先進架構專注于可移植
    的頭像 發表于 05-18 15:54 ?3921次閱讀

    EtherCAT FP介紹系列文章—EoE

    EoE(Ethernet over EtherCAT)是允許在EtherCAT網絡中傳輸標準以太網數據使用標準以太網設備,如打印機、相機或PC的技術。EoE從第三方設備傳輸到
    的頭像 發表于 06-16 14:48 ?1369次閱讀
    <b class='flag-5'>EtherCAT</b> FP介紹系列文章—<b class='flag-5'>EoE</b>

    Ubuntu系統快速上手

    Ubuntu系統快速上手概述和操作說明
    的頭像 發表于 04-12 16:25 ?537次閱讀
    Ubuntu系統快速<b class='flag-5'>上手</b>

    CC2500和CC1101移植說明

    主要通過如何移植移植注意、關于芯片配置、如何生成導出配置四大步驟來說明CC2500和CC1101移植
    的頭像 發表于 06-15 14:32 ?606次閱讀
    CC2500和CC1101<b class='flag-5'>移植</b><b class='flag-5'>說明</b>
    主站蜘蛛池模板: 黄色网址在线播放| jk制服啪啪网站| 亚洲 日韩 国产 中文视频| 人人射人人爱| 漂亮的保姆5电影免费观看完整版中文 | 国内精品久久久久久久试看 | 亚洲国产亚综合在线区尤物| 色欲色香天天天综合| 日本国产成人精品无码区在线网站| 欧美gay老头互吃| 欧美18videosex初次| 欧美成人无码A区在线观看免费| 蜜桃视频一区二区| 棉袜足j吐奶视频| 男人大臿蕉香蕉大视频| 欧美高清69vivo| 热中文热国产热综合| 色婷婷粉嫩AV精品综合在线| 日日夜夜国产| 性春院| 亚洲手机在线人成视频| 伊人久久中文大香线蕉综合| 在线天天看片免费视频观看| 总裁呻吟双腿大开男男H| 99re1久久热在线播放| XXXchinese国产HD| 国产精品69人妻无码久久久| 国产欧洲野花A级| 精品国产福利在线视频| 久久免费看少妇高潮A片2012| 狼好色有你好看| 女人张开腿让男人桶爽免| 人妻熟女斩五十路0930 | 久草高清在线| 伦理电影v男人天堂| 让男人玩尿道的女人| 午夜一级毛片看看| 一边啪啪的一边呻吟声口述 | 午夜免费体验30分| 夜夜国产亚洲视频香蕉| 999久久久国产|