Forum: Mikrocontroller und Digitale Elektronik Marlin 2.0.72 lässt sich nicht compilieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Horst S. (h3aau)


Bewertung
0 lesenswert
nicht lesenswert
moin,
ich wollte mal die neuste marlin auf einen 3d-drucker bringen.
leider bekomme ich haufenweise fehlermeldungen von type:
Error while detecting libraries included by 
D:\Temp\arduino_build_123770\sketch\src\gcode\sd\M30.cpp
die alte 2.0.x-bugfix geht einwandfrei.
arduino ist 1.8.13 auf w10.
hatt da einer mal einen tip dazu?
danke.

: Bearbeitet durch User
von Thomas (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
welche CPU hat dein 3D Controller
2.x und höher ist eigentlich nur für 32 Bit

von Jan L. (ranzcopter)


Bewertung
1 lesenswert
nicht lesenswert
Thomas schrieb:
> welche CPU hat dein 3D Controller
> 2.x und höher ist eigentlich nur für 32 Bit

das ist falsch; richtig ist, dass man für die 32-Bit-Versionen 
PlatformIO zum Compilieren benötigt.

von Joachim S. (oyo)


Bewertung
1 lesenswert
nicht lesenswert
Thomas schrieb:
> welche CPU hat dein 3D Controller
> 2.x und höher ist eigentlich nur für 32 Bit

Soweit ich weiss, ist es leicht anders: 32 Bit-Controller werden erst ab 
2.0 unterstützt, aber die 8-Bit-AVRs funktionieren immer noch.

@Threadstarter. Wo Dein Problem liegt, weiss ich nicht, aber ich würde 
es an Deiner Stelle einfach mal mit platformio statt der ArduinoIDE 
versuchen.
Ich selbst habe die 2.0.7.2 jedenfalls gerade vor 2-3 Wochen völlig 
problemlos mit platformio kompiliert.

von Horst S. (h3aau)


Bewertung
0 lesenswert
nicht lesenswert
moin,
es ist ein mks base v1.5 board also atmega 2560.

ich habe es erstmal mit einer alten 2.0.x gemacht, die geht.
einen teil habe ich hinbekommen. aber der z_min schalter, soll auf pin 
18 sein, ist nicht da.
hat zufällig jemand ein schaltbild dieses board? habe da leider nix 
gefunden.

von sid (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
versuch mal ne ältere arduino IDE..
ich hab die ..72 auf (ich glaube*) 1.8.10 compiliert für mein 2560 
controllerboard (GT2560A+)
das ging problemlos.

'sid

*(meine mich zu erinnern dass das meine arduino ide version ist.. bin am 
falschen Rechner und kann nciht nachsehen grad)

von sid (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Horst S. schrieb:
> ich habe es erstmal mit einer alten 2.0.x gemacht, die geht.
> einen teil habe ich hinbekommen. aber der z_min schalter, soll auf pin
> 18 sein, ist nicht da.
> hat zufällig jemand ein schaltbild dieses board? habe da leider nix
> gefunden.

Äh D18 gell?

ich hab nur das von der v1.1 finden können
https://reprap.org/mediawiki/images/b/b7/MKS_BASE_PINS.pdf

glaub nicht, dass die das Pinout geändert haben um ehrlich zu sein,
aber beschwören wollt ich das nicht.

Bilder von v1.4
https://ae01.alicdn.com/kf/HTB1STMIKFXXXXc_aXXXq6xXFXXXL/MKS-Gen-V1-4-3D-Printer-Control-Board-Motherboard-of-MEGA2560-RAMPS-1-4-With-USB.jpg

sehen mir auch nach D18 aus

Im Zweifel entferne das board mal komplett vom Strom und allen Steckern 
und pieps den Endstop-Anschluss mal gegen den AVR durch, dann kannste 
den Pin identifizieren.

ich tippe aber eher auf fehlerhaften Endstop(schalter) um ehrlich zu 
sein.

'sid

von Horst S. (h3aau)


Bewertung
0 lesenswert
nicht lesenswert
moin,
danke für die infos.
der endschalter Z_Min geht mit der alten firmware die auf dem board war.
der liegt wohl nur nicht auf pin 18 (PINS.H->RAMPS.H).
gibt es irgendwo eine liste die zeigt wie die virtuellen pinnamen 
(A1...,D1....) mit den tatsächlichen prozessorpins (PA01...,PB01..) 
verheiratet sind?
das mit der adruino version 1.8.0 werde ich mal testen.

: Bearbeitet durch User
von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht lesenswert
Horst S. schrieb:
> gibt es irgendwo eine liste die zeigt wie die virtuellen pinnamen
> (A1...,D1....) mit den tatsächlichen prozessorpins (PA01...,PB01..)
> verheiratet sind?

das ist im verwendeten Arduino core definiert, für Mega2560 z.B.
https://github.com/MCUdude/MegaCore/blob/master/avr/variants/100-pin-arduino-mega/pins_arduino.h

falls dieser verwendet wird.

von Joachim S. (oyo)


Bewertung
0 lesenswert
nicht lesenswert
Horst S. schrieb:
> das mit der adruino version 1.8.0 werde ich mal testen.

Sofern das nicht nur ein Vertipper war, sondern Du Dich verlesen hast: 
Arduino 1.8.0 ist zu alt. "To build Marlin 2.0 you'll need Arduino IDE 
1.8.8 or newer or PlatformIO."

von Rene (Gast)


Bewertung
0 lesenswert
nicht lesenswert
In den marlin sourcen sind in einem unterordner alle pins definiert für 
die verschiedenen board typen.

Kompilieren der neuen marlin stände geht nur noch einfach mit 
PlatformIO.

Ich nutze bei mir für den leveling sensor den filament runout pin vom 
zweiten extruder auf dem gt2560 board. Kann aber prinzipiell frei 
gewählt werden...

Rene

von Horst S. (h3aau)


Bewertung
-1 lesenswert
nicht lesenswert
moin,
so langsam wird ein schuh draus......
in der neuen firmware ist
#define SERIAL_PORT_2 1
das sind dann PD2 (RX1) pin 19 und PD3 (TX1) pin 18.
das sind aber auch Z_MIN und Z_MAX endschalter.
" ich dachte das der SERIAL_PORT_2 für das TFT28 verwendet wird.
ist wohl aber nicht so. aber wo hängt dann das TFT28 drann? "
denken schon mal ganz gut, aber docus finden und lesen deutlich besser.
es hängt am SPI.
also kann SERIAL_PORT_2 wieder weg und die z-endschalter sind wieder 
frei.

statt der 1.8.0 also die 1.8.8.

danke

: Bearbeitet durch User
von Horst S. (h3aau)


Bewertung
0 lesenswert
nicht lesenswert
moin,
was ist besser an platformio im vergleich zu arduino?

von sid (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
vorsicht: MEINUNG!

Horst S. schrieb:
> moin,
> was ist besser an platformio im vergleich zu arduino?
Für Dich als Endanwender GARNIX!

Für Entwickler ist platformIO nett da man für dieverse 
Prozessorstrukturen leichter anpassen kann.

Endanwender die platformio nutzen tun das gewöhnlich weil sie sich dann 
für "besser" halten als sie sind ;)

'sid

von Horst S. (h3aau)


Bewertung
0 lesenswert
nicht lesenswert
top antwort :-)

von Jan L. (ranzcopter)


Bewertung
0 lesenswert
nicht lesenswert
sid schrieb:
>> was ist besser an platformio im vergleich zu arduino?
> Für Dich als Endanwender GARNIX!

also zumindest für mich als "Endanwender": Ich kann in plattformio z.B. 
ohne Hampeleien bei jedem Projekt bestimmen, ob ich die jeweils "neueste 
Library im System" benutzen möchte, oder eine ganz bestimmte (bzw. immer 
die "heute aktuell gewesene").
Bei der Original-IDE ist es mir schon unzählige Male passiert, dass ein 
älteres Projekt nicht mehr kompiliert, weil es zwischendurch zig 
inkompatible Lib-Änderungen gab. Ja, geht auch "irgendwie" mit der 
Original-IDE, aber eher umständlich...

von Horst S. (h3aau)


Bewertung
0 lesenswert
nicht lesenswert
moin,
mit der 1.8.8er gehts auch nicht.

von Cyblord -. (cyblord)


Bewertung
-2 lesenswert
nicht lesenswert
Jan L. schrieb:
> Bei der Original-IDE ist es mir schon unzählige Male passiert, dass ein
> älteres Projekt nicht mehr kompiliert, weil es zwischendurch zig
> inkompatible Lib-Änderungen gab. Ja, geht auch "irgendwie" mit der
> Original-IDE, aber eher umständlich...

Ist halt beides Pfusch.
Zu einem ernsthaften Projekt hat man alle Abhängigkeiten getrennt 
vorliegen. Z.B. in einem git repo.
Man KANN dann einfach diese Abhängigkeiten aktualisieren (und muss dann 
evt. Änderungen im Code vornehmen). Man MUSS aber nicht und das Projekt 
kompiliert auch nach 100 Jahren noch.

Man hat solche Abhängigkeiten nicht einfach in 3 Versionen (alt, mittel, 
neu) zentral liegen und irgendwelche Projekte hängen dann direkt davon 
ab.
Das ist halt Projektorganisation der Generation Arduino. Und dann 
wundern.

von Jan L. (ranzcopter)


Bewertung
0 lesenswert
nicht lesenswert
Cyblord -. schrieb:
> Jan L. schrieb:
>> Bei der Original-IDE ist es mir schon unzählige Male passiert, dass ein
>> älteres Projekt nicht mehr kompiliert, weil es zwischendurch zig
>> inkompatible Lib-Änderungen gab. Ja, geht auch "irgendwie" mit der
>> Original-IDE, aber eher umständlich...
>
> Ist halt beides Pfusch.

inwiefern "beides"? Wenn ich in platformio LibXY angebe mit @5.6, dann 
compiliert das auch "in 100 Jahren noch". Und das ohne gleich mit 
GIT-Kanonen auf Projektspatzen geschossen zu haben.

> Zu einem ernsthaften Projekt hat man alle Abhängigkeiten getrennt

auch "nicht-ernsthafte" Projekte ärgern, wenn sich z.B. nach einem Jahr 
herausstellt, dass die Haloween-Kürbis-Schreck-Elektronik für die Kids 
nicht mehr compiliert :)

> vorliegen. Z.B. in einem git repo.
> Man KANN dann einfach diese Abhängigkeiten aktualisieren (und muss dann

wenn dann die "gegnerische" Lib auch im Git(hub) hängt, ok - ansonsten 
artet das dann leicht in "Arbeit" aus.

> Man hat solche Abhängigkeiten nicht einfach in 3 Versionen (alt, mittel,

?

> neu) zentral liegen und irgendwelche Projekte hängen dann direkt davon
> ab.
> Das ist halt Projektorganisation der Generation Arduino. Und dann
> wundern.

von Horst S. (h3aau)


Bewertung
0 lesenswert
nicht lesenswert
mombi, popkorntüte holen..............

von sid (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Horst S. schrieb:
> mit der 1.8.8er gehts auch nicht.

Kannst Du mal deine configs anhängen,
dann guck ich ob ich das bei mir compiliert bekomme und kann Dir
ggf sagen was wann wo wie eingestellt ist.
(ich würd dir auch die hex anhängen wenn Du magst, kann aber deine 
config nicht kontrollieren macht von daher eher wenig Sinn mMn)

'sid

von Horst S. (h3aau)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
danke.

von Cyblord -. (cyblord)


Bewertung
-3 lesenswert
nicht lesenswert
Jan L. schrieb:
> wenn dann die "gegnerische" Lib auch im Git(hub) hängt, ok - ansonsten
> artet das dann leicht in "Arbeit" aus.

Tut es nicht. Denn abgeschlossene Projekte muss man nicht mehr updaten. 
Auch deren Abhängigkeiten nicht mehr.
Selbst bei aktiven Projekten muss man das meist nicht.
Man hat aber dadurch immer für jedes Projekt genau Die Abhängigkeiten 
die man damals erwartet hat und mit denen dort gearbeitet wurde.
Will man ein Projekt nach X Jahren nochmal kompilieren kommt man um so 
was gar nicht drum rum.

von sid (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hmmm
ulkig..

Hi Horst.. ich hab ne saubere Kopie von 1.8.8 auf den Laptop geworfen
(hab leider deine Configs vergessen zu kopieren, hole ich nach wenn Du 
möchtest)
um sicherzugehen, dass ich keine versteckten libs shortcuts oder 
geänderten Einstellungen auf dem PC hab die helfen.

Kurz: 2.0.7.2 kompiliert!

Hier die Erklärung und 'einfache Lösung' zum 'nachmachen'

Das Problem ist, dass Marlin von mal zu mal aufgeblähter wird durch die
unterschiedlichen Plattformen und Ergänzungen und so weiter
Die Grenze für Windows wurde glaube ich mit 2.0.7.0 überschritten,
ab dann ist die Kommando Zeile die Arduino IDE aufruft
mit dem AVR-gcc Linker über 32kB und wird nichtmehr vollständig von 
Windoof erfasst.
(wenn Du vollständige Ausgabe anklickst in den arduino einstellungen ist 
das die letzte Zeile for der Fehlermeldung:
"avr-gcc: error: CreateProcess: no such file or directory"

AAABER: da sind auch all die für Dich nutzlosen Dateien drin
(configurationen für teensy und stm boards, für Displays die du nciht 
hast und so weiter und so fort)

geh also in den Ordner Marlin/src/HAL
und lösche dort die Unterverzeichnisse
LINUX, die drei STM und die drei TEENSY

dann kompilier nochmal, das sollte schon reichen um auf unter 30kB zu 
kommen im Linker Schritt.

(Ausser AVR und shared kannst Du alle Unterverzeichnisse löschen wenn Du 
willst.. für dein board sollten die beiden reichen)

Da ist wie gesagt noch ne Tonne mehr was gelöscht werden kann,
müstest also vermutlich ab 2.0.9 nochmal was radieren gehen ;)

WEnn DU ne andere Fehlermeldung hattes sag bescheid,
ich kompilier dir das auch gern, nur eben völlig ungeprüft
(ich hab n anderes board und kenne deine Einstellungen nicht)
hab nur wie gesagt die configs vergessen rüberzukopieren und ehrlich 
gesagt keine Lust gehabt den Laptop wieder anzumachen ;)
Wollte nur eben posten, bevor ich es vergesse..

Ansonsten sag kurz bescheid, dann mach ich die SchleppBüchse nochmal an 
bevor ich ins Bett gehe ;)

'sid

von sid (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:
Hab mir deine configs dann auch ohne Rückmeldung nochmal vorgenommen...

NOPE!
Kannste vergessen.. DU musst schon die aktuellen Configs als Vorbild
nehmen und kannst NICHT einfach die Configuration einer älteren Marlin 
Version rüberkopieren

(kurz: SanityCheck failed!)

Ich hatte keine Lust zu schauen was wo genau fehlt.. war mehr als nur 
ein zwei kleine Neuerungen (scheint auch ne Config aus der 2.0.0.0 zu 
sein)

Aber steht ja oben was zu tun ist.. und ja ich hab Dein Grafikdisplay 
gesehen (wundere mich warum Dein Drucker zwei Displays braucht... aber 
nundenn)
kompiliert auch mit der u8glib von Oskar (ohne a-pack trick für's 
library)
(AVR und shared behalten, alle anderen HAL-unterordner weg)
allerdings nur mit der originalen config
(auf das MKS 1.5 und deine beiden Displays umkonfiguriert um sicher zu 
sein, dass da nichts klemmt)
aber sonst Deine Configuration nicht übernommen, mach das mal schön 
alleine,
dass Du auch weisst was zu tun ist das nächste Mal.

'sid

von Horst S. (h3aau)


Bewertung
0 lesenswert
nicht lesenswert
moin,

danke sid, das hat geholfen. sorry waren die falschen configs. mein 
fehler.
hast du noch einen tip was ich in der config eintragen muss wenn ich ein 
TFT32 an das board packen will?

ein dickes DANKE an alle die so klasse und kompetend geholfen haben.

von sid (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Soweit ich weiss ist das ein serielles Display;
also den SERIAL_PORT_2 (SERIAL_PORT ist der USB Anschluss)
die baudrate muss natürlich passen (muss auch am display selbst 
eingestellt werden)
und ich meine es gibt ne MKSTFT_AUX Zeile die du auskommentieren musst.
genau weiss ich das aber nicht.

'sid

von Horst S. (h3aau)


Bewertung
0 lesenswert
nicht lesenswert
moin,

das passt leider nicht. in der 2.0.0 Marlin ist das
#define MKS_ROBIN_TFT
das geht aber in der neusten nicht mehr.......
mal weiter suchen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.