Willkommen! Anmelden Ein neues Profil erzeugen

Erweiterte Suche

RADDS+DUE, wie Marlin4Due oder Repetier-v92 ohne Arduino-IDE bauen?

geschrieben von Jasmir 
RADDS+DUE, wie Marlin4Due oder Repetier-v92 ohne Arduino-IDE bauen?
25. August 2015 12:39
Hallo zusammen,

ich bin mit meinem CoreXY Projekt jetzt soweit, mich der Firmware zu widmen und renne da voll gegen die Wand.

Situation: Der Drucker steht im Keller, da hängt ein Raspberry Pi als Hostcomputer dran (Octoprint). Natürlich soll hier auch die für den Drucker nötige Firmware gebaut & auf dem Drucker hochgeladen werden.
Also gedachter & mit RAMPS und Arduino Mega2560 ausgiebig geübter Workflow: Per SSH auf den Raspi einloggen, Firmware (Marlin) mit wget runterladen & auspacken, Config-Dateien und Makefile anpassen. Ein make compiliert dann die Firmware und zaubert die auf den Arduino.

Der DUE ist nun in den Arduino-Libs des 1.0.x Packets anscheinend noch nicht enthalten, also habe ich die libs (arduino-core_1.6.5_all.deb) nach dieser Anleitung gebaut und installiert.


Marlin4Due habe ich mal mit den Dateien aus example_configurations/coreXY_RADDS versorgt, das Makefile angepasst:
HARDWARE_MOTHERBOARD ?= 402
ARDUINO_VERSION      ?= 165
AVRDUDE_PROGRAMMER ?= stk500
UPLOAD_PORT        ?= /dev/ttyACM0
Den Rest habe ich im Makefile so gelassen wie es war.

Bei Test mit "make" gibt es sofort einen Abbruch mit
make: *** No rule to make target 'applet/wiring.o', needed by 'applet/Marlin.elf'.  Stop.
In diversen Beiträgen zu diesem Fehler wird als Lösung die Nutzung der Arduino-Version 1.0.x angegeben, was wegen dem DUE kein gangbarer Weg ist. Wie kriege ich den Kram denn jetzt compiliert?


Repetier v0.92 habe ich mir auch angeschaut, und über die Webseite mal vorconfiguriert & runtergeladen. In dem Archiv ist aber noch nichtmal ein Makefile mit bei, also habe ich hier überhaupt keinen Ansatzpunkt wie ich damit umgehen soll. Der -vom Entwickler anscheinden vorgesehene- Weg über die GUI der Arduino-IDE ist in meiner Situation kein gangbarer. Gibt es hier irgendwelche Alternativen auf der Shell?
Re: RADDS+DUE, wie Marlin4Due oder Repetier-v92 ohne Arduino-IDE bauen?
25. August 2015 12:58
Das makefile ist glaube ich noch vom AVR. Da ich in dem Bereich noch wenig Ahnung habe, müsstest du dich wohl selbst durchsuchen. Die IDE brauchst du direkt nicht, allerdings jedoch die ganzen Libs die dabei sind. CMSIS, libsam, variant und co.

Edit: vielleicht hilft das hier? [www.atwillys.de]

Edit2: der ganze Due-Krams liegt bei meinem Linux unter ~/.arduino15/

Edit3: hast du das Makefile-linux genutzt?

4-mal bearbeitet. Zuletzt am 25.08.15 13:14.


Triffid Hunter's Calibration Guide --> X <-- Drill for new Monitor Most important Gcode.
Re: RADDS+DUE, wie Marlin4Due oder Repetier-v92 ohne Arduino-IDE bauen?
26. August 2015 04:37
Das das "Makefile-linux" eigentlich das Makefile für den DUE ist, hatte ich nicht gecheckt. Irgendwie ist die Benamsung nicht so intuitiv für mich winking smiley
Danke für den Hinweis.

Ich hab das jetzt angepasst, und mit "make compile" mal nen Probelauf gestartet. Beim zusammenlinken der Objekt-Files explodiert dann aber wieder alles:
arm-none-eabi-ar  rcs /usr/src/Marlin4Due-dev-20150824/Marlin/build/core.a /usr/src/Marlin4Due-dev-20150824/Marlin/build/core/cxxabi-compat.cpp.o
arm-none-eabi-ar: /usr/src/Marlin4Due-dev-20150824/Marlin/build/core/cxxabi-compat.cpp.o: No such file or directory
Makefile:122: recipe for target '/usr/src/Marlin4Due-dev-20150824/Marlin/build/core.a' failed
make: *** [/usr/src/Marlin4Due-dev-20150824/Marlin/build/core.a] Error 1
Der Witz ist: dieses Objektfile wird nichtmal versucht zu bauen.

Ich habe mal den Output von dem Compile & das Makefile hier angeklebt.: Makefile-linux output.txt
Bitte nicht an den Pfaden stören, die passen so. (Die 1.6.5 Arduino-IDE ist vernünftig als deb ins System installiert worden).

Wenn ich mich im Netz so umschaue, beschleicht mich so langsam das Gefühl das der DUE (und das andere 32-Bit Dingens) eher so die ungeliebten Stiefkinder der Arduino Familie sind und reichlich vernachlässigt werden, während es für die AVR-Boards so ziemlich alles gibt und auch gepflegt wird. eye rolling smiley

