Forum: Mikrocontroller und Digitale Elektronik atmega & splint


von tkl (Gast)


Lesenswert?

Hallo,

ich habe nach langer Zeit 'mal wieder mein atmega162 bord hervorgehohlt, 
um etwas damit herumzuspielen. Als ich versucht habe splint über meinen 
code laufen zu lassen, wurden alle Registermakros als not defined 
angenörgelt. Das macht auch halbwegs sinn, da die Registerdefinitionen 
ja über "MCU=atmega162" im Makefile und dann über das avr/io.h include 
und vor allem über die implizite definition von 
"__AVR_ATmega162__"gemacht werden und splint diese Abhängigkeit somit 
nicht erkennt.
Hat jemand eine gute Idee, wie ich splint die Registerdefinitionen 
mitteilen kann?

gr. tkl

von Klaus W. (mfgkw)


Lesenswert?

man splint sagt u.a.:
1
...
2
       Pre-processor
3
4
       These  flags  are  used  to  define  or  undefine  pre-processor constants.  The
5
       -I<directory> flag is also passed to the C pre-processor.
6
7
       -D initializer
8
             Passed to the C pre-processor.
9
...

von tkl (Gast)


Lesenswert?

OK, du meinst, das ich splint einfach -D__AVR_ATmega162__ übergebe? das 
wird sicherlich funktionieren, dann definiere ich im Makefile jedoch den 
Prozessor 2 mal (einmal mit MCU=atmega162 und ein zweited mal mit 
...-D__AVR_ATmega162__). lässt sich diese Doppelung nicht umgehen?

gr. tkl

von Klaus W. (mfgkw)


Lesenswert?

tkl schrieb:
> lässt sich diese Doppelung nicht umgehen?

Ich wüsste nicht, wie.

Die Umsetzung von -mmcu=atmega162 zu einem impliziten 
-D__AVR_ATmega162__ passiert ja irgendwie im gcc.

Davon kann splint ja nichts wissen.

Je nachdem, wie man splint aufruft, kann man da vielleicht etwas 
basteln, z.B. im Makefile.

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.