"Invalid location" beim Debuggen, warum??

Gast #359695
Lesenswert?
• ▲
▼
Hallo,
mein Code setzt beim Debuggen ziemlich schnell aus und zwar:

C-File:

..
int main(void)
{
  struct com_buf test;
  struct com_buf buffer, *packet;
  packet = &write_txfifo;

  buffer.len = write_txfifo.len;     HIER!!!

das steht noch im eingebundenen Headerfile:
struct com_buf {
  uint8_t len;
  uint8_t buf[128];
};

static struct com_buf write_txfifo = {
                              /* LEN, FCF0, FCF1, DSNo,  */
         .buf = { 0x3E, 0x0F, 0x61, 0x88, 0x01, DEST_PANID1, \
                  DEST_PANID0, DEST_SHORTADR1, DEST_SHORTADR0, \
                  SHORTADR1, SHORTADR0, 0xde, 0xad, 0xbe, 0xef},
         .len = 15,
};

In der Watch im AVR-Studio steht die Meldung wie im Anhang

Ich versteh nicht, was der für Probleme hat?!
Angehängte Dateien:
Gast #359700
Lesenswert?
• ▲
▼
Im Makefile steht ATmega16. Also, ich compiliere im "DOS-Fenster" und
öffne dann mit dem AVR-Studio meine .elf-Datei oder die .asp-Datei und
debugge den Code.
Dann klicke ich noch an, dass ich ein JTAG ICE mkII habe und einen
ATmega16.

Die eingestellten Fusebits habe ich mal angehängt.

Ich habe vorher immer mit einem atmega128 gearbeitet, kann es sein,
dass das noch "irgendwo" drin ist??

DANKE schon mal für deinen Tipp Ronny!!
Angehängte Dateien:
Gast #359705
Lesenswert?
• ▲
▼
Bzw. kann es sein, dass mein ATmega nach dem er ein Objekt buffer diesen
Typs

struct com_buf {
  uint8_t len;
  uint8_t buf[128];
};

allokieren soll, dass er dann voll ist, wenn beim Compilieren folgender
Memory Usage angezeigt wird:

Device: atmega16

Program:    3466 bytes (21.2% Full)
(.text + .data + .bootloader)

Data:        791 bytes (77.2% Full)
(.data + .bss + .noinit)
Gast #359707
Lesenswert?
• ▲
▼
Aber scheinbar einen Bonus für mangelnde Manieren....

Gibt es einen konkreten Grund weshalb du nicht wieder  den ATmega128
nehmen kannst?Ansonsten müsstest du dir dann wohl überlegen,wie du mit
weniger RAM auskommst.Kannst du auf irgendwelche Variablen
verzichten?Oder etwas zusammen fassen?Hast du ein Int[] was auch mit
char[] funktionieren würde?

Übrigens ist es keine allzugute Idee mit new/delete bzw malloc()
Speicher dynamisch zu reservieren,da bei dem kleinen uC der RAM recht
schnell fragmentiert.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.