Debian 4.7.2 AVR-GCC sscanf Problem

Persönliche Seite #4060867
Lesenswert?

Hallo,

ich verwende auf meinem Debian-System (64bit) den avr-gcc um meine 
Software für meine Mikrocontroller zu kompilieren.

In meiner Software ist ein TTY per USB implementiert in dem ich 
Benutzereingaben an die MCU senden kann.

Die empfangenen Daten werden per sscanf verarbeitet.

Mit dem aktuellen Atmel Studio und der dazugehörigen AVR GCC Toolchain 
funktioniert dies.

Mit dem standard Paket in Debian gibt es folgendes Problem.

Beispiel 1 (Pseudocode):

char* in_str = "0x02";
unsigned int in = 0;
sscanf(in_str, "0x%02x", &in);

Liefert den korrekt geparsten Wert in der Variablen: in=2.

Beispiel 2 (Pseudocode):

char* in_str = "0x02 0x14";
unsigned int in1 = 0;
unsigned int in2 = 0;
sscanf(in_str, "0x%02x 0x%02x", &in1, &in2);

Liefert keinen Wert wenn die Software auf dem Debian-System kompiliert 
wurde: in1=0 in2=0.

Es ist auf meinem Linux-System die folgende Software installiert:
AVR-GCC: 4.7.2
Lib AVR: 1.8.0
AVR binutils: 2.20.1

Hat hier jemand eine Idee wo das Problem beim Debian 4.7.2 AVR-GCC sein 
könnte?

Meine Linker-Optionen:
-Wl,-u,vfscanf -lscanf_flt -Wl,-u,vfscanf -lscanf_min (abgetippt, kann 
Tippfehler enthalten)

Danke!
#4061061
Lesenswert?

Ist das Problem nun gelöst?

Wenn nicht würde ich es erst einmal mit

1
sscanf(in_str, "0x%2x 0x%2x", &in1, &in2);

probieren, denn die Null macht an der Stelle meiner Meinung nach keinen 
Sinn. Wenn das nicht hilft:

1
char* in_str = "02 0x14";
2
sscanf(in_str, "%2x 0x%02x", &in1, &in2);

Auch ein Blick auf Rückgabewert und Fehlercode könnte nicht schaden.
Moderator Persönliche Seite #4061368
Lesenswert?

Kai Lauterbach schrieb:
> -Wl,-u,vfscanf -lscanf_flt -Wl,-u,vfscanf -lscanf_min

Das ist übrigens nicht sinnvoll.  Entweder willst du die voll
aufgeblähte Gleitkomma-Version aus libscanf_flt.a haben oder die
minimale aus libscanf_min.a, aber nicht beide (bekommst du ohnehin
nicht, die Gleitkommaversion würde in dieser Konstellation „gewinnen“).

Vermutlich brauchst du beide Varianten aber gar nicht, sondern die
Standarversion würde dir völlig genügen.
#4062935
Lesenswert?

Jörg Wunsch schrieb:
> Glaub' ich nicht, denn die Datentypen, in die er wandeln lassen wollte
> (so das Abgebildete der Realitiät entspricht), waren allesamt unsinged
> int.  Die chars hat er oben nur für die Strings benutzt.

In der ursprünglichen Version des Startbeitrags waren das "unsigned 
char" Variablen. Erst auf meinen Hinweis hin hat er den Beitrag 
geändert.

PS: Nützlich zu wissen, dass euch Mods die Versionshistorie eines 
Beitrags zumindest nicht offen ins Auge sticht. ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren