[eclipse] Debug mode "fonctionne", pas le "run mode"
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

[eclipse] Debug mode "fonctionne", pas le "run mode"



  1. #1
    Vicolo

    [eclipse] Debug mode "fonctionne", pas le "run mode"


    ------

    Bonjour,

    Désolé pour le titre farfelu, mais je ne sais même pas comment nommer mon problème.

    Je programme actuellement une carte en C : STM32F303K8. J'ain utilisé les libraires pour faire de la liaison SPI/UART/TIMERS/I2C etc...
    Là n'est pas le problème, lorsque j'effectuais un projet de test pour par exemple programmer une liaison SPI, je le compilais, l'éxécutais et hop, je debug le tout car rien ne marche d'un coup

    Aujourd'hui, j'ai créé un nouveau projet, où j'intègre un protocole de communication sur un bus, et dans ce dit projet plus rien ne marche !
    Que ce soit le timer, les interruptions etc... J'ai donc debugguer le tout, et je me suis rendu compte que l'instruction passait par des fonctions d'interruptions d'erreurs :
    NMI_Handler()
    MemManage_Handler()
    Reset_Handler()

    Code:
    void NMI_Handler(void)
    {
       //USER CODE BEGIN NonMaskableInt_IRQn 0
    	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_SET);
       //USER CODE END NonMaskableInt_IRQn 0
    
       //USER CODE BEGIN NonMaskableInt_IRQn 1
    
       //USER CODE END NonMaskableInt_IRQn 1
    }
    
    
    /**
    * @brief This function handles reset fault.
    */
    void Reset_Handler(void)
    {
    	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_SET);
      while (1)
      {
      }
    
    }
    
    
    /**
    * @brief This function handles Memory management fault.
    */
    void MemManage_Handler(void)
    {
      /* USER CODE BEGIN MemoryManagement_IRQn 0 */
    	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_SET);
      /* USER CODE END MemoryManagement_IRQn 0 */
      while (1)
      {
      }
      /* USER CODE BEGIN MemoryManagement_IRQn 1 */
    
      /* USER CODE END MemoryManagement_IRQn 1 */
    }

    Lorsque j'utilise le debug mode, aucun soucis, je peux aller dans le main.c et faire mon programme (par exemple allumer une simple LED) mais lorsque j'utilise le RUN mode, et bien rien ne se passe, il semblerait que le programme rentre dans une boucle infinie.

    Mon projet se définit de la sorte : un fichier pour chaque "fonction" du µC, donc un fichier .c "TIMER" un fichier .c "SPi", un fichier .c "UART' et j'en passe...
    Pour essayer de comprendre ce problème j'ai mis des breakpoint un peu partout, mais lrosque j'en met dans les fonctions d'interruptions, cela me met :
    "No line XX in file YYY.c."
    et lorsque je ne met aucun breakpoint et que je désactive le breakpoint de base du main.c (pour le debug), j'ai : "no source file name main.c".

    Pour résumer : je peux par exemple allumer une LED en utilisant le debugguer, mais pas en effectuant un Run mode.

    et j'aimerais savoir si vous saviez ce qu'était conretement le NMI "non maskable interrupt" ? ainsi que les autres fonctions.
    Je sais que ça à l'air vachement brouillon comme question/topic/sujet, mais je vous avoue que je ne comprend rien.
    (J'ai recompiler/exécuté d'anciens programme avec des UARTs/TImer etc.. et tout fonctionne normalement)

    Merci pour la possible aide que vous pourrez m'apporter,
    Je reste dispo pour toutes questions dans l'immédiat.

    -----
    Dernière modification par Vicolo ; 31/05/2016 à 14h55. Motif: rajout

  2. #2
    Vicolo

    Re : [eclipse] Debug mode "fonctionne", pas le "run mode"

    Désolé pour le double-post.

    Il semblerait que ce soit un problème dû à la gestion de mémoire, je vous explique :

    J'ai recréé un projet, en incluant juste les fichiers "TIMER.C" "SPI.C" "UART.c" pour essayer de refaire marcher les fonctions de ma carte (sans ajouter le protocole du BUS) donc en soit, ça devrait marcher.
    Lorsque je joue avec le debugguer, je rentre directement dans la fonction du #1 : void MemManage_Handler(void) qui "gère la faute de gestion de mémoire" (??????) (ça veut dire que j'écris à une adresse qui n'existe pas ?)

    Lorsque je met un breakpoint à la premiere ligne du main (cette ligne met à 1 une GPIO, truc de base pour debug quoi) et ben j'ai une erreur dans led ebugguer :
    "No source file named main.c.".

    C'est vraiment bizarre, car dans le #1 je pensais que c'était dû au protocole du BUS, mais il semblerai que ce soit un de mes fichiers (ex Timer.c, SPi.c ou Uart.C) qui soit corrompu ?
    Le projet tel qu'il est compile très bien, mais devrait normalement s'éxécuter et SET une pin (pour debug plus simplement).

Discussions similaires

  1. VB mettre le micro en mode " ecoute" "veille" et "stop" sous visual basic
    Par mattlander dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 14/12/2015, 12h45
  2. Réponses: 3
    Dernier message: 09/10/2015, 16h07
  3. "trame asynchrone"= "frame relay" ou "Asynchronous transfer mode (ATM)"?
    Par JulienVictor dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 07/04/2015, 20h45
  4. [Blanc] Déverrouillage du mode "DEMO ON" sur cuisinière "Scholtès CI 36GW"
    Par invitec6cf2f03 dans le forum Dépannage
    Réponses: 0
    Dernier message: 28/02/2007, 12h35