Gibberish receiving when transmitting custom etherType Ethernet Frame

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

Gibberish receiving when transmitting custom etherType Ethernet Frame

跳至解决方案
587 次查看
R_S002
Contributor III

Hello @PavelL and NXP Community,

I'm sending Ethernet frames with a custom EtherType (0xA5A5) between S32K344 and TJA1103 connected via media converters. I have run and tested LWIP_S32K344 on the same hardware, and it works flawlessly. Below, I have mentioned the transmission code, as well as the frames received on Wireshark. 

/*
 * tx_eth_udp.c
 *
 * Purpose: Build and transmit a valid Ethernet -> IPv4 -> UDP frame
 * Platform: S32K344 + TJA1103 (RMII)
 * Author: RohanS002 Gettobyte
 * Date: 11-Oct-2025
 */
 
#include "Mcal.h"
#include "Clock_Ip.h"
#include "Siul2_Port_Ip_Cfg.h"
#include "Siul2_Port_Ip.h"
#include "Gmac_Ip.h"
#include "string.h"
#include "stdint.h"
#include "stdbool.h"
 
/* ===== app control ===== */
volatile int exit_code = 0;
 
/* ===== GMAC/PHY globals ===== */
#define INST_GMAC_0     (0U)
Gmac_Ip_StatusType Status = 0;
 
/* Replace with your actual MACs for both boards */
static uint8 MacAddr_Src[6U] = { 0x10, 0x11, 0x22, 0x77, 0x77, 0x77 }; /* this board */
static uint8 MacAddr_Dest[6U] = { 0x10, 0x11, 0x22, 0x77, 0x77, 0x78 }; /* peer board */
 
/* ===== PHY discovery scratch ===== */
static uint16 phy_addr; /* discovered PHY address (0..31) */
static uint16 register_value_0;
static uint16 register_value_1;
 
/* ===== TX structures ===== */
static Gmac_Ip_BufferType TxBuffer = { 0 };
static Gmac_Ip_TxInfoType TxInfo = { 0 };
static Gmac_Ip_TxOptionsType TxOptions = {
TRUE, /* add CRC/FCS and pad in hardware */
GMAC_CRC_AND_PAD_INSERTION, GMAC_CHECKSUM_INSERTION_PROTO_PSEUDOH /* we compute checksums in software */
};
 
/* ====== Simple busy-wait delay (approx) ====== */
/* Adjust for your clock; this is just to pace packets for Wireshark */
static void delay_cycles(volatile uint32_t cycles) {
while (cycles--) {
__asm("nop");
}
}
 
/*
 * Ethernet Frame Format (IEEE 802.3 / Ethernet II)
 *
 * +------------+------------+-----------+------------------+-----------+
 * | Destination|   Source   | EtherType |      Payload     |    FCS    |
 * |   MAC (6B) |   MAC (6B) |   (2B)    |    (46–1500 B)   |   (4B)    |
 * +------------+------------+-----------+------------------+-----------+
 *
 * Field Details:
 * - Destination MAC (6 bytes): Who the frame is sent to
 * - Source MAC      (6 bytes): Who is sending the frame
 * - EtherType/Length(2 bytes): Protocol indicator
 * e.g. 0x0800 = IPv4, 0x0806 = ARP, custom = 0x88B5 etc.
 * - Payload         (46–1500 bytes): Actual data being sent
 * - FCS             (4 bytes): CRC checksum (auto-inserted by GMAC HW)
 *
 * In our code:
 * [0..5]   -> txFrame.dstMac
 * [6..11]  -> txFrame.srcMac
 * [12..13] -> txFrame.etherType
 * [14..N]  -> txFrame.payload
 * [N+1..]  -> FCS (handled automatically by hardware)
 */
 
/* A structure to represent an Ethernet frame in a user-friendly way. */
typedef struct {
uint8 dstMac[6];
uint8 srcMac[6];
uint16 etherType;
uint8 payload[64]; /* A buffer for the payload data. */
uint16 payloadLen; /* The actual length of the payload. */
} EthFrame_t;
 
/**
 * @brief Constructs a raw Ethernet frame into a GMAC hardware buffer.
 * @param txBuf A pointer to the GMAC transmit buffer where the frame will be built.
 * @param frame A pointer to the user-friendly frame structure containing the data.
 */
