nanoCUL lässt sich nicht compilieren

Begonnen von Tampzarian, 09 Juni 2017, 11:42:30

Vorheriges Thema - Nächstes Thema

Tampzarian

Moin,
ich habe ein Problem mit dem flashen vom selbstbauCUL. Zum Bau habe ich diese Anleitung benutzt: https://www.operation-eigenheim.de/smarthome-eigenbau-cul-zum-senden-und-empfangen/

Ging auch alles ganz einfach, alles nicht schwierig zu löten. Allerdings ist die HArdware nicht das Problem, denn ich bekomme den Code nicht compiliert bevor der Arduino überhaupt geflasht wird.

Wenn ich im Ordner nanoCUL den Befehl make ausführe bekomme ich folgende Fehlermeldung:
pi@skynetpi:~/culfw-1.66/Devices/nanoCUL $ make
Compiling C: nanoCUL.c
In file included from nanoCUL.c:16:0:
board.h:18:1: warning: "/*" within comment [-Wcomment]
/* die aufgelötete gelbe LED ist an PB5/SCLK angeschlossen! */
^
In file included from ../../clib/led.h:11:0,
                 from ../../clib/cc1100.h:11,
                 from nanoCUL.c:19:
./board.h:18:1: warning: "/*" within comment [-Wcomment]
/* die aufgelötete gelbe LED ist an PB5/SCLK angeschlossen! */
^
Compiling C: ../../clib/cc1100.c
In file included from ../../clib/led.h:11:0,
                 from ../../clib/cc1100.h:11,
                 from ../../clib/cc1100.c:9:
./board.h:18:1: warning: "/*" within comment [-Wcomment]
/* die aufgelötete gelbe LED ist an PB5/SCLK angeschlossen! */
^
In file included from ../../clib/cc1100.h:11:0,
                 from ../../clib/cc1100.c:9:
../../clib/cc1100.c: In function 'ccInitChip':
./board.h:21:24: error: 'SPI_DDR' undeclared (first use in this function)
#define CC1100_CS_DDR  SPI_DDR
                        ^
../../clib/led.h:7:33: note: in definition of macro 'SET_BIT'
#define SET_BIT(PORT, BITNUM) ((PORT) |= (1<<(BITNUM)))
                                 ^
../../clib/cc1100.c:167:12: note: in expansion of macro 'CC1100_CS_DDR'
   SET_BIT( CC1100_CS_DDR, CC1100_CS_PIN ); // CS as output
            ^
./board.h:21:24: note: each undeclared identifier is reported only once for each function it appears in
#define CC1100_CS_DDR  SPI_DDR
                        ^
../../clib/led.h:7:33: note: in definition of macro 'SET_BIT'
#define SET_BIT(PORT, BITNUM) ((PORT) |= (1<<(BITNUM)))
                                 ^
../../clib/cc1100.c:167:12: note: in expansion of macro 'CC1100_CS_DDR'
   SET_BIT( CC1100_CS_DDR, CC1100_CS_PIN ); // CS as output
            ^
./board.h:23:24: error: 'SPI_SS' undeclared (first use in this function)
#define CC1100_CS_PIN  SPI_SS
                        ^
../../clib/led.h:7:47: note: in definition of macro 'SET_BIT'
#define SET_BIT(PORT, BITNUM) ((PORT) |= (1<<(BITNUM)))
                                               ^
../../clib/cc1100.c:167:27: note: in expansion of macro 'CC1100_CS_PIN'
   SET_BIT( CC1100_CS_DDR, CC1100_CS_PIN ); // CS as output
                           ^
./board.h:22:33: error: 'SPI_PORT' undeclared (first use in this function)
#define CC1100_CS_PORT          SPI_PORT
                                 ^
../../clib/led.h:7:33: note: in definition of macro 'SET_BIT'
#define SET_BIT(PORT, BITNUM) ((PORT) |= (1<<(BITNUM)))
                                 ^
../../clib/cc1100.h:180:35: note: in expansion of macro 'CC1100_CS_PORT'
#define CC1100_DEASSERT  SET_BIT( CC1100_CS_PORT, CC1100_CS_PIN )
                                   ^
../../clib/cc1100.c:169:3: note: in expansion of macro 'CC1100_DEASSERT'
   CC1100_DEASSERT;                           // Toggle chip select signal
   ^
../../clib/cc1100.c: In function 'cc1100_readReg':
./board.h:22:33: error: 'SPI_PORT' undeclared (first use in this function)
#define CC1100_CS_PORT          SPI_PORT
                                 ^
../../clib/led.h:8:35: note: in definition of macro 'CLEAR_BIT'
#define CLEAR_BIT(PORT, BITNUM) ((PORT) &= ~(1<<(BITNUM)))
                                   ^
../../clib/cc1100.h:181:37: note: in expansion of macro 'CC1100_CS_PORT'
#define CC1100_ASSERT    CLEAR_BIT( CC1100_CS_PORT, CC1100_CS_PIN )
                                     ^
../../clib/cc1100.c:335:3: note: in expansion of macro 'CC1100_ASSERT'
   CC1100_ASSERT;
   ^
./board.h:23:24: error: 'SPI_SS' undeclared (first use in this function)
#define CC1100_CS_PIN  SPI_SS
                        ^
../../clib/led.h:8:50: note: in definition of macro 'CLEAR_BIT'
#define CLEAR_BIT(PORT, BITNUM) ((PORT) &= ~(1<<(BITNUM)))
                                                  ^
../../clib/cc1100.h:181:53: note: in expansion of macro 'CC1100_CS_PIN'
#define CC1100_ASSERT    CLEAR_BIT( CC1100_CS_PORT, CC1100_CS_PIN )
                                                     ^
../../clib/cc1100.c:335:3: note: in expansion of macro 'CC1100_ASSERT'
   CC1100_ASSERT;
   ^
../../clib/cc1100.c: In function 'cc1100_writeReg':
./board.h:22:33: error: 'SPI_PORT' undeclared (first use in this function)
#define CC1100_CS_PORT          SPI_PORT
                                 ^
../../clib/led.h:8:35: note: in definition of macro 'CLEAR_BIT'
#define CLEAR_BIT(PORT, BITNUM) ((PORT) &= ~(1<<(BITNUM)))
                                   ^
../../clib/cc1100.h:181:37: note: in expansion of macro 'CC1100_CS_PORT'
#define CC1100_ASSERT    CLEAR_BIT( CC1100_CS_PORT, CC1100_CS_PIN )
                                     ^
../../clib/cc1100.c:345:3: note: in expansion of macro 'CC1100_ASSERT'
   CC1100_ASSERT;
   ^
./board.h:23:24: error: 'SPI_SS' undeclared (first use in this function)
#define CC1100_CS_PIN  SPI_SS
                        ^
../../clib/led.h:8:50: note: in definition of macro 'CLEAR_BIT'
#define CLEAR_BIT(PORT, BITNUM) ((PORT) &= ~(1<<(BITNUM)))
                                                  ^
../../clib/cc1100.h:181:53: note: in expansion of macro 'CC1100_CS_PIN'
#define CC1100_ASSERT    CLEAR_BIT( CC1100_CS_PORT, CC1100_CS_PIN )
                                                     ^
../../clib/cc1100.c:345:3: note: in expansion of macro 'CC1100_ASSERT'
   CC1100_ASSERT;
   ^
../../clib/cc1100.c: In function 'ccStrobe':
./board.h:22:33: error: 'SPI_PORT' undeclared (first use in this function)
#define CC1100_CS_PORT          SPI_PORT
                                 ^
../../clib/led.h:8:35: note: in definition of macro 'CLEAR_BIT'
#define CLEAR_BIT(PORT, BITNUM) ((PORT) &= ~(1<<(BITNUM)))
                                   ^
