mikrocontroller.net

Forum: Compiler & IDEs strtok_r funktioniert nicht


Autor: Reto (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche einen string zu parsen, leider jedoch ohne Erfolg. Der
Code ist angehängt.
Der erste Teil ($GPGLL) wird korrekt abgeschnitten und der Pointer
dummie zeigt auch darauf. Doch die weiteren Pointer zeigen irgendwohin,
nur nicht auf den string.

Laut Doku sollte diese Funktion aber schon so irgendwie funktionieren:

"strtok_r parses the string s into tokens. The first call to strtok_r
should have string as its first argument. Subsequent calls should have
the first argument set to NULL. If a token ends with a delimiter, this
delimiting character is overwritten with a '\0' and a pointer to the
next character is saved for the next call to strtok_r. The delimiter
string delim may be different for each call. last is a user allocated
char* pointer. It must be the same while parsing the same string.
strtok_r is a reentrant version of strtok(). The strtok_r() function
returns a pointer to the next token or NULL when no more tokens are
found."

Kann mir irgendwer sagen warum das nicht geht?!?


Vielen Dank

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Null problemo hier:

(gdb) targ rem :1212
Remote debugging using :1212
0x00000000 in __vectors ()
(gdb) load
Loading section .data, size 0x32 lma 0x1c6
Loading section .text, size 0x1c6 lma 0x0
Start address 0x0, load size 504
Transfer rate: 4032 bits in <1 sec, 31 bytes/write.
(gdb) b main
Breakpoint 1 at 0xd2: file foo.c, line 17.
(gdb) c
Continuing.

Breakpoint 1, main () at foo.c:17
(gdb) n
(gdb) p dummie
$1 = 0x800100 "$GPGLL"
(gdb) p data
$2 = 0x800100 "$GPGLL"
(gdb) p savept
$3 = 0x800107 "4700.2475,N,800.3416,W,161229.487,A*2C"
(gdb) n
(gdb) p st_latitude
$4 = 0x800107 "4700.2475"
(gdb) n
(gdb) p N_S
$5 = 0x800111 "N"
(gdb) n
(gdb) p st_longitude
$6 = 0x800113 "800.3416"
(gdb) n
(gdb) p O_W
$7 = 0x80011c "W"

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, da Du's auch nicht dazu geschrieben hast: AVR-GCC 3.4.1,
avr-libc 1.0.4, simulavr, AVR-GDB.  Compiliert für einen ATmega128.

Autor: Reto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörg,

vielen Dank für Deine Antwort. Sorry, dass ich nicht angegeben habe mit
welchem System ich arbeite. Bei Dir scheints ja wirklich zu
funktionieren.
Ich verwende einen ATMEGA32. Compilieren tut es auch ohne Probleme,
aber ich erhalte leider nicht die erwarteten Strings zurück.

Bisher habe ich nicht herausgefunden, wie ich mit einem ATMEGA32
debuggen kann. Sehe ich das richtig, dass Du einen Simulator einsetzt?
Gibt es sowas auch für Windows?


Vielen Dank und Gruss     Reto

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Sehe ich das richtig, dass Du einen Simulator einsetzt?

Ja.

> Gibt es sowas auch für Windows?

Ich habe hier einfach simulavr verwendet.  Ja, gibt's auch für
Windows, ist bei WinAVR mit dabei.  Ansonsten hast Du ja unter Windows
auch AVR Studio als Simulator sowie (gegen Entgeld) VMLAB.

Autor: Reto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... bei WinAVR ist das dabei?!? Ich hab damit bis jetzt nur compiliert
und geladen. Kann mir jemand eine kurze Anleitung geben wie ich damit
debuggen kann? Ich find das irgendwie nicht raus... Der muss die object
files haben, oder?

Und wie geht das mit dem AVR Studio? Ich hab das eben am Anfang gleich
zur Seite gelegt, da man dort nur Assembler Code verarbeiten kann. Das
muss ja irgendwie auch die object files kriegen. Doch wenn ich die
öffne erscheinen nur kryptische Zeichen...


Vielen Dank

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
$ simulavr -g -d atmega128
  $ avr-insight foo.elf

Im insight dann im Menü "Run->Connect to target"

Target: Remote/TCP
Hostname: localhost
Port: 1212

"OK"
"Run->Download"

Sieht ganz nett aus...

Oder halt

  $ make all extcoff

Und die foo.cof im AVRStudio öffnen.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nehme zwar AVR Studio nicht (hab' kein Windows), aber besser als
der alte COFF-Krempel sollte wohl das neue Beta-Test-Programm für
deren ELF-Unterstützung allemal sein.

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hab ich leider noch nicht getestet, deshalb "nur" der Hinweis
meinerseits auf extcoff ;)

Vielleicht schreibt ja mal jemand, der das ausprobiert hat, etwas
dazu...?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.