Problème avec EthDescriptorsAdd() sur le PIC32MX
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Problème avec EthDescriptorsAdd() sur le PIC32MX



  1. #1
    invite3bb6cfa9

    Problème avec EthDescriptorsAdd() sur le PIC32MX


    ------

    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 :

    Code:
     EthDescriptorsAdd(txDcptNo, ETH_DCPT_TYPE_TX, 0)
    Au lieu de me renvoyer txDcptNo, il me renvoie 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);

    -----

  2. #2
    invitef9ccb542

    Re : Problème avec EthDescriptorsAdd() sur le PIC32MX

    Bonjour,
    A tout hasard est-ce que l'adresse Ethernet a été initialisée dans une eeprom. ?

  3. #3
    invite3bb6cfa9

    Re : Problème avec EthDescriptorsAdd() sur le PIC32MX

    Bonjour,

    Non, il n'y a pas d'EEPROM dans le montage.

  4. #4
    RISC

    Re : Problème avec EthDescriptorsAdd() sur le PIC32MX

    Salut Anthony,

    As-tu copié le schéma de l'Ethernet starter kit ?
    Utilises-tu la stack TCP/IP de Microchip ?
    Ou stockes-tu l'adresse MAC ?

    J'ai quelques gros conseils à te donner si tu ne veux pas tourner en rond pendant des jours à chercher la source de ton problème :
    * si tu ne l'as pas encore fait, tu investis dans un kit PIC32 Ethernet starter kit comme plateforme de référence
    * tu flashes l'un des projets TCP/IP contenu dans les librairies Microchip : http://www.microchip.com/MAL
    * tu compares ton schéma avec celui du PIC32 ethernet starter kit
    * tu modifies un projet existant de la stack pour l'adapter à ta carte et vérifier ton hard. A partir de là tu auras une plateforme testée et tu pourras progresser sereinement...
    * si ton projet est un projet professionnel, participe à la formation webserveur de Microchip (COM4201)

    a+
    Dernière modification par RISC ; 23/02/2012 à 19h01.

  5. A voir en vidéo sur Futura
  6. #5
    invite3bb6cfa9

    Re : Problème avec EthDescriptorsAdd() sur le PIC32MX

    Bonsoir,

    Pour l'implémentation du PHY externe je me suis appuyé sur l'Ethernet Stater Kit et sur la documentation du DP83848C (le même que sur l'Ethernet Starter Kit). Je n'utilise pas encore le stack TCP/IP car je ne cherche pas encore à communiquer avec un ordinateur. Pour l'instant j'essaie juste de faire boucler les messages que j'envoie au sein du module Ethernet (Loopback). Normalement l'Ethernet sur ma carte devrait se comporter de la même manière que sur l'Ethernet starter kit, car il s'agit d'un motage similaire voir identique.

    Merci,
    Anthony.

Discussions similaires

  1. UART Transmission-reception Pic32mx
    Par invite4e8b483b dans le forum Électronique
    Réponses: 9
    Dernier message: 01/03/2012, 09h36
  2. PWM Sur PIC32MX
    Par inviteddae56c8 dans le forum Électronique
    Réponses: 2
    Dernier message: 23/09/2011, 23h25
  3. Probleme avec fscanfMat sur scilab
    Par invite3a97487a dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 27/03/2011, 11h17
  4. [Brun] probleme avec un composant sur ma tele LG
    Par invitec175b731 dans le forum Dépannage
    Réponses: 9
    Dernier message: 20/03/2007, 15h26
  5. probleme avec de la ram sur portable
    Par invite81c2f886 dans le forum Matériel - Hardware
    Réponses: 12
    Dernier message: 25/12/2003, 11h50
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...