../../clib/cc1100.h:181:37: note: in expansion of macro 'CC1100_CS_PORT'
#define CC1100_ASSERT    CLEAR_BIT( CC1100_CS_PORT, CC1100_CS_PIN )
                                     ^
../../clib/cc1100.c:356:3: note: in expansion of macro 'CC1100_ASSERT'
   CC1100_ASSERT;
   ^
./board.h:23:24: error: 'SPI_SS' undeclared (first use in this function)
#define CC1100_CS_PIN  SPI_SS
                        ^
../../clib/led.h:8:50: note: in definition of macro 'CLEAR_BIT'
#define CLEAR_BIT(PORT, BITNUM) ((PORT) &= ~(1<<(BITNUM)))
                                                  ^
../../clib/cc1100.h:181:53: note: in expansion of macro 'CC1100_CS_PIN'
#define CC1100_ASSERT    CLEAR_BIT( CC1100_CS_PORT, CC1100_CS_PIN )
                                                     ^
../../clib/cc1100.c:356:3: note: in expansion of macro 'CC1100_ASSERT'
   CC1100_ASSERT;
   ^
makefile:326: recipe for target '../../clib/cc1100.o' failed
make: *** [../../clib/cc1100.o] Error 1


Da ich nicht so der Spezi im Microcontroller programmieren bin, weiß ich auch nicht was mir diese Fehlermeldung sagen soll. Ich hab schon teile der Fehlermeldung gegoogled und auch in einschlägigen Foren keine Lösung gefunden (manchmal sind es ja ganz generische Fehler die einfach zu beheben sind)

Mein System:
Raspberry Pi 2 B
Raspbian Jessie with Pixel (Release date:2017-04-10; installiert 2017-06-08)
FHEM 5.8
System update gestern am Tag der Installation

Die Fehlerbehebung die ich schon versucht habe: make als sudo ausführen, Benutzer und Gruppen überprüfen und alle auf Benutzer pi zwingen, allen Dateien chmod 0777 zuweisen, das Paket von sourceforge benutzen anstatt von der culfw Homepage, mit WinAVR auf Windows10 flashen (aber da liegen wohl noch ganz andere Probleme im Argen)
Dann habe ich einfach mal make für ein anderes Device ausgeführt und für CUL läuft es vollständig und ohne Fehlermeldung (für andere Devices funktioniert es mal hier und mal da). Wenn ich dann wieder bei nanoCUL ausführe bekomme ich ne ganz andere Fehlermeldung  :o :
pi@skynetpi:~/culfw-1.66/Devices/nanoCUL $ make
Compiling C: ../../clib/serial.c
In file included from ../../clib/ringbuffer.h:5:0,
                 from ../../clib/serial.c:4:
