Forum: Mikrocontroller und Digitale Elektronik Hilfe -> AVR Studio 4


von Joe F. (joe1234)


Lesenswert?

Hallo Leute,

ich habe, wie die Überschrift schon sagt, Probleme mit dem AVR Studio 4.
Erstmal meine Soft-/Hardware:
- XPLAIN Board mit XMEGA128A1 und SDRAM
- JTAGICE mkII
- AVR Studio 4

Wenn ich nun einen C-Code im AVR Studio schreibe und dann debugge, gibt 
es im AVR Studio unter View -> Watch ein Fenster, in den ich meine 
globalen Variablen mit der Maus hineinziehen kann und somit die Adresse 
und den Wert sehen kann. Das ist natürlich sehr hilfreich!
Wenn ich nun eine Variable, die nicht global definiert ist, hineinziehe, 
steht als Angabe "not in Location". Ich kann also weder die Adresse noch 
den Wert der Variablen sehen. Das ist natürlich schlecht!
Meine Frage ist nun, ob es mit dem JTAGICE mkII doch möglich wäre, eine 
nicht globale Variable mit Adresse und Wert während dem Debuggen zu 
sehen? Oder gibt es vielleicht dafür schon was im AVR Studio und kenne 
es nicht!?!

Gruß Joe

von Joe F. (joe1234)


Lesenswert?

Ok, habe die Antwort gefunden. -Os abschalten!
Leider bekomme ich dann beim Compelieren einen Fehler, aber nicht im 
Code! Ich poste den mal. Kann mir da einer helfen?
1
Build started 7.1.2011 at 16:41:25
2
avr-gcc  -mmcu=atxmega128a1 -Wall -gdwarf-2 -std=gnu99   -DF_CPU=32000000UL -O0 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT main.o -MF dep/main.o.d  -c  ../main.c
3
In file included from ../avr_compiler.h:132,
4
                 from ../main.c:3:
5
c:/programme/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:90:3: warning: #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
6
../main.c: In function '__vector_20':
7
../main.c:400: warning: unused variable 'To_est'
8
avr-gcc -mmcu=atxmega128a1 -Wl,-Map=benzindirekteinspritzung.map main.o usart.o usart_driver.o clksys_driver.o ebi_driver.o dma_driver.o adc_driver.o     -o benzindirekteinspritzung.elf
9
c:/programme/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avrxmega7\libc.a(log.o): In function `log':
10
(.text.avr-libc.fplib+0x46): relocation truncated to fit: R_AVR_13_PCREL against symbol `__addsf3' defined in .text section in c:/programme/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avrxmega7\libgcc.a(_addsub_sf.o)
11
c:/programme/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avrxmega7\libc.a(log.o): In function `log':
12
(.text.avr-libc.fplib+0x4e): relocation truncated to fit: R_AVR_13_PCREL against symbol `__addsf3' defined in .text section in c:/programme/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avrxmega7\libgcc.a(_addsub_sf.o)
13
c:/programme/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avrxmega7\libc.a(inverse.o): In function `inverse':
14
(.text.avr-libc.fplib+0xc): relocation truncated to fit: R_AVR_13_PCREL against symbol `__divsf3' defined in .text section in c:/programme/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avrxmega7\libgcc.a(_div_sf.o)
15
c:/programme/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avrxmega7\libc.a(modf.o): In function `modff':
16
(.text.avr-libc.fplib+0x3e): relocation truncated to fit: R_AVR_13_PCREL against symbol `__subsf3' defined in .text section in c:/programme/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avrxmega7\libgcc.a(_addsub_sf.o)
17
make: *** [benzindirekteinspritzung.elf] Error 1
18
Build failed with 1 errors and 2 warnings...

Gruß Joe

von hp-freund (Gast)


Lesenswert?

Gib deiner Variable doch eine Location :-)
Setze sie (wenn möglich) vorübergehend zu static, dann ist sie zu sehen

von Oliver J. (skriptkiddy)


Lesenswert?

Versuch mal einen Rebuild.

von Joe F. (joe1234)


Lesenswert?

Skript Kiddy schrieb:
> Versuch mal einen Rebuild.

Was heisst "Rebuild"? Welche Taste/Einstellung ist das?

von Joe F. (joe1234)


Lesenswert?

Skript Kiddy schrieb:
> Versuch mal einen Rebuild.

Habe "Rebuild all" ausgeführt. Der Fehler kommt trotzdem.
Die Idee mit static ist nicht schlecht. :)
Danke!

Noch eine Frage: Ich habe einen Vektor welcher seine Größe ich 
Abhängigkeit von Benutzereingabe die Größe verändert. (Entweder 150 oder 
512).
Hier bei habe ich eine das so ausgeführt:
1
int8_t vektor[gr];
Dieser Vektor wird nicht angezeigt! static geht natürlich auch nicht. 
Statt gr kann ich natürlich eine feste Zahl nehmen, dann wird der Vektor 
angezeigt. Warum geht das nicht mit gr??

Gruß Joe

von Oliver J. (skriptkiddy)


Lesenswert?

Joe F. schrieb:
> Noch eine Frage: Ich habe einen Vektor welcher seine Größe ich
> Abhängigkeit von Benutzereingabe die Größe verändert. (Entweder 150 oder
> 512).
> Hier bei habe ich eine das so ausgeführt:int8_t vektor[gr];

Ist das dein Ernst?

von Joe F. (joe1234)


Lesenswert?

Mmh, sehe ich jetzt den Wald vor lauter Bäumen nicht...

gr wird mit USART abgefragt, dabei kann gr entweder den Wert 150 oder 
512 annehmen. Mithilfe von gr erzeuge ich dann einen Vektor mit Größe 
gr.
1
int16_t gr = 0;
2
gr = USART....;
3
int8_t vektor[gr];
4
for(int i=0; i<gr; i++){ vektor[i] = 0;}
Wenn ich nun den Vektor in mein Watchfenster schiebe, sehe ich diesen 
nicht.

Wenn ich dasselbe nur ohne gr mache, also
1
int8_t vektor[150];
2
for(int i=0; i<150; i++){ vektor[i] = 0;}
dann sehe ich den Vektor in meinem Watchfenster.

Meine Frage war nun einfach, warum wird das ohne gr angezeigt?
Nach der Abfrage von USART hat doch mein gr auch die Größe, wenn man nur 
Fall 1 betrachtet, 150. Somit muss doch der Vektor die feste Größe 150 
haben. Oder?

Gruß Joe

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.