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
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
Gib deiner Variable doch eine Location :-) Setze sie (wenn möglich) vorübergehend zu static, dann ist sie zu sehen
Skript Kiddy schrieb: > Versuch mal einen Rebuild. Was heisst "Rebuild"? Welche Taste/Einstellung ist das?
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.