./board.h:18:1: warning: "/*" within comment [-Wcomment]
/* die aufgelötete gelbe LED ist an PB5/SCLK angeschlossen! */
^
Linking: nanoCUL.elf
nanoCUL.o: In function `main':
/home/pi/culfw-1.66/Devices/nanoCUL/nanoCUL.c:196: undefined reference to `rf_rwe_task'
/home/pi/culfw-1.66/Devices/nanoCUL/nanoCUL.c:199: undefined reference to `kopp_fc_task'
nanoCUL.o:(.progmem.data+0x13): undefined reference to `rwe_func'
nanoCUL.o:(.progmem.data+0x16): undefined reference to `kopp_fc_func'
../../clib/clock.o: In function `Minute_Task':
clock.c:(.text.Minute_Task+0x6a): undefined reference to `rf_router_sendtime'
clock.c:(.text.Minute_Task+0x74): undefined reference to `rf_router_sendtime'
clock.c:(.text.Minute_Task+0x7a): undefined reference to `rf_router_flush'
../../clib/display.o: In function `display_char':
display.c:(.text.display_char+0x6): undefined reference to `USB_DeviceState'
display.c:(.text.display_char+0x1a): undefined reference to `CDC_Task'
display.c:(.text.display_char+0x2a): undefined reference to `CDC_Task'
display.c:(.text.display_char+0x30): undefined reference to `rf_router_target'
display.c:(.text.display_char+0x4c): undefined reference to `RFR_Buffer'
display.c:(.text.display_char+0x4e): undefined reference to `RFR_Buffer'
display.c:(.text.display_char+0x56): undefined reference to `RFR_Buffer'
display.c:(.text.display_char+0x58): undefined reference to `RFR_Buffer'
display.c:(.text.display_char+0x60): undefined reference to `rf_router_sendtime'
display.c:(.text.display_char+0x66): undefined reference to `rf_nr_send_checks'
../../clib/fncollection.o: In function `prepare_boot':
fncollection.c:(.text.prepare_boot+0x32): undefined reference to `USB_ShutDown'
../../clib/rf_receive.o: In function `RfAnalyze_Task':
rf_receive.c:(.text.RfAnalyze_Task+0x394): undefined reference to `rf_router_target'
../../clib/rf_receive.o: In function `__vector_3':
rf_receive.c:(.text.__vector_3+0x3e): undefined reference to `rf_router_status'
rf_receive.c:(.text.__vector_3+0x48): undefined reference to `rf_router_status'
rf_receive.c:(.text.__vector_3+0x1cc): undefined reference to `rf_router_myid'
rf_receive.c:(.text.__vector_3+0x1ea): undefined reference to `rf_router_status'
collect2: error: ld returned 1 exit status
makefile:321: recipe for target 'nanoCUL.elf' failed
make: *** [nanoCUL.elf] Error 1


Meine Vermutung ist dass irgendwo irgendwelche Bezüge nicht funktionieren. Who knows why....

Habt ihr Ideen zur Lösung?

Gruß
Stephen

PS: Mein erster Post....eine Erfolgsgeschichte wäre mich auch lieber gewesen  ;D

Beta-User

Moin,

den ersten Thread mit einem Verweis auf irgendeinen Blog zu beginnen, ist nicht unbedingt clever...

Anerkannte Info-Quellen hier: commandref, Wiki, Forum (Reihenfolge meiner Wahl).

Da das aber vermutlich nicht die Fehlerursache ist:

Es scheint ein Kommentarabschluß zu fehlen (im Folgenden die "" nur wg. besserer Lesbarkeit). Du hast irgendwo (vermutlich die 433MHz) auszukommentieren begonnen ("/*"), dann aber am Ende des Kommentars kein "*/" eingefügt.
Einzelne Zeilen(enden) kann man auch mit "//" auskommentieren, das heißt: Kommentar ab hier bis Zeilenende.

Aber an sich ist das keine Frage, die hier in's Forum gehört...

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Tampzarian

Moin Beta-User

danke für die Antwort. Das war wirklich das Problem mit dem Auskommentieren. Hab kein */ ans Ende gesetzt. Manchmal ist man doch wirklich doof und hat ein Brett vor dem Kopf  ::) ::) ::) . Ein zweites Paar Augen ist dann immer gut, wenn man den Wald vor lauter Bäumen nicht sieht.

Sorry, dass ich hier eine für dich nicht anerkannte Quelle angegeben habe, aber die hab ich nunmal benutzt. Ich gelobe Besserung. 

Gruß
Stephen

Beta-User

Moin Stephen,

kein Thema, ging/geht mir oft genug genauso, daher der zielgerichtete Blick in die Glaskugel ;) .

Btw: Es geht mir nicht um "für mich" nicht anerkannte Quellen, ich ziehe mir auch das eine oder andere anderswo her. Aber wenn man fragt, ist die Erwartung ALLER ernsthaften Helfer hier im Forum, dass man vorher einen Blick in die "richtigen", weil allgemein anerkannten Quellen geworfen hat...

Es ist auch besser, man benennt die potentielle Fehlerquelle korrekt, aber "irgendein Blog" ist eben für manche ein richtiges "rotes Tuch".

Setzt Du den Thread bitte noch auf gelöst? (Anleitung, sofern nötig)

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files