Guten Abend,
ich arbeite mich gerade in den SAMD21J18 ein, der sich auch auf dem
xplained pro Board von Microchip findet.
Ich nutze das neueste ATMEL/MC-Studio und habe ein paar Beispielprojekte
angelegt.
Meine Frage ist folgende: Ich kann egal in welchem Projekt und egal, ob
mit oder ohne ASF an den wenigsten Prograsmmstellen Breakpoints setzen,
oder zuimindest werden die beim Programmstart inaktiv. Ich finde kein
Muster, warum ein paar BP funktioniereen und die anderen nicht.
Ich habe einige Erfahrung mit dem ATXMEGA, dort gibt diesen Effekt nur,
wenn der Optimizer den Codeteil wegoptimiert hat. Man kann in dem Fall
aber den Optimizer testweise ausschalten, dann klappt der BP wieder.
Beim SAM gehts auch ohne Optimizer nicht. Was mache ich falsch ? Ich
hätte noch die Möglichkeit auf den JTAG ICE3 auszuweichen, falls es am
Debugger liegt.
Danke für Eure Tips,
Gruß Thomas
Thomas M. schrieb:> Ich habe einige Erfahrung mit dem ATXMEGA, dort gibt diesen Effekt nur,> wenn der Optimizer den Codeteil wegoptimiert hat. Man kann in dem Fall> aber den Optimizer testweise ausschalten, dann klappt der BP wieder.
Ja, das wäre jetzt auch meine erste Idee gewesen.
Also du compilierst im "Debug" und im Toolchain Menü hast du die
Optimization auf "None (-O0)" gestellt?
Um welche Stellen handelt es sich, gGibt es da auch welche in einem
Bsp.-Projekt?
Sehe ich das richtig, dass du FreeRTOS verwendest?
Das hättest du direkt am Anfang sagen können.
Bin mir zwar nicht ganz sicher, aber ich denke du musst dem FreeRTOS
mitteilen, dass es nach dem compilieren auch Debug-fähig ist.
Evtl. suchst du mal nach "FreeRTOS Debug" oder so.
Könnte mir gut vorstellen, dass es entweder ein #define gibt oder vllt.
ist es auch ein compiler flag.
Sorry, hätte ich erwähnen müssen !
Aber ein Debug Flag scheint es nicht zu geben, aber ich habe eins der
Beispielprojekte aus dem Studio geladen, nennt sich OLED_POR_EXAMPLE.
Damit funktionert das Debugging einigermassen, so wie erwartet. Also
hängt es mit der Codeerzeugung zusammen oder mit den Projektsettings.
Ich geh' der Sache weiter nach,
Gruß Thomas
In welches Icon wechselt der Breakpoint, wenn er nicht erreichbar ist?
Mach mal nen Screenshot.
(Rot ausgefüllt wird er ja dann wohl nicht mehr sein)
edit:
Habe grad kein SAM Board zur Hand, ich teste es morgen früh mal selbst.
Thomas M. schrieb:> Die Breakpoints verschwinden schlichtweg komplett !
OK, das ist merkwürdig.
Ich dachte die wechseln von diesem roten Punkt zu einem roten Kreis
(nicht erreichbarer Breakpoint).
Sowas habe ich noch nie gesehen.
Ich war auch ziemlich überrascht, die Darstellung mit rotem Kreis kenne
ich vom ATXMEGA, wenn der Code nicht ausgeführt wird... (nicht
ausgeführt werden kann )
Hey,
also dein Bsp. konnte ich auf die schnelle nicht compilieren.
Mir ist aber folgendes aufgefallen:
Ich habe mal ein FreeRTOS Bsp. für mein SAM4E compiliert und einen
Breakpoint gesetzt (in einem #ifdef für einen anderen µC).
Bild: debug_vor_start.png
Nach dem Start verschwand mein Breakpoint, weil er dort natürlich nicht
möglich ist, aber mein AtmelStudio verschiebt ihn einfach an die nächste
mögliche Stelle.
Bild: debug_nach_start.png
Alles sehr seltsam bei dir.
Wird die Funktion denn überhaupt ausgeführt? Also blinkt deine LED?
Erstmal danke, dass du Zeit und Mühe für mein Problem investierst !
Ich habe nochmals ein komplett neues Projekt angelegt, um der Sache
weiter auf den Grund zu gehen:
Neues ASF-Projekt mit xplained pro Board, zuerst ohne FREERTOS mit
Primitivbeispiel unten:
Interessant:
Projekt wird angelegt mit "-O1" damit kann man nur den gezeignet BP
setzen, der wird auch erreicht
Mit der DebugExperience Option kann man überall BP setzen, die werden
aber bis auf 2 beim Debug Start gelöscht ( wirklich weg ! ), sind dann
aber wieder da nach Stop Debugging.
Ohne Optimizer klappt bei dem Beispiel alles wie es soll.
Die LED blinkt bei jedem Optimizer immer !
Nächster Schritt: ich binde das FreeRTOS ein und schau mir das an.
Gruß Thomas
1
#include<asf.h>
2
#include<delay.h>
3
intmain(void)
4
{
5
system_init();
6
delay_init();
7
staticuint8_tBlink=0;
8
/* Insert application code here, after the board has been initialized. */
9
10
/* This skeleton code simply sets the LED to the state of the button. */
Noch ein Update:
Ich habe ein neues Projekt komplett neu von Scratch erzeugt:
Template C++, Board xplained pro , ASF Add-Ons erstmal nur FREERTOS.
Damit klappt es jetzt, allerdings muss man alle Optimizer ausschalten.
Und zwei Packages löschen: SAMXY und cmsis.
Die "hal-Driver" habe ich dabei nicht genutzt.
Es gibt noch ein ungelöstes Problem: wenn man versucht, das "IO-Panel"
zu nutzen, klappt das nicht: wenn der Debuger startet, wird dieses
ausgeblendet ?!?
Das muss ja auch noch herauszufinden sein !
Gruß Thomas