Forum: Compiler & IDEs Compilerabbruch bei OpenMCP


von Kuddel (Gast)


Lesenswert?

Hallo,
ich beschäftige mich seit kurzem mit dem AVR NetIO. Habe heute das Board 
mit OpenMCP geflasht. Lief einwandfrei :-) Dann die IP geändert und neu 
compiliert. Seitdem bekomme ich immer den Compilerfehler:

Compiling C: hardware/pcint/pcint.c
avr-gcc -c -mmcu=atmega644 -I. -gdwarf-2 -DF_CPU=16000000UL -Os 
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wshadow -Wstrict-prototypes -Wa,-adhlns=./hardware/pcint/pcint.lst 
-std=gnu99 -D__heap_end=0x80ffff -DAVRNETIO -DNONE_ADDON 
-mcall-prologues -fdata-sections -ffunction-sections -fmerge-constants 
-mno-tablejump -ffreestanding -fno-move-loop-invariants --param 
inline-call-cost=5 -finline-limit=2 -MMD -MP -MF .dep/pcint.o.d 
hardware/pcint/pcint.c -o hardware/pcint/pcint.o
In file included from hardware/pcint/pcint.c:49:
hardware/pcint/pcint.h:45:3: error: #error "PCINT wird für diese 
Hardwareplatform nicht unterstützt, bitte in der config.h abwählen!"
hardware/pcint/pcint.c:51: error: array type has incomplete element type
hardware/pcint/pcint.c:78: error: expected declaration specifiers or 
'...' before 'PCINT_CALLBACK_FUNC'
hardware/pcint/pcint.c: In function 'PCINT_set':
hardware/pcint/pcint.c:86: error: 'pFunc' undeclared (first use in this 
function)
hardware/pcint/pcint.c:86: error: (Each undeclared identifier is 
reported only once
hardware/pcint/pcint.c:86: error: for each function it appears in.)
make.exe: *** [hardware/pcint/pcint.o] Error 1

Warum kommt jetzt der Fehler: PCint nich für diese HW-Plattform?

Habe bereits WinAVR neu installiert, ohne Erfolg. Warum wurde das Prog 
einmal erfolgreich compiliert und danach gehts nicht mehr?

HW:
AVR Net IO ohne Addon, AVRISPmkii, ATmega 644
SW:
OpenMCP (nur MAKE-File angepasst, sonst unverändert.

Kann bitte jemand helfen. Bin sehr neu im Geschäft.

von Dirk B. (sharandac)


Lesenswert?

@Kuddel ...

hast du mal ein "make clean" versucht und dann "make" ? Ich hatte 
letztens auch einen bug gefunden in der pcint.c/.h . Schau mal bitte ob 
in der AVRNETIO.config.h PCINT ausgeschaltet ist. Für den ATmega644 habe 
ich das noch nicht eingebaut/getestet.

CA Dirk


Edit: Änderungen werden immer nur von der jeweiligen XXX.config.h 
übernommen, damit wird die config.h erzeugt/überschrieben.

von Kuddel (Gast)


Lesenswert?

Make clean habe ich gemacht. PCint ist eingeschaltet, soll aber aber 
auch laut Wiki funzen.
Und: es lief schon einmal. Und laut Startprotokoll über Seriell war 
PCint auch korrekt gestartet.

von Kuddel (Gast)


Lesenswert?

... mir fällt gerade ein:
der Vrenschutz Avira hat 2x angeschlagen. Kann mich nicht mehr genau 
erinnern, aber er hat sowas wie " die Änderung der Auto.config" 
verhindert. Dateiname kann auch ähnlich sein.
Kann das was mit meinem Problem zu tun haben?

von Dirk B. (sharandac)


Lesenswert?

Dann hast du wohl das unwahrscheinlich Glück gehabt das es geklappt hat 
beim ersten mal (Hast du vielleicht die gelieferte main.hex aus dem 
zip-File geflasht für den 644P und die Fehlermeldung beim ersten mal 
übersehen?).
 Aber da ich jede Zeile meines Codes persönlich kenne weiß ich einfach 
das PCINT nicht auf dem ATmega644 geht. Auch wenn das Wiki auf das 
kleine Detail nicht extra hinweist sagt das doch die Fehlermeldung und 
was zu tun ist, oder?
 Denn ein blick in die Datei hardware/pcint/pcint.h die den Fehler 
erzeugt hat, sagt mir aber das es nur für den 644P/1284P implementiert 
ist.

CA Dirk

von Kuddel (Gast)


Lesenswert?

Habe PCint deaktiviert. LCD musste auch deaktiviert werden. Dann ist der 
Compiler bei Impuls.c stehengeblieben. Hier sollte ich PCint wieder 
aktivieren (????)
Habe dann Impulscounter, Templogger und MMC deaktiviert. Der Compiler 
lief durch. Die Initialisierung auf dem Board lief bis zum ENC28j60. Der 
Cursor blinkt bei HyperTerminal nach "Fullduplex:_"... und nichts geht.

Schönen Dank übrigens, das du dich mit meinen Anfängerproblemen 
beschäftigst.:-)

von Dirk B. (sharandac)


Lesenswert?

Ja, Der Impulslogger setzt PCint vorraus, wenn PCint nicht aktiv ist 
geht das logischerweise nicht und muss auch abgeschaltet werden.
"Fullduplex:" Ja, hier wartet er auf eine Verbindung bis er weiter 
macht, sprich jetzt sollte ein Netzwerkkabel stecken. Wenn die 
Verbindung erkannt wurde geht es weiter.

CA Dirk

von Kuddel (Gast)


Lesenswert?

Cooool. Es funzt. Hurra!!!
Ich dacht, diese Einstellungen werden über die Parameter im MAKE file 
automatisch gesetzt.
Besten Dank nochmal.

Kuddel

von Dirk B. (sharandac)


Lesenswert?

Gerne gemacht.

Das Makefile ist nur für die Hardwareplattform und CPU gedacht, was dann 
mit rein soll steht in der XXX.config.h.

CA Dirk

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.