Hi @Zhang, Semon
在使用821 MCU域中的2G CPSW中的Port2作为以太网实体时和5G中的一个port互联,在macl中配置发送和接收的buffer个数为48。初始化成功后,2G侧PORT1发送报文,发送超过配置的buffer后,不能再发送数据,请求不到空闲的buffer,能正常的接收报文。数组gEthTxCqRingMem不能写入数据。
uint8 ArpData_VLAN3[32] =
{
0x00,0x03,0x08,06,0x00, 0x01, 0x08, 0x00, 0x06, 0x04, 0x00, 0x01, 0x00, 0x03, 0x19, 0x00, 0x00, 0x01,
0xa9, 0xfe, 0xfe, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa9, 0xfe, 0xab, 0xa8
};
uint8 MacDestUncastAddress[8] = {0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0x06};
uint8 *TmpBuffPtr;
void Tx_EthFrame_VLAN3(void)
{
boolean Txstatus=0;
uint16 Tmp_Txlenghth1 = 32;
Global_TempUSage[1] = Eth_ProvideTxBuffer(0, 0, &TmpBuffIdx, &TmpBuffPtr, &Tmp_Txlenghth1);
ArpData[15] = gCnt++;
if(TmpBuffPtr != NULL_PTR)
{
TxBufferFill(TmpBuffPtr, Tmp_Txlenghth1, ArpData_VLAN3);
EthDemoRetVal[1] = Eth_Transmit(0, TmpBuffIdx, ETH_VLAN_PROTOCOL, Txstatus, Tmp_Txlenghth1, &MacDestUncastAddress[0]);
}
else
EthDemoRetVal[1] = 1;
}
#ifdef __cplusplus
extern "C" {
#endif
/* ========================================================================== */
/* Macros & Typedefs */
/* ========================================================================== */
/**
* \brief ETH Build Variant
* STD_ON for VariantPreCompile / STD_OFF for VariantPostBuild
*/
#define ETH_PRE_COMPILE_VARIANT (STD_ON)
/** \brief Enable/disable SPI get version info API */
#define ETH_VERSION_INFO_API (STD_ON)
/** \brief Enable/disable Eth time sync related API */
#define ETH_GLOBALTIMESUPPORT_API (STD_OFF)
/** \brief Enable/Disable Development Error Detection */
#define ETH_DEV_ERROR_DETECT (STD_OFF)
/** \brief Enable/disable Eth get counter values API */
#define ETH_GET_COUNTER_VALUES_API (STD_ON)
/** \brief Enable/disable Eth get RX stats count API */
#define ETH_GET_RX_STATS_API (STD_ON)
/** \brief Enable/disable Eth get TX stats count API */
#define ETH_GET_TX_STATS_API (STD_ON)
/** \brief Enable/disable Eth get TX error stats count API */
#define ETH_GET_TX_ERROR_COUNTERSVALUES_API (STD_ON)
/** \brief Enable/disable Eth zero-copy transmit API */
#define ETH_ZERO_COPY_TX (STD_OFF)
/** \brief Enable/disable Eth queue-based APIs */
#define ETH_USE_Q_APIS (STD_OFF)
/** \brief Enable/disable Eth MII related API */
#define ETH_ENABLE_MII_API (STD_ON)
/** \brief Enable/disable optional API Eth_UpdatePhysAddrFilter */
#define ETH_UPDATE_PHYS_ADDR_FILTER_API (STD_ON)
/** \brief Enable/disable optional API Eth_NotifyVirtmacMsgReceived */
#define ETH_VIRTUALMAC_NOTIFYMSGRECEIVED_API (STD_OFF)
/** \brief Enable/disable optional API Eth_DispatchVirtmacSubscribeAllTraffic */
#define ETH_VIRTUALMAC_SUBSCRIBEALLTRAFFIC_API (STD_OFF)
/** \brief Enable/disable optional API Eth_DispatchVirtmacUnsubscribeAllTraffic */
#define ETH_VIRTUALMAC_UNSUBSCRIBEALLTRAFFIC_API (STD_OFF)
/** \brief Enable/disable optional API Eth_DispatchVirtmacSubscribeDstMac */
#define ETH_VIRTUALMAC_SUBSCRIBEDSTMAC_API (STD_OFF)
/** \brief Enable/disable optional API Eth_DispatchVirtmacUnsubscribeDstMac */
#define ETH_VIRTUALMAC_UNSUBSCRIBEDSTMAC_API (STD_OFF)
/** \brief Enable/disable optional API Eth_DispatchVirtmacAssociateIPv4Macaddr */
#define ETH_VIRTUALMAC_ASSOCIATEIPV4MACADDR_API (STD_OFF)
/** \brief Enable/disable optional API Eth_DispatchVirtmacDisassociateIPv4Macaddr */
#define ETH_VIRTUALMAC_DISASSOCIATEIPV4MACADDR_API (STD_OFF)
/** \brief Enable/disable optional API Eth_DispatchVirtmacAddUnicastAddr */
#define ETH_VIRTUALMAC_ADD_UNICAST_MACADDR_API (STD_OFF)
/** \brief Enable/disable optional API Eth_DispatchVirtmacAddMcastAddr */
#define ETH_VIRTUALMAC_ADD_MCAST_MACADDR_API (STD_OFF)
/** \brief Enable/disable optional API Eth_DispatchVirtmacDelAddr */
#define ETH_VIRTUALMAC_DEL_MACADDR_API (STD_OFF)
/** \brief Enable/disable optional API Eth_SendCustomNotify */
#define ETH_VIRTUALMAC_SEND_CUSTOM_NOTIFY_API (STD_OFF)
/** \brief Enable/disable optional API Eth_DispatchVirtmacAddVlan */
#define ETH_VIRTUALMAC_ADD_VLAN_API (STD_OFF)
/** \brief Enable/disable optional API Eth_DispatchVirtmacDelVlan */
#define ETH_VIRTUALMAC_DEL_VLAN_API (STD_OFF)
/** \brief Enable/disable transmit interrupt */
#define ETH_ENABLE_TX_INTERRUPT (STD_ON)
/** \brief Enable/disable receive interrupt */
#define ETH_ENABLE_RX_INTERRUPT (STD_ON)
/** \brief Number of TX buffers */
#define ETH_NUM_TX_BUFFERS (48U)
/** \brief Number of RX buffers */
#define ETH_NUM_RX_BUFFERS (48U)
/** \brief Limits the maximum transmit buffer length (frame length) in bytes */
#define ETH_TX_BUF_LEN_BYTE (1522U)
/** \brief Limits the maximum receive buffer length (frame length) in bytes */
#define ETH_RX_BUF_LEN_BYTE (1522U)
/** \brief Enable/Disable DMA descriptors in cached memory */
#define ETH_DESC_IN_CACHED_MEMORY (STD_ON)
/** \brief Enable/Disable DMA rings in cached memory */
#define ETH_RING_IN_CACHED_MEMORY (STD_ON)
/** \brief ISR type */
#define ETH_ISR_TYPE (ETH_ISR_CAT2)
/** \name Pre-compile switches for MAC addr configuration, ALE conf. etc. */
#define ETH_USE_DEFAULT_MAC_ADDR (STD_OFF)
/** \brief Counter ID for counter used to count wait ticks */
#define ETH_OS_COUNTER_ID ((CounterType)OsCounter_Core0)
/** \brief Timeout value for a wait (busy wait) */
#define ETH_TIMEOUT_DURATION (3200U)
/** \brief MAC address of the controller in network byte order */
#define ETH_CTRL_PHY_ADDRESS { 0xaaU,0xbbU,0xccU,0xddU,0xeeU,0x07U,}
/** \brief Enable/disable Virtual MAC support for CPSW9G */
#define ETH_VIRTUALMAC_SUPPORT (STD_OFF)
/** \brief Timeout value for Firmware Attach msg received from server
* Units of timeout is in terms of number of invocations of Eth_MainFunction
*/
#define ETH_VIRTUALMAC_FWINFO_TIMEOUT (10U)
/* ========================================================================== */
/* External Function Prototype */
/* ========================================================================== */
/** \brief Function to write-back and invalidate cache */
extern void EthApp_wbInvCache(uint8 *buf, uint16 len);
/** \brief Function to write-back cache */
extern void EthApp_wbCache(uint8 *buf, uint16 len);
/** \brief Function to invalidate cache */
extern void EthApp_invCache(uint8 *buf, uint16 len);
/**
* \name ETH DEM Error codes to report
*
* Pre-compile switches for enabling/disabling DEM events
* @{
*/
#define DemConf_DemEventParameter_ETH_DEM_NO_EVENT (0xFFFFU)
#define ETH_DEM_NO_EVENT DemConf_DemEventParameter_ETH_DEM_NO_EVENT
#ifndef ETH_E_HARDWARE_ERROR
/** \brief Hardware failed */
#define ETH_E_HARDWARE_ERROR (ETH_DEM_NO_EVENT)
#endif
#ifndef ETH_E_LATECOLLISION
/** \brief Late collision */
#define ETH_E_LATECOLLISION (ETH_DEM_NO_EVENT)
#endif
#ifndef ETH_E_MULTIPLECOLLISION
/** \brief Multiple collision */
#define ETH_E_MULTIPLECOLLISION (ETH_DEM_NO_EVENT)
#endif
#ifndef ETH_E_SINGLECOLLISION
/** \brief Single collision */
#define ETH_E_SINGLECOLLISION (ETH_DEM_NO_EVENT)
#endif
#ifndef ETH_E_ALIGNMENT
/** \brief Alignment error */
#define ETH_E_ALIGNMENT (ETH_DEM_NO_EVENT)
#endif
#ifndef ETH_E_OVERSIZEFRAME
/** \brief Oversize Frame */
#define ETH_E_OVERSIZEFRAME (ETH_DEM_NO_EVENT)
#endif
#ifndef ETH_E_UNDERSIZEFRAME
/** \brief Undersize frame */
#define ETH_E_UNDERSIZEFRAME (ETH_DEM_NO_EVENT)
#endif
#ifndef ETH_E_CRC
/** \brief CRC Error */
#define ETH_E_CRC (ETH_DEM_NO_EVENT)
#endif
#ifndef ETH_E_RX_FRAMES_LOST
/** \brief Received Frames lost */
#define ETH_E_RX_FRAMES_LOST (ETH_DEM_NO_EVENT)
#endif
#ifndef ETH_E_ACCESS
/** \brief Hardware failed */
#define ETH_E_ACCESS (ETH_DEM_NO_EVENT)
#endif
#ifndef ETH_E_TX_INTERNAL
/** \brief TX packet descriptor returned by UDMA is corrupted.
* Invalid data pointer in descriptor
*/
#define ETH_E_TX_INTERNAL (ETH_DEM_NO_EVENT)
#endif
/* @} */
/* ========================================================================== */
/* Structures and Enums */
/* ========================================================================== */
/* ========================================================================== */
/* Generate Configuration */
/* ========================================================================== */
/**< \brief Pointer to the generated configuration */
extern const struct Eth_ConfigType_s EthConfig_MCU_PC;
/**< \brief Configuration of the driver */
#define ETH_DRV_CONFIG_0 ((const Eth_ConfigType *) &EthConfig_MCU_PC)
/* ========================================================================== */
/* Function Declarations */
/* ========================================================================== */
/* None */
#ifdef __cplusplus
}
#endif/**< \brief Ethernet configurations
Generated, not expected be modified manually */
ETH_CONFIG_DATA_SECTION CONST(Eth_ConfigType, ETH_CONFIG_DATA)
EthConfig_MCU_PC =
{
.ctrlIdx = ETH_CONTROLLER_ID_0,
/**< Controller index, 0 always */
.udmaInstId = UDMA_INST_ID_MCU_0,
/**< Instance of UDMA to be used */
.dmaTxChIntrNum = 80U,
/**< DMA TX channel interrupt number */
.dmaRxChIntrNum = 81U,
/**< DMA RX channel interrupt number */
.mdioBusFreq = 2200000U,
/**< MDIO bus clock (MDCLK) frequency (in Hz) */
.connType = ETH_MAC_CONN_TYPE_RMII_100,
/**< MII connection type */
.loopback = false,
/**< Loopback enable */
.enableCacheOps = (uint32)TRUE,
/**< Packet memory is cacheable */
.cacheWbInv = (Eth_CacheWbInv) &EthApp_wbInvCache,
/**< Cache write-back invalidate function */
.cacheWb = (Eth_CacheWb) &EthApp_wbCache,
/**< Cache write-back function */
.cacheInv = (Eth_CacheInv) &EthApp_invCache,
/**< Cache invalidate function */
.enetType = ETH_ENETTYPE_CPSW2G,
/**< CPSW type */
.macPort = ETH_PORT_MAC_PORT_1,
/**< Port mode */
.enableVirtualMac = FALSE,
/**< Virtual MAC mode */
};
#define ETH_STOP_SEC_CONFIG_DATA
#include "Eth_MemMap.h"