Atollic STM32, GCC Compiler, Debug<->Release

Gast #2178643
Lesenswert?

Hallo,

ich benutze zum Programmieren eines STM32f103 das Atollic TrueSTUDIO 
Lite.

Dieses bietet einem die Möglichkeit über ein Auswahlmenü zwischen Debug 
und Release beim kompilieren zu unterscheiden.
In meinem Programm nutze ich den Watchdog des STM. Um aber weiter 
Debuggen zu können, muss dieser in der Debug-Phase deaktiviert werden.

Das Aktiviere bzw. Deaktivieren realisiere ich wie folgt:
1
#ifdef XXXXX
2
  IWDG_init();//Funktion zum Initialisieren des WD
3
#endif

Nur leider kann ich nicht in Erfahrung bringen, welche Variable/Symbol 
sich hinter dem Menü verbirgt (siehe Bild im Anhang).
Getestet habe ich folgende Varianten:
NDEBUG
__DEBUG
_DEBUG
DEBUG
...

Kann mir vielleicht jemand helfen und mir sagen welches Symbol ich für 
"XXXXX" einsetzen muss?

Vielen Dank und Gruß
Angehängte Dateien:
#2178659
Lesenswert?

Ich spreche jetzt mal für Eclipse. Atollic Studio ist ja davon 
abgeleitet.

In den jeweiligen Project-Properties kannst du die Compileroptionen 
einstellen. Unter anderem auch defines, die per Kommandozeile an den 
Compiler übergeben werden. Das geht jeweils für die Debug- und auch die 
Release Konfiguration. Dort kannst du für die Debug-Konfiguration ein 
define "DEBUG" eintragen und dieses dann später im Code verwenden. Bei 
der Release-Konfiguration trägts du dieses define nicht ein.
Gast #2178766
Lesenswert?

Vielen Dank für deine schnelle Antwort.

Ich habe wie im Anhang gezeigt das Symbol "_NDEBUG" unter der 
Debug-Konfiguration angelegt (Atollic.PNG).
Im Bild Atollic2.PNG ist zu erkennen, dass unter der 
Release-Konfiguration das Symbol nicht existiert.

Wenn ich jetzt aber wie im Bild aus dem ersten Post umschalte, wird 
nicht unterschieden. Bedeutet, bei
1
#ifdef _NDEBUG
2
  IWDG_init();//Funktion zum Initialisieren des WD
3
#endif

wird die Funktion immer ausgeführt. Egal ob Debug oder 
Release-Konfiguration.

Sind die Einstellungen denn eigentlich so richtig oder muss ich noch 
weitere vornehmen?

Vielen Dank nochmal für die Hilfe
Angehängte Dateien:
Gast #2179516
Lesenswert?

Hallo,

hier mal die Ausschnitte aus den Logfenstern:
Logfenster-Ausschnitt bei Debug:
1
arm-atollic-eabi-gcc -c -mthumb -mcpu=cortex-m3 -DSTM32F10X_MD
2
-DUSE_STDPERIPH_DRIVER -D_NDEBUG -I../src -I..\Libraries
3
\STM32F10x_StdPeriph_Driver\inc -I..\Libraries\CMSIS\CM3\CoreSupport
4
-I..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x -I../my_lib/inc 
5
-I../my_lib/src -O0 -ffunction-sections -fdata-sections -g -Wall -std=c99
6
-osrc\main.o ..\src\main.c

und der Ausschnitt beim Release:
1
arm-atollic-eabi-gcc -c -mthumb -mcpu=cortex-m3 -DSTM32F10X_MD
2
-DUSE_STDPERIPH_DRIVER -I../src -I..\Libraries
3
\STM32F10x_StdPeriph_Driver\inc -I..\Libraries\CMSIS\CM3\CoreSupport
4
-I..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x -I../my_lib/inc
5
-I../my_lib/src -Os -ffunction-sections -fdata-sections -Wall -std=c99
6
-osrc\main.o ..\src\main.c

Es scheint so, als ob alles richtig übergeben wird, oder? Das "_NDEBUG" 
ist ja zu sehen.
Trotzdem wird keine Unterscheidung gemacht.

Hast du oder jemand anderes noch eine Idee?

Vielen Dank und Gruß...
#2179982
Lesenswert?

HMm.. der Aufruf sieht gut aus.
Du mußt auch beachten, dass die Debug-Config (bei Eclipse zumindest) 
auch in einem Debug-Directory den ELF-File erzeugt. Während die 
Release-Config in einem Release-Ordner abgelegt wird. Vielleicht 
startest du immer die Debug-Variante?
Gast #2185423
Lesenswert?

Hallo,

Problem war, wie 900ss gesagt hat, das ich immer das Debug-RLF-File 
geladen habe. Es werden 2 verschiedene Files erzeugt, eins im Debug- und 
eins im Release-Ordner. Leider lädt Atollic beim umschalten zwischen 
Debug und Release immer nur das Debug-File in den Controller.

Da ich das Release-File nur per RS232 und dem ST Flash Loader und nicht 
aus der IDE heraus lade, ist das also erstmal kein Problem.
Vielleicht hat aber ja noch einer eine Idee, wie man Atollic/Eclipse 
dazu bringt auch gleich das richtige ELF-File zu laden.

Vielen Dank für die Hilfe und Gruß
Gast #2186040
Lesenswert?

Ich würde es einmal so versuchen:
In den Project Properties->RunDebug Settings auswählen.
Dort die entsprechende 'Launch configuration' markieren
(wahrscheinlich steht dort nur eine, "<Projektname>.elf"),
dann den Edit-Button drücken.
Dort steht üblicherweise (so z.B. bei meinem Projekt, das ich
gerade offen habe), als "C/C++ Application":
    Debug/<Projektname>.elf
und als Build Configuration
    Use Active

Ändere doch einfach bei "C/C++ Application" den Pfad auf "Release/" um.

Das Atollic beim Debuggen mit der Debug-Konfiguration startet,
finde ich nicht ganz unlogisch.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren