Bonjour à tous,
J'ai développé une carte avec une interface Ethernet. J'ai employé un PHY DP83848C, relié au PIC32MX795F512L avec une interface RMII. Pour l'instant, je cherche a effectuer un teste Loopback pour tester le module Ethernet. Le microcontrôleur bloque sur l'instruction suivante :
Au lieu de me renvoyer txDcptNo, il me renvoie 0.Code:EthDescriptorsAdd(txDcptNo, ETH_DCPT_TYPE_TX, 0)
Je suis complètement bloqué et je ne vois pas d'où ça peut venir. Auriez-vous une idée du problème ?
Merci de votre aide,
Anthony.
Voici le code présent avant cette ligne :
Code:unsigned int txDcptNo = MAC_MAX_TX_DESCRIPTORS; // The number of the TX descriptors; < MAC_MAX_TX_DESCRIPTORS unsigned int rxDcptNo = MAC_MAX_RX_DESCRIPTORS; // The number of the RX descriptors; < MAC_MAX_RX_DESCRIPTORS unsigned int rxBuffSize = 768; // the size of the RX buffer.; MAC_RX_MIN_BUFF_SIZE < rxBuffSize < MAC_MAX_PKT_SIZE int pktSize=512; // Size of the packet to transmit; int pktBurst=8; // number of packets to transmit at once; pktBurst < MAC_MAX_TX_DESCRIPTORS // pktBurst*pktSize < rxDcptNo*rxBuffSize; otherwise the ETH controller will report RX overflow! sEthPktDcpt* pRxPkt; int ix, jx; eEthRes ethRes; int success; // Initialize the MAC memset(rxBuffers, 0, sizeof(rxBuffers)); // Clear buffer pointers memset(txBuffers, 0, sizeof(txBuffers)); // Clear buffer pointers memset(rxPktDcpt, 0, sizeof(rxPktDcpt)); // Clear packet descriptors for(ix=0 ; ix < sizeof(rxPktDcpt)/sizeof(*rxPktDcpt) ; ix++) { pRxPkt = rxPktDcpt; pRxPkt->next = pRxPkt + 1; pRxPkt = pRxPkt->next; } rxPktDcpt[ix-1].next=0; // end properly success=0; eEthOpenFlags oFlags; eEthMacPauseType pauseType; oFlags= ETH_OPEN_FDUPLEX|ETH_OPEN_100|ETH_OPEN_HUGE_PKTS|ETH_OPEN_MAC_LOOPBACK; // Enable loopback at the MAC level pauseType = ETH_MAC_PAUSE_ALL; // We can use both TX and RX pause type for Full Duplex // Start the initialization sequence EthInit(); EthMACOpen(oFlags, pauseType); // Set the RX packet filtering EthRxFiltersClr(ETH_FILT_ALL_FILTERS); EthRxFiltersSet(ETH_FILT_CRC_ERR_REJECT| ETH_FILT_RUNT_REJECT| ETH_FILT_ME_UCAST_ACCEPT| ETH_FILT_MCAST_ACCEPT| ETH_FILT_BCAST_ACCEPT| ETH_FILT_NOTME_UCAST_ACCEPT);
-----