static void BuildEthernetFrame(Gmac_Ip_BufferType *txBuf,
const EthFrame_t *frame) {
/* Get a pointer to the beginning of the hardware buffer's data area. */
uint8 *ptr = txBuf->Data;
 
/* Copy the 6-byte destination MAC address into the buffer. */
memcpy(ptr, frame->dstMac, 6U);
ptr += 6U; // Move the pointer forward by 6 bytes.
 
/* Copy the 6-byte source MAC address. */
memcpy(ptr, frame->srcMac, 6U);
ptr += 6U; // Move the pointer forward.
 
/* Copy the 2-byte EtherType, handling big-endian byte order manually. */
*ptr++ = (uint8) ((frame->etherType >> & 0xFFU); // Most Significant Byte (MSB)
*ptr++ = (uint8) (frame->etherType & 0xFFU); // Least Significant Byte (LSB)
 
/* Copy the payload data into the buffer. */
memcpy(ptr, frame->payload, frame->payloadLen);
ptr += frame->payloadLen; // Move the pointer past the payload.
 
/* Set the total length of the buffer. The FCS (CRC) will be added by the hardware. */
txBuf->Length = (uint32) (ptr - txBuf->Data);
}
 
/* ====== PHY init (TJA110x via MDIO) ====== */
static void Eth_Phy_Init(void) {
/* Enable MDIO (Management Data I/O) for PHY communication */
Gmac_Ip_EnableMDIO(INST_GMAC_0, FALSE, 48000000U);
 
/* --- Discover PHY address by reading PHY ID1/ID2 --- */
for (phy_addr = 0U; phy_addr < 32U; ++phy_addr) {
(void) Gmac_Ip_MDIORead(INST_GMAC_0, phy_addr, 2U, &register_value_0,
1U);
(void) Gmac_Ip_MDIORead(INST_GMAC_0, phy_addr, 3U, &register_value_1,
1U);
 
/* TJA110x ID: 0x001B / 0xB013 (adjust if your silicon differs) */
if ((register_value_0 == 0x001B) && (register_value_1 == 0xB013)) {
break;
}
}
 
/* Reset PHY */
(void) Gmac_Ip_MDIOWrite(INST_GMAC_0, phy_addr, 0U, 0x8000U, 1U);
/* Wait for reset done (bit15 clears) */
do {
(void) Gmac_Ip_MDIORead(INST_GMAC_0, phy_addr, 0U, &register_value_0,
1U);
} while (register_value_0 & 0x8000U);
 
/* Basic sanity checks (optional but good while bringing up) */
/* ePHY enable check */
(void) Gmac_Ip_MDIOReadMMD(INST_GMAC_0, phy_addr, 1, 0x8048U,
&register_value_0, 1U);
/* master/slave */
(void) Gmac_Ip_MDIOReadMMD(INST_GMAC_0, phy_addr, 1, 0x0834U,
&register_value_0, 1U);
/* xMII config (Rev-RMII) */
(void) Gmac_Ip_MDIOReadMMD(INST_GMAC_0, phy_addr, 30, 0xAFC6U,
&register_value_0, 1U);
 
/* Link status poll (bit2 of 0x8102) */
do {
(void) Gmac_Ip_MDIOReadMMD(INST_GMAC_0, phy_addr, 30, 0x8102U,
&register_value_0, 1U);
} while (((register_value_0 & (1U << 2)) == 0U));
}
 
/* ====== Main ====== */
int main(void) {
/* Put MAC into RMII mode through DCM (per your original code) */
IP_DCM_GPR->DCMRWF1 = (IP_DCM_GPR->DCMRWF1
& ~DCM_GPR_DCMRWF1_MAC_CONF_SEL_MASK)
| DCM_GPR_DCMRWF1_MAC_CONF_SEL(2U);
 
/* Clocks / Pins / GMAC driver (generated by RTD config tool) */
Clock_Ip_Init(&Clock_Ip_aClockConfig[0]);
Siul2_Port_Ip_Init(
NUM_OF_CONFIGURED_PINS_PortContainer_0_BOARD_InitPeripherals,
g_pin_mux_InitConfigArr_PortContainer_0_BOARD_InitPeripherals);
 
Status = Gmac_Ip_Init(INST_GMAC_0, &Gmac_0_ConfigPB);
DevAssert(Status == GMAC_STATUS_SUCCESS);
 
/* Bring up PHY and wait for link */
Eth_Phy_Init();
 
/* Declare a local variable to hold the Ethernet frame data. */
EthFrame_t txFrame;
 
/* --- Assemble the Ethernet Frame --- */
/* Copy the retrieved hardware MAC as the source address. */
memcpy(txFrame.srcMac, MacAddr_Src, 6U);
/* Copy the predefined destination MAC address. */
memcpy(txFrame.dstMac, MacAddr_Dest, 6U);
/* Set a custom EtherType (e.g., for a proprietary protocol). 0xBB80 = 48000 */
txFrame.etherType = 0xA5A5U;
/* Set the payload length. Ethernet requires a minimum frame size, so payloads < 46 bytes get padded. */
txFrame.payloadLen = 46U;
 
/* Fill the payload with dummy data (a simple ascending sequence of numbers). */
for (uint16 i = 0; i < txFrame.payloadLen; i++) {
txFrame.payload[i] = (uint8) i;
}
 
/* --- Prepare for Transmission --- */
/* Request a free transmit buffer from the GMAC driver's internal queue. */
Status = Gmac_Ip_GetTxBuff(INST_GMAC_0, 0U, &TxBuffer, NULL_PTR);
DevAssert(Status == GMAC_STATUS_SUCCESS); // Halt if no buffer is available.
 
/* Call the helper function to copy the assembled frame into the hardware buffer. */
BuildEthernetFrame(&TxBuffer, &txFrame);
 
/* ==== Send once per second so Wireshark is easy to read ==== */
for (;;) {
 
/* --- Send the Frame --- */
/* Instruct the GMAC hardware to send the contents of the buffer. */
Status = Gmac_Ip_SendFrame(INST_GMAC_0, 0U, &TxBuffer, &TxOptions);
DevAssert(Status == GMAC_STATUS_SUCCESS); // Halt if sending fails.
 
/* Wait for the frame to be transmitted */
do {
Status = Gmac_Ip_GetTransmitStatus(INST_GMAC_0, 0U, &TxBuffer,
&TxInfo);
} while (Status == GMAC_STATUS_BUSY);
 
DevAssert((GMAC_STATUS_SUCCESS == Status) || (0U != TxInfo.ErrMask));
 
/* ~1 second delay (tune for your clock: this is a rough software wait) */
delay_cycles(10000000U);
 
if (exit_code != 0) {
break;
}
}
 
return exit_code;
}

 

标记 (2)
0 项奖励
回复
1 解答
570 次查看
PavelL
NXP Employee
NXP Employee

Hello @R_S002 ,

I believe that this code row:

*ptr++ = (uint8) ((frame->etherType >> & 0xFFU); // Most Significant Byte (MSB)
 
should look like:

*ptr++ = (uint8)((frame->etherType >> 8 ) & 0xFFU); // Most Significant Byte (MSB)
 

Best regards,

Pavel

在原帖中查看解决方案

0 项奖励
回复
1 回复
571 次查看
PavelL
NXP Employee
NXP Employee

Hello @R_S002 ,

I believe that this code row:

*ptr++ = (uint8) ((frame->etherType >> & 0xFFU); // Most Significant Byte (MSB)
 
should look like:

*ptr++ = (uint8)((frame->etherType >> 8 ) & 0xFFU); // Most Significant Byte (MSB)
 

Best regards,

Pavel

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2187991%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E4%BC%A0%E8%BE%93%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BB%A5%E5%A4%AA%E7%B1%BB%E5%9E%8B%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%B8%A7%E6%97%B6%E6%8E%A5%E6%94%B6%E4%B9%B1%E7%A0%81%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2187991%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F233505%22%20target%3D%22_blank%22%3E%40PavelL%3C%2FA%3E%E5%92%8C%E6%81%A9%E6%99%BA%E6%B5%A6%E7%A4%BE%E5%8C%BA%E3%80%81%3C%2FP%3E%3CP%3E%E6%88%91%E6%AD%A3%E5%9C%A8%E5%8F%91%E9%80%81%E9%80%9A%E8%BF%87%E5%AA%92%E4%BD%93%E5%8F%98%E6%B5%81%E5%99%A8%E8%BF%9E%E6%8E%A5%E7%9A%84%20S32K344%20%E5%92%8C%20TJA1103%20%E4%B9%8B%E9%97%B4%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%20EtherType%20(0xA5A5)%20%E7%9A%84%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%B8%A7%E3%80%82%E6%88%91%E5%9C%A8%E7%9B%B8%E5%90%8C%E7%9A%84%E7%A1%AC%E4%BB%B6%E4%B8%8A%E8%BF%90%E8%A1%8C%E5%B9%B6%E6%B5%8B%E8%AF%95%E4%BA%86%20LWIP_S32K344%EF%BC%8C%E5%AE%83%E5%B7%A5%E4%BD%9C%E5%BE%97%E9%9D%9E%E5%B8%B8%E5%AE%8C%E7%BE%8E%E3%80%82%E4%B8%8B%E9%9D%A2%EF%BC%8C%E6%88%91%E5%B0%86%E6%8F%90%E5%88%B0%E4%BC%A0%E8%BE%93%E4%BB%A3%E7%A0%81%E4%BB%A5%E5%8F%8A%20Wireshark%20%E6%94%B6%E5%88%B0%E7%9A%84%E5%B8%A7%E3%80%82%20%3C%2FP%3E%3CDIV%3E%2F*%3C%2FDIV%3E%3CDIV%3E*%20tx_eth_udp.c%3C%2FDIV%3E%3CDIV%3E*%3C%2FDIV%3E%3CDIV%3E*%20%E7%9B%AE%E7%9A%84%EF%BC%9A%E7%89%88%E6%9C%AC%E5%92%8C%E4%BC%A0%E8%BE%93%E6%9C%89%E6%95%88%E7%9A%84%E4%BB%A5%E5%A4%AA%E7%BD%91-%26gt%3B%20IPv4-%26gt%3B%20UDP%20%E5%B8%A7%3C%2FDIV%3E%3CDIV%3E*%20%E5%B9%B3%E5%8F%B0%EF%BC%9AS32K344%20%2B%20TJA1103%20(RMI)%3C%2FDIV%3E%3CDIV%3E*%20%E4%BD%9C%E8%80%85%EF%BC%9ARohanS002RohanS002%20Gettobyte%3C%2FDIV%3E%3CDIV%3E*%20%E6%97%A5%E6%9C%9F%EF%BC%9A%202025%20%E5%B9%B4%2010%20%E6%9C%88%2011%20%E6%97%A5%3C%2FDIV%3E%3CDIV%3E*%2F%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%23include%22Mcal.h%22%3C%2FDIV%3E%3CDIV%3E%23include%22Clock_Ip.h%22%3C%2FDIV%3E%3CDIV%3E%23include%22Siul2_Port_Ip_Cfg.h%22%3C%2FDIV%3E%3CDIV%3E%23include%22Siul2_Port_Ip.h%22%3C%2FDIV%3E%3CDIV%3E%23include%22Gmac_Ip.h%22%3C%2FDIV%3E%3CDIV%3E%23include%22string.h%22%3C%2FDIV%3E%3CDIV%3E%23include%22stdint.h%22%3C%2FDIV%3E%3CDIV%3E%23include%22stdbool.h%22%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3D%3D%3D%3D%3D%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%8E%A7%E5%88%B6%20%3D%3D%3D%3D%3D%20*%2F%3C%2FDIV%3E%3CDIV%3Evolatile%20int%20exit_code%20%3D%200%EF%BC%9B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3D%3D%3D%3D%3D%20GMAC%2FPHY%20globals%20%3D%3D%3D%3D%3D%20*%2F%3C%2FDIV%3E%3CDIV%3E%23define%20INST_GMAC_0%20(0U)%3C%2FDIV%3E%3CDIV%3EGmac_Ip_StatusType%20%E7%8A%B6%E6%80%81%20%3D%200%EF%BC%9B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%2F*%20%E7%94%A8%E4%B8%A4%E5%9D%97%E6%9D%BF%E7%9A%84%E5%AE%9E%E9%99%85%20Mac%20%E6%9B%BF%E6%8D%A2%20*%2F%3C%2FDIV%3E%3CDIV%3E%E9%9D%99%E6%80%81%20uint8%20macAddr_src%20%5B6U%5D%20%3D%20%7B0x10%E3%80%810x11%E3%80%810x22%E3%80%810x77%E3%80%810x77%E3%80%810x77%7D%EF%BC%9B%2F*%20%E8%BF%99%E4%B8%AA%E6%9D%BF%20*%2F%3C%2FDIV%3E%3CDIV%3Estatic%20uint8%20macAddr_Dest%20%5B6U%5D%20%3D%20%7B0x10%E3%80%810x11%E3%80%810x22%E3%80%810x77%E3%80%810x77%E3%80%810x77%E3%80%810x77%E3%80%810x78%7D%3B%20%2F*%20%E5%AF%B9%E7%AD%89%E6%9D%BF%20*%2F%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3D%3D%3D%3D%3D%20PHY%20discovery%20scratch%20%3D%3D%3D%3D%3D%20*%2F%3C%2FDIV%3E%3CDIV%3Estatic%20uint16%20phy_addr%3B%20%2F*%20%E5%8F%91%E7%8E%B0%E7%9A%84%20PHY%20%E5%9C%B0%E5%9D%80%20(0..31)%20*%2F%3C%2FDIV%3E%3CDIV%3E%E9%9D%99%E6%80%81%20uint16%20register_value_0%EF%BC%9B%3C%2FDIV%3E%3CDIV%3E%E9%9D%99%E6%80%81%20uint16%20register_value_1%EF%BC%9B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3D%3D%3D%3D%3D%20TX%20%E7%BB%93%E6%9E%84%20%3D%3D%3D%3D%3D%20*%2F%3C%2FDIV%3E%3CDIV%3E%E9%9D%99%E6%80%81%20Gmac_Ip_BufferType%20TxBuffer%20%3D%20%7B%200%20%7D%EF%BC%9B%3C%2FDIV%3E%3CDIV%3E%E9%9D%99%E6%80%81%20Gmac_Ip_TxInfoType%20TxInfo%20%3D%20%7B%200%20%7D%EF%BC%9B%3C%2FDIV%3E%3CDIV%3E%E9%9D%99%E6%80%81%20Gmac_Ip_TxOptionsType%20TxOptions%20%3D%20%7B%3C%2FDIV%3E%3CDIV%3ETRUE%2C%20%2F*%20%E5%9C%A8%E7%A1%AC%E4%BB%B6%E4%B8%AD%E6%B7%BB%E5%8A%A0%20CRC%2FFCS%20%E5%92%8C%E7%84%8A%E7%9B%98%20*%2F%3C%2FDIV%3E%3CDIV%3EGMAC_CRC_AND_PAD_INSERTION%2C%20GMAC_CHECKSUM_INSERTION_PROTO_PSEUDOH%20%2F*%20%E6%88%91%E4%BB%AC%E5%9C%A8%E8%BD%AF%E4%BB%B6%E4%B8%AD%E8%AE%A1%E7%AE%97%E6%A0%A1%E9%AA%8C%E5%92%8C%20*%2F%3C%2FDIV%3E%3CDIV%3E%7D%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3D%3D%3D%3D%3D%3D%20%E7%AE%80%E5%8D%95%E5%BF%99%E6%97%B6%E7%AD%89%E5%BE%85%E5%BB%B6%E8%BF%9F%EF%BC%88%E7%BA%A6%EF%BC%89%20%3D%3D%3D%3D%3D%3D%20*%2F%3C%2FDIV%3E%3CDIV%3E%2F*%20%E6%A0%B9%E6%8D%AE%E6%97%B6%E9%92%9F%E8%BF%9B%E8%A1%8C%E8%B0%83%E6%95%B4%EF%BC%9B%E8%BF%99%E5%8F%AA%E6%98%AF%E4%B8%BA%E4%BA%86%E8%AE%A9%20Wireshark%20%E8%83%BD%E5%A4%9F%E6%8E%8C%E6%8F%A1%E6%95%B0%E6%8D%AE%E5%8C%85%E7%9A%84%E8%8A%82%E5%A5%8F%20*%2F%3C%2FDIV%3E%3CDIV%3Estatic%20void%20delay_cycles(volatile%20uint32_t%20cycles)%20%7B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Ewhile%20(cycles--)%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E__asm(%22nop%22)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%2F*%3C%2FDIV%3E%3CDIV%3E*%20%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%B8%A7%E6%A0%BC%E5%BC%8F%EF%BC%88IEEE%20802.3%20%2F%20%E4%BB%A5%E5%A4%AA%E7%BD%91%20II%EF%BC%89%3C%2FDIV%3E%3CDIV%3E*%3C%2FDIV%3E%3CDIV%3E*%20%2B------------%2B------------%2B-----------%2B------------------%2B-----------%2B%3C%2FDIV%3E%3CDIV%3E%7C%20%E7%9B%AE%E7%9A%84%E5%9C%B0%20%7C%20%E6%BA%90%20%7C%20%E4%BB%A5%E5%A4%AA%E7%B1%BB%E5%9E%8B%20%7C%20%E6%9C%89%E6%95%88%E8%BD%BD%E8%8D%B7%20%7C%20FCS%20%7C%20%E6%95%B0%E6%8D%AE%E5%8C%85%3C%2FDIV%3E%3CDIV%3E*%20%7C%20mac%20(6b)%20%7C%20mac%20(6b)%20%7C%20(2b)%20%7C%20(46-1500%20b)%20%7C%20(4b)%20%7C%20%7C%20(4b)%3C%2FDIV%3E%3CDIV%3E*%20%2B------------%2B------------%2B-----------%2B------------------%2B-----------%2B%3C%2FDIV%3E%3CDIV%3E*%3C%2FDIV%3E%3CDIV%3E*%20%E9%A2%86%E5%9F%9F%E8%AF%A6%E6%83%85%EF%BC%9A%3C%2FDIV%3E%3CDIV%3E*-%E7%9B%AE%E6%A0%87%20MAC%EF%BC%886%20%E5%AD%97%E8%8A%82%EF%BC%89%EF%BC%9A%E5%B8%A7%E5%8F%91%E9%80%81%E7%BB%99%E8%B0%81%3C%2FDIV%3E%3CDIV%3E*-%E6%BA%90%20MAC%EF%BC%886%20%E5%AD%97%E8%8A%82%EF%BC%89%EF%BC%9A%E8%B0%81%E5%9C%A8%E5%8F%91%E9%80%81%E5%B8%A7%3C%2FDIV%3E%3CDIV%3E*-%E4%BB%A5%E5%A4%AA%E7%BD%91%E7%B1%BB%E5%9E%8B%2F%E9%95%BF%E5%BA%A6%EF%BC%882%20%E5%AD%97%E8%8A%82%EF%BC%89%EF%BC%9A%E5%8D%8F%E8%AE%AE%E6%8C%87%E7%A4%BA%E5%99%A8%3C%2FDIV%3E%3CDIV%3E*%20%E4%BE%8B%E5%A6%820x0800%20%3D%20IPv4%E3%80%810x0806%20%3D%20ARP%E3%80%81%E8%87%AA%E5%AE%9A%E4%B9%89%20%3D%200x88B5%20%E7%AD%89%E3%80%82%3C%2FDIV%3E%3CDIV%3E*-%E6%9C%89%E6%95%88%E8%BD%BD%E8%8D%B7%EF%BC%8846%E2%80%941500%20%E5%AD%97%E8%8A%82%EF%BC%89%EF%BC%9A%E6%AD%A3%E5%9C%A8%E5%8F%91%E9%80%81%E7%9A%84%E5%AE%9E%E9%99%85%E6%95%B0%E6%8D%AE%3C%2FDIV%3E%3CDIV%3E*-FCS%EF%BC%884%20%E5%AD%97%E8%8A%82%EF%BC%89%EF%BC%9ACRC%20%E6%A0%A1%E9%AA%8C%E5%92%8C%EF%BC%88%E7%94%B1%20GMAC%20HW%20%E8%87%AA%E5%8A%A8%E6%8F%92%E5%85%A5%EF%BC%89%3C%2FDIV%3E%3CDIV%3E*%3C%2FDIV%3E%3CDIV%3E*%20%E5%9C%A8%E6%88%91%E4%BB%AC%E7%9A%84%E4%BB%A3%E7%A0%81%E4%B8%AD%3C%2FDIV%3E%3CDIV%3E*%20%5B0..5%5D%20-%26gt%3B%20txFrame.dstMac%3C%2FDIV%3E%3CDIV%3E*%20%5B6..11%5D%20-%26gt%3B%20txFrame.srcMac%3C%2FDIV%3E%3CDIV%3E*%20%5B12..13%5D%20-%26gt%3B%20txFrame.etherType%3C%2FDIV%3E%3CDIV%3E*%20%5B14..N%5D%20-%26gt%3B%20txFrame.payload%3C%2FDIV%3E%3CDIV%3E*%20%5BN%2B1...%5D%20-%26gt%3B%20FCS%EF%BC%88%E7%94%B1%E7%A1%AC%E4%BB%B6%E8%87%AA%E5%8A%A8%E5%A4%84%E7%90%86%EF%BC%89%3C%2FDIV%3E%3CDIV%3E*%2F%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%2F*%20%E4%BB%A5%E7%94%A8%E6%88%B7%E5%8F%8B%E5%A5%BD%E7%9A%84%E6%96%B9%E5%BC%8F%E8%A1%A8%E7%A4%BA%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%B8%A7%E7%9A%84%E7%BB%93%E6%9E%84%E3%80%82*%2F%3C%2FDIV%3E%3CDIV%3Etypedef%20struct%20%7B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint8%20dstMac%5B6%5D%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint8%20srcMac%5B6%5D%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16%20etherType%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint8%20payload%5B64%5D%3B%20%2F*%20%E6%9C%89%E6%95%88%E8%BD%BD%E8%8D%B7%E6%95%B0%E6%8D%AE%E7%9A%84%E7%BC%93%E5%86%B2%E5%8C%BA%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16%20payloadLen%3B%20%2F*%20%E6%9C%89%E6%95%88%E8%BD%BD%E8%8D%B7%E7%9A%84%E5%AE%9E%E9%99%85%E9%95%BF%E5%BA%A6%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%7DEthFrame_t%EF%BC%9B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%2F**%3C%2FDIV%3E%3CDIV%3E*%20%40brief%20%E5%9C%A8%20GMAC%20%E7%A1%AC%E4%BB%B6%E7%BC%93%E5%86%B2%E5%8C%BA%E4%B8%AD%E6%9E%84%E5%BB%BA%E5%8E%9F%E5%A7%8B%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%B8%A7%E3%80%82%3C%2FDIV%3E%3CDIV%3E*%20%3Ca%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F197964%22%3E%40Param%3C%2Fa%3E%20txBuf%20%E6%8C%87%E5%90%91%E5%B0%86%E5%9C%A8%E5%85%B6%E4%B8%AD%E6%9E%84%E5%BB%BA%E5%B8%A7%E7%9A%84%20GMAC%20%E4%BC%A0%E8%BE%93%E7%BC%93%E5%86%B2%E5%8C%BA%E7%9A%84%E6%8C%87%E9%92%88%E3%80%82%3C%2FDIV%3E%3CDIV%3E*param%20frame%20%E4%B8%80%E4%B8%AA%E6%8C%87%E5%90%91%E5%8C%85%E5%90%AB%E6%95%B0%E6%8D%AE%E7%9A%84%E7%94%A8%E6%88%B7%E5%8F%8B%E5%A5%BD%E6%A1%86%E6%9E%B6%E7%BB%93%E6%9E%84%E7%9A%84%E6%8C%87%E9%92%88%E3%80%82%3C%2FDIV%3E%3CDIV%3E*%2F%3C%2FDIV%3E%3CDIV%3Estatic%20void%20BuildEthernetFrame(Gmac_Ip_BufferType%20*txBuf%E3%80%81%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Econst%20EthFrame_t%20*frame)%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E8%8E%B7%E5%8F%96%E6%8C%87%E5%90%91%E7%A1%AC%E4%BB%B6%E7%BC%93%E5%86%B2%E5%8C%BA%E6%95%B0%E6%8D%AE%E5%8C%BA%E8%B5%B7%E5%A7%8B%E4%BD%8D%E7%BD%AE%E7%9A%84%E6%8C%87%E9%92%88%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint8%20*ptr%20%3D%20txBuf-%26gt%3B%E6%95%B0%E6%8D%AE%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E5%B0%86%206%20%E5%AD%97%E8%8A%82%E7%9A%84%E7%9B%AE%E6%A0%87%20MAC%20%E5%9C%B0%E5%9D%80%E5%A4%8D%E5%88%B6%E5%88%B0%E7%BC%93%E5%86%B2%E5%8C%BA%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Ememcpy(ptr%2C%20frame-%26gt%3BdstMac%2C%206U)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Eptr%20%2B%3D%206U%3B%2F%2F%E5%B0%86%E6%8C%87%E9%92%88%E5%90%91%E5%89%8D%E7%A7%BB%E5%8A%A8%206%20%E5%AD%97%E8%8A%82%E3%80%82%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E5%A4%8D%E5%88%B6%206%20%E5%AD%97%E8%8A%82%E7%9A%84%E6%BA%90%20MAC%20%E5%9C%B0%E5%9D%80%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Ememcpy(ptr%2C%20frame-%26gt%3BsrcMac%2C%206U)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Eptr%20%2B%3D%206U%3B%20%2F%2F%20%E5%B0%86%E6%8C%87%E9%92%88%E5%90%91%E5%89%8D%E7%A7%BB%E5%8A%A8%E3%80%82%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E5%A4%8D%E5%88%B6%202%20%E5%AD%97%E8%8A%82%20EtherType%EF%BC%8C%E6%89%8B%E5%8A%A8%E5%A4%84%E7%90%86%E5%A4%A7%E7%AB%AF%E5%AD%97%E8%8A%82%E9%A1%BA%E5%BA%8F%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*ptr%2B%2B%20%3D%20(uint8)%20((frame-%26gt%3BetherType)%26gt%3B%26gt%3B%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%20%26amp%3B%200xFFU)%3B%2F%2F%E6%9C%80%E9%AB%98%E6%9C%89%E6%95%88%E5%AD%97%E8%8A%82%3C%2FSPAN%3E%20(MSB)%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*ptr%2B%2B%20%3D%20(uint8)%20(frame-%26gt%3B%20EtherType%20%26amp%3B%200xFFU)%3B%2F%2F%E6%9C%80%E4%BD%8E%E6%9C%89%E6%95%88%E5%AD%97%E8%8A%82%20(LSB)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E5%B0%86%E6%9C%89%E6%95%88%E8%BD%BD%E8%8D%B7%E6%95%B0%E6%8D%AE%E5%A4%8D%E5%88%B6%E5%88%B0%E7%BC%93%E5%86%B2%E5%8C%BA%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Ememcpy(ptr%2C%20frame-%26gt%3Bpayload%2C%20frame-%26gt%3BpayloadLen)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Eptr%20%2B%3D%20frame-%26gt%3BpayloadLen%3B%20%2F%2F%20%E5%B0%86%E6%8C%87%E9%92%88%E7%A7%BB%E8%BF%87%E6%9C%89%E6%95%88%E8%BD%BD%E8%8D%B7%E3%80%82%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E8%AE%BE%E7%BD%AE%E7%BC%93%E5%86%B2%E5%8C%BA%E7%9A%84%E6%80%BB%E9%95%BF%E5%BA%A6%E3%80%82%E7%A1%AC%E4%BB%B6%E5%B0%86%E6%B7%BB%E5%8A%A0%20FCS%EF%BC%88CRC%EF%BC%89%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EtxBuf-%26gt%3BLength%20%3D%20(uint32)%20(ptr%20-%20txBuf-%26gt%3BData)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3D%3D%3D%3D%3D%3D%20PHY%20init%EF%BC%88TJA110x%20%E9%80%9A%E8%BF%87%20MDIO%EF%BC%89%20%3D%3D%3D%3D%3D%3D%20*%2F%3C%2FDIV%3E%3CDIV%3Estatic%20void%20Eth_Phy_Init(void)%20%7B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E4%B8%BA%20PHY%20%E9%80%9A%E4%BF%A1%E5%90%AF%E7%94%A8%20MDIO%EF%BC%88%E7%AE%A1%E7%90%86%E6%95%B0%E6%8D%AE%20I%2FO%EF%BC%89%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EGmac_Ip_EnableMDIO%EF%BC%88INST_GMAC_0%EF%BC%8CFALSE%EF%BC%8C48000000U%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20---%20%E9%80%9A%E8%BF%87%E8%AF%BB%E5%8F%96%20PHY%20ID1%2FID2%20%E5%8F%91%E7%8E%B0%20PHY%20%E5%9C%B0%E5%9D%80%20---%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Efor%20(phy_addr%20%3D%200U%3B%20phy_addr%26lt%3B%2032U%3B%20%2B%2Bphy_addr)%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E(void)%20Gmac_Ip_MDIORead%EF%BC%88INST_GMAC_0%EF%BC%8Cphy_addr%EF%BC%8C2U%EF%BC%8C%26amp%3Bregister_value_0%E3%80%81%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E1U)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E(void)%20Gmac_Ip_MDIORead%EF%BC%88INST_GMAC_0%EF%BC%8Cphy_addr%EF%BC%8C3U%EF%BC%8C%26amp%3Bregister_value_1%E3%80%81%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E1U)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20TJA110x%20ID%EF%BC%9A0x001B%20%2F%200xB013%EF%BC%88%E5%A6%82%E6%9E%9C%E7%A1%85%E7%89%87%E4%B8%8D%E5%90%8C%EF%BC%8C%E8%AF%B7%E8%BF%9B%E8%A1%8C%E8%B0%83%E6%95%B4%EF%BC%89%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Eif%20((register_value_0%20%3D%3D%200x001B)%26amp%3B%26amp%3B%20(register_value_1%20%3D%3D%200xB013))%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E6%89%93%E7%A0%B4%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20RESET%20PHY%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E(void)%20Gmac_Ip_MDIOWrite%EF%BC%88INST_GMAC_0%EF%BC%8Cphy_addr%EF%BC%8C0U%EF%BC%8C0x8000U%EF%BC%8C1U%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E7%AD%89%E5%BE%85%20RESET%20%E5%AE%8C%E6%88%90%EF%BC%88bit15%20%E6%B8%85%E9%99%A4%EF%BC%89*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Edo%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E(void)%20Gmac_Ip_MDIORead%EF%BC%88INST_GMAC_0%EF%BC%8Cphy_addr%EF%BC%8C0U%EF%BC%8C%26amp%3Bregister_value_0%E3%80%81%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E1U)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%20while%20(register_value_0%26amp%3B%200x8000U)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E5%9F%BA%E6%9C%AC%E5%81%A5%E5%85%A8%E6%80%A7%E6%A3%80%E6%9F%A5%EF%BC%88%E5%8F%AF%E9%80%89%E7%9A%84%EF%BC%8C%E4%BD%86%E5%9C%A8%E5%90%AF%E5%8A%A8%E6%97%B6%E6%95%88%E6%9E%9C%E5%BE%88%E5%A5%BD%EF%BC%89*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20ePHY%20%E5%90%AF%E7%94%A8%E6%A3%80%E6%9F%A5%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E(void)%20Gmac_Ip_MDIOReadMMD%EF%BC%88INST_GMAC_0%EF%BC%8Cphy_addr%EF%BC%8C1%EF%BC%8C0x8048U%E3%80%81%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26amp%3Bregister_value_0%EF%BC%8C1U%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E4%B8%BB%2F%E4%BB%8E%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E(void)%20Gmac_Ip_MDIOReadMMD%EF%BC%88INST_GMAC_0%EF%BC%8Cphy_addr%EF%BC%8C1%EF%BC%8C0x0834U%E3%80%81%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26amp%3Bregister_value_0%EF%BC%8C1U%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20xMII%20%E9%85%8D%E7%BD%AE%EF%BC%88Rev-RMII%EF%BC%89%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E(void)%20Gmac_Ip_MDIOReadMMD%EF%BC%88INST_GMAC_0%EF%BC%8Cphy_addr%EF%BC%8C30%EF%BC%8C0xAFC6U%E3%80%81%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26amp%3Bregister_value_0%EF%BC%8C1U%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E9%93%BE%E6%8E%A5%E7%8A%B6%E6%80%81%E8%BD%AE%E8%AF%A2%EF%BC%880x8102%20%E7%9A%84%E7%AC%AC%202%20%E4%BD%8D%EF%BC%89*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Edo%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E(void)%20Gmac_Ip_MDIOReadMMD%EF%BC%88INST_GMAC_0%EF%BC%8Cphy_addr%EF%BC%8C30%EF%BC%8C0x8102U%E3%80%81%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26amp%3Bregister_value_0%EF%BC%8C1U%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%20while%20(((register_value_0%26amp%3B%20(1U%26lt%3B%26lt%3B%202))%20%3D%3D%200U))%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3D%3D%3D%3D%3D%3D%20Main%20%3D%3D%3D%3D%3D%3D%20*%2F%3C%2FDIV%3E%3CDIV%3Eint%20main(void)%20%7B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E9%80%9A%E8%BF%87%20DCM%20%E5%B0%86%20MAC%20%E7%BD%AE%E5%85%A5%20RMII%20%E6%A8%A1%E5%BC%8F%EF%BC%88%E6%A0%B9%E6%8D%AE%E6%82%A8%E7%9A%84%E5%8E%9F%E5%A7%8B%E4%BB%A3%E7%A0%81%EF%BC%89%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Eip_dcm_gpr-%26gt%3Bdcmrwf1%20%3D%20(ip_dcm_gpr-%26gt%3Bdcmrwf1%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26amp%3B%20~dcm_gpr_dcmrwf1_mac_conf_sel_mask)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7C%20dcm_gpr_dcmrwf1_mac_conf_sel(2u)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E6%97%B6%E9%92%9F%20%2F%20%E5%BC%95%E8%84%9A%20%2F%20GMAC%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%EF%BC%88%E7%94%B1%20RTD%20%E9%85%8D%E7%BD%AE%E5%B7%A5%E5%85%B7%E7%94%9F%E6%88%90%EF%BC%89%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EClock_Ip_Init(%26amp%3BClock_Ip_aClockConfig%5B0%5D)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ESiul2_Port_Ip_Init(%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ENUM_OF_CONFIGURED_PINS_PortContainer_0_BOARD_InitPeripherals%E3%80%81%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Eg_pin_mux_InitConfigArr_PortContainer_0_BOARD_InitPeripherals%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EStatus%20%3D%20Gmac_Ip_Init(INST_GMAC_0%2C%26amp%3BGmac_0_ConfigPB)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EDevAssert(Status%20%3D%3D%20GMAC_STATUS_SUCCESS)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E8%B0%83%E5%87%BA%20PHY%20%E5%B9%B6%E7%AD%89%E5%BE%85%E9%93%BE%E6%8E%A5%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EEth_Phy_Init()%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E5%A3%B0%E6%98%8E%E4%B8%80%E4%B8%AA%E6%9C%AC%E5%9C%B0%E5%8F%98%E9%87%8F%EF%BC%8C%E7%94%A8%E4%BA%8E%E4%BF%9D%E5%AD%98%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%B8%A7%E6%95%B0%E6%8D%AE%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EEthFrame_t%20txFrame%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20---%20%E7%BB%84%E8%A3%85%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%B8%A7%20---%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E5%A4%8D%E5%88%B6%E6%A3%80%E7%B4%A2%E5%88%B0%E7%9A%84%E7%A1%AC%E4%BB%B6%20MAC%20%E4%BD%9C%E4%B8%BA%E6%BA%90%E5%9C%B0%E5%9D%80%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Ememcpy(txFrame.srcMac%E3%80%81MacAddr_Src%EF%BC%8C6U%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E5%A4%8D%E5%88%B6%E9%A2%84%E5%AE%9A%E4%B9%89%E7%9A%84%E7%9B%AE%E6%A0%87%20MAC%20%E5%9C%B0%E5%9D%80%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Ememcpy(txFrame.dstMac%E3%80%81MacAddr_Dest%EF%BC%8C6U%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BB%A5%E5%A4%AA%E7%B1%BB%E5%9E%8B%EF%BC%88%E5%A6%82%E4%B8%93%E6%9C%89%E5%8D%8F%E8%AE%AE%EF%BC%89%E3%80%820xBB80%20%3D%2048000%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EtxFrame.etherType%20%3D%200xA5A5U%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E8%AE%BE%E7%BD%AE%E6%9C%89%E6%95%88%E8%BD%BD%E8%8D%B7%E9%95%BF%E5%BA%A6%E3%80%82%E4%BB%A5%E5%A4%AA%E7%BD%91%E9%9C%80%E8%A6%81%E6%9C%80%E5%B0%8F%E5%B8%A7%E5%A4%A7%E5%B0%8F%EF%BC%8C%E5%9B%A0%E6%AD%A4%E6%9C%89%E6%95%88%E8%B4%9F%E8%BD%BD%20%26lt%3B%2046%20%E5%AD%97%E8%8A%82%E9%9C%80%E8%A6%81%E5%A1%AB%E5%85%85%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EtxFrame.payloadLen%20%3D%2046U%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E7%94%A8%E8%99%9A%E6%8B%9F%E6%95%B0%E6%8D%AE%EF%BC%88%E7%AE%80%E5%8D%95%E7%9A%84%E5%8D%87%E5%BA%8F%E6%95%B0%E5%AD%97%EF%BC%89%E5%A1%AB%E5%85%85%E6%9C%89%E6%95%88%E8%BD%BD%E8%8D%B7%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Efor%20(uint16%20i%20%3D%200%3B%20i%26lt%3B%20txFrame.payloadLen%EF%BC%9Bi%2B%2B)%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EtxFrame.payload%5Bi%5D%20%3D%20(uint8)%20i%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20---%20%E5%87%86%E5%A4%87%E4%BC%A0%E8%BE%93%20---%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E5%90%91%20GMAC%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%86%85%E9%83%A8%E9%98%9F%E5%88%97%E7%94%B3%E8%AF%B7%E4%B8%80%E4%B8%AA%E7%A9%BA%E9%97%B2%E7%9A%84%E4%BC%A0%E8%BE%93%E7%BC%93%E5%86%B2%E5%8C%BA%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EStatus%20%3D%20Gmac_Ip_GetTxBuff(INST_GMAC_0%EF%BC%8C0U%EF%BC%8C%26amp%3BTxBuffer%EF%BC%8CNULL_PTR)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EDevAssert(Status%20%3D%3D%20GMAC_STATUS_SUCCESS)%3B%2F%2F%E5%A6%82%E6%9E%9C%E6%B2%A1%E6%9C%89%E5%8F%AF%E7%94%A8%E7%BC%93%E5%86%B2%E5%8C%BA%EF%BC%8C%E5%88%99%E5%81%9C%E6%AD%A2%E3%80%82%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E8%B0%83%E7%94%A8%E8%BE%85%E5%8A%A9%E5%87%BD%E6%95%B0%EF%BC%8C%E5%B0%86%E7%BB%84%E8%A3%85%E5%A5%BD%E7%9A%84%E5%B8%A7%E5%A4%8D%E5%88%B6%E5%88%B0%E7%A1%AC%E4%BB%B6%E7%BC%93%E5%86%B2%E5%8C%BA%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EBuildEthernetFrame(%26amp%3BTxBuffer%2C%26amp%3BtxFrame)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%3D%3D%3D%3D%20%E6%AF%8F%E7%A7%92%E5%8F%91%E9%80%81%E4%B8%80%E6%AC%A1%EF%BC%8C%E4%BB%A5%E4%BE%BF%20Wireshark%20%E8%AF%BB%E5%8F%96%20%3D%3D%3D%3D%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Efor%20(%3B%3B)%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20---%20%E5%8F%91%E9%80%81%E5%B8%A7%20---%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E6%8C%87%E7%A4%BA%20GMAC%20%E7%A1%AC%E4%BB%B6%E5%8F%91%E9%80%81%E7%BC%93%E5%86%B2%E5%8C%BA%E7%9A%84%E5%86%85%E5%AE%B9%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EStatus%20%3D%20Gmac_Ip_SendFrame(INST_GMAC_0%EF%BC%8C0U%EF%BC%8C%26amp%3BTxBuffer%EF%BC%8C%26amp%3BTxOptions)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EDevAssert(Status%20%3D%3D%20GMAC_STATUS_SUCCESS)%3B%20%2F%2F%20%E5%A6%82%E6%9E%9C%E5%8F%91%E9%80%81%E5%A4%B1%E8%B4%A5%E5%88%99%E5%81%9C%E6%AD%A2%E3%80%82%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E7%AD%89%E5%BE%85%E4%BC%A0%E8%BE%93%E5%B8%A7%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Edo%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EStatus%20%3D%20Gmac_Ip_GetTransmitStatus(INST_GMAC_0%EF%BC%8C0U%EF%BC%8C%26amp%3BTxBuffer%E3%80%81%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26amp%3BTxInfo%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%20while%20(Status%20%3D%3D%20GMAC_STATUS_BUSY)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EDevAssert((GMAC_STATUS_SUCCESS%20%3D%3D%20Status)%20%7C%7C%20(0U%20!%3D%20TxInfo.ErrMask))%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E~1%20%E7%A7%92%E5%BB%B6%E8%BF%9F%EF%BC%88%E8%B0%83%E6%95%B4%E6%97%B6%E9%92%9F%EF%BC%9A%E8%BF%99%E6%98%AF%E4%B8%80%E4%B8%AA%E7%B2%97%E7%95%A5%E7%9A%84%E8%BD%AF%E4%BB%B6%E7%AD%89%E5%BE%85%E6%97%B6%E9%97%B4%EF%BC%89%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Edelay_cycles(10000000U)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E5%A6%82%E6%9E%9C%20(exit_code%20!%3D%200)%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E6%89%93%E7%A0%B4%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E8%BF%94%E5%9B%9E%20exit_code%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%7D%3C%2FDIV%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2188046%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Gibberish%20receiving%20when%20transmitting%20custom%20etherType%20Ethernet%20Frame%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2188046%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F253472%22%20target%3D%22_blank%22%3E%40R_S002%3C%2FA%3E%E3%80%81%3C%2FP%3E%0A%3CP%3E%E6%88%91%E7%9B%B8%E4%BF%A1%E8%BF%99%E4%B8%AA%E4%BB%A3%E7%A0%81%E8%A1%8C%EF%BC%9A%3C%2FP%3E%0A%3CDIV%3E%3CSPAN%3E*ptr%2B%2B%20%3D%20(uint8)%20((frame-%26gt%3BetherType%26gt%3B%26gt%3B%20)%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%26amp%3B%200xFFU)%3B%2F%2F%E6%9C%80%E9%AB%98%E6%9C%89%E6%95%88%E5%AD%97%E8%8A%82%3C%2FSPAN%3E%20(MSB)%3C%2FDIV%3E%0A%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CDIV%3E%3CSPAN%3E%E5%BA%94%E8%AF%A5%E6%98%AF%E8%BF%99%E6%A0%B7%E7%9A%84%3C%2FSPAN%3E%3C%2FDIV%3E%0A%3CDIV%3E%0A%3CP%3E%3CSPAN%3E%3C!--ScriptorStartFragment--%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CDIV%20class%3D%22scriptor-paragraph%22%3E%3CSPAN%3E%3C%2FSPAN%3E%3CSPAN%3E*ptr%2B%2B%3C%2FSPAN%3E%3CSPAN%3E%20%3C%2FSPAN%3E%3CSPAN%3E%3C%2FSPAN%3E%3CSPAN%3E%3D(%3C%2FSPAN%3E%3CSPAN%3E%20%3C%2FSPAN%3E%3CSPAN%3Euint8)((%3C%2FSPAN%3E%3CSPAN%3E%20%3C%2FSPAN%3E%3CSPAN%3E%3C%2FSPAN%3E%3CSPAN%3E%3C%2FSPAN%3E%3CSPAN%3Eframe-%3C%2FSPAN%3E%3CSPAN%3E%20%26gt%3B%20etherType)%3C%2FSPAN%3E%3CSPAN%3E%20%3C%2FSPAN%3E%3CSPAN%3E%26gt%3B%3C%2FSPAN%3E%3CSPAN%3E%20%26gt%3B%3C%2FSPAN%3E%208%20)%3CSTRONG%3E%3CFONT%20color%3D%22%23FF0000%22%3E%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%3C%2FFONT%3E%3C%2FSTRONG%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%20%3CSPAN%3E0xFFU%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CSPAN%3E%2F%2F%E6%9C%80%E9%AB%98%E6%9C%89%E6%95%88%E5%AD%97%E8%8A%82%3C%2FSPAN%3E%20(MSB)%3C%2FDIV%3E%0A%3C%2FDIV%3E%0A%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CP%3E%E9%A1%BA%E7%A5%9D%E5%95%86%E7%A5%BA%EF%BC%81%3C%2FP%3E%0A%3CP%3E%E5%B8%95%E7%BB%B4%E5%B0%94%3C%2FP%3E%3C%2FLINGO-BODY%3E