2-mal bearbeitet. Zuletzt am 26.08.15 04:42.
Re: RADDS+DUE, wie Marlin4Due oder Repetier-v92 ohne Arduino-IDE bauen?
26. August 2015 05:39
Unter "Arduino15\packages\arduino\hardware\sam\1.6.4\cores\arduino" finde ich nix mit cxxabi-compat.cpp. Ggf. war das mal früher mit dabei? Musst mal gucken, welche Teile du genau aus dem Teil brauchst. Ansonsten mal auskommentieren/löschen.


Triffid Hunter's Calibration Guide --> X <-- Drill for new Monitor Most important Gcode.
Re: RADDS+DUE, wie Marlin4Due oder Repetier-v92 ohne Arduino-IDE bauen?
26. August 2015 10:13
Für Repetier hätte ich noch ein bash-script zum compilieren und hochladen: [gist.github.com]
In den Kommentaren steht, wie du es einrichten und verwenden kannst.

GPP, GCC, AR und OC kannst du aus den Debian-Paketquellen auf deinem PI installieren (apt-get install gcc-arm-none-eabi gcc-arm-none-eabi libstdc++-arm-none-eabi-newlib libnewlib-arm-none-eabi)
Außerdem benötigst du noch ein beliebiges arduino-ide für linux [www.arduino.cc] - das dient nur als Lieferant für die Libraries und wird nicht ausgeführt
Re: RADDS+DUE, wie Marlin4Due oder Repetier-v92 ohne Arduino-IDE bauen?
26. August 2015 13:09
@voodoo:

Cool, das funktioniert. Nur die Baudrate für stty musste ich auf 1200 anpassen.
Der Upload sieht bei mir jetzt so aus:

stty -F /dev/${DUE} cs8 1200 hupcl
bossac -U false -e -w -v -b ${BDIR}/${PROJECT}.cpp.bin -R

Was ich auf die schnelle nicht hinbekommen habe: Wie zaubert man denn eine Ausgabe hin, die dieser eines "normalen" Build-Prozesses entspricht? Also der Compiler/Linker zeigt an was er gerade tut. Wenn ich da ein -v in die Compileroptionen baue, kommt zuviel Output.




@wurstnase:
Ich hab den cxxabi-compat.cpp einfach mal rausgenommen, das läuft jetzt schon wesendlich weiter durch. Allerdings springt es mir nun mit
arm-none-eabi-g++ -MD -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -mcpu=cortex-m3  -mthumb -fno-rtti -fno-exceptions  -Dprintf=iprintf -DF_CPU=84000000L -DARDUINO=165 -D__SAM3X8E__ -DUSB_PID=0x003e -DUSB_VID=0x2341 -DUSBCON -I/usr/share/arduino/hardware/arduino/sam/system/libsam -I/usr/share/arduino/hardware/arduino/sam/system/CMSIS//CMSIS/Include/ -I/usr/share/arduino/hardware/arduino/sam/system/CMSIS//Device/ATMEL/ -I/usr/share/arduino/hardware/arduino/sam//cores/arduino -I/usr/share/arduino/hardware/arduino/sam//variants/arduino_due_x -I. HAL.cpp -o /usr/src/Marlin4Due-g29_works_again/Marlin/build/HAL.cpp.o 
HAL.cpp:34:18: fatal error: Wire.h: No such file or directory
 #include 
                  ^
compilation terminated.
Makefile:95: recipe for target '/usr/src/Marlin4Due-g29_works_again/Marlin/build/HAL.cpp.o' failed
make: *** [/usr/src/Marlin4Due-g29_works_again/Marlin/build/HAL.cpp.o] Error 1
ins Gesicht. Ich glaube, das Makefile ist einfach sehr veraltet, das entsprechende Github repository wurde vor 2 Jahren zuletzt angefasst. Leider habe ich auch keine Ahnung wie man da die ganzen Abhänigkeiten rausfindet und ins Makefile reinbringt. Ich vermute aber, dafür gibts Tools. Aber welche?
Re: RADDS+DUE, wie Marlin4Due oder Repetier-v92 ohne Arduino-IDE bauen?
26. August 2015 14:00
Quote
Jasmir
@voodoo:

Cool, das funktioniert. Nur die Baudrate für stty musste ich auf 1200 anpassen.
Der Upload sieht bei mir jetzt so aus:

stty -F /dev/${DUE} cs8 1200 hupcl
bossac -U false -e -w -v -b ${BDIR}/${PROJECT}.cpp.bin -R

Was ich auf die schnelle nicht hinbekommen habe: Wie zaubert man denn eine Ausgabe hin, die dieser eines "normalen" Build-Prozesses entspricht? Also der Compiler/Linker zeigt an was er gerade tut. Wenn ich da ein -v in die Compileroptionen baue, kommt zuviel Output.

Das mit der Baudrate liegt wohl daran, dass das script bei mir auf einem Udoo läuft. thumbs up

Bzgl. des Outputs gibt es mehrere Möglichkeiten:

Du rufst das gesamte Script mit bash -x auf (viel output, zeigt auch jede variablendeklaration)
~# bash -x ./compile157.sh compile

...oder du schreibst in die schleifen noch Echos rein, z.B. so:
for dot_cpp in $(ls *.cpp); do
	echo "Compiling ${dot_cpp}..."
	${GPP} ${GPPOPTS} ${INC_ALL} ${INC_GPP} ${dot_cpp} -o ${BDIR}/${dot_cpp}.o
done

Wenn der Output vom Compiler/Linker kommen soll, muss ich leider passen - vielleicht findest du in der Manual etwas smiling smiley
In diesem Forum dürfen leider nur registrierte Teilnehmer schreiben.

Klicke hier, um Dich einzuloggen