Neue Development Firmware (RF.01.35 - Weihnachts-Update)

Firmware Veröffentlichungen und Einstellungen können hier angekündigt und diskutiert werden.
rf_42
Gelegenheitsdrucker
Gelegenheitsdrucker
Beiträge: 31
Registriert: Sa 20. Feb 2016, 13:10
Has thanked: 3 times
Been thanked: 4 times

Re: Neue Development Firmware (RF.01.35 - Weihnachts-Update)

Beitrag von rf_42 »

Hallo!

Bei mir funktioniert die RF.01.35. Allerdings hatte ich bei mir unter Linux Probleme mit der alten Arduino Entwicklungsumgebung 1.6.5 (die benötigte libreadline Library existiert in der verwendeten Version so nicht mehr in der aktuellen Tumbleweed Distribution) so daß ich gezwungen war, die Sourcen der Firmware (RF2000) auf der Arduino Entwicklungsumgebung 1.8.0 compilierbar zu machen. :S

Die gute Nachricht: Es ist relativ einfach machbar, da nur die unglücklichen C++ Line-Kommentare am Ende der '#define ...' statements im File

Code: Alles auswählen

Repetier-Firmware/RF2000/Repetier/pins.h 
seit der 1.6.6 Entwicklungsumgebung Probleme bereiten (wahrscheinlich analog im RF1000 Verzeichnis). Beispiel:

Code: Alles auswählen

#define ORIG_X_STEP_PIN         54	// PINF.0, 97, STP_DRV1


Da dieses Muster im Code eindeutig ist und die Kommentare eine Grauzone der C++ / C Compiler define Semantik berühren, hatte ich es mit folgenden 2 Unix-Commandos zum compilieren gebracht (ok, die SED Parameter sind ein bißchen schwer verdaulich :sick: ):

Code: Alles auswählen

cp -a pins.h pins.orig.h
cat pins.orig.h | sed 's/\#define\([^\/]*\)\/\/ \(.*\)/\/\/ \2\n\#define\1/' > pins.h
Wenn man sich dann das Ganze mit dem Diff ansieht, sieht es folgendermaßen aus (kdiff3, Lines sind manuell aligned):
pins_h_diff.jpg
Alle Kommentare sind noch da, aber die Sourcen sind mit allen möglichen Compilern jetzt sauber compilierbar.
Zumindestens bei mir lief die Compilierung und die Installation der Firmware mit dem Arduino Toolkit 1.8.0 ohne Auffälligkeiten. Auch der Heatbead Scan und ein Testausdruck verlief erfolgreich ohne Auffälligkeiten.

Meine Frage wäre jetzt, ob es nicht sinnvoll wäre, diese Änderungen mit den Kommentaren nicht irgendwann in die Sourcen einzuplegen, um die fatale Abhängigkeit von veralteten Entwicklungsumgebungen aufzulösen.



Viele Grüße und :danke: vielmals für die neue Firmware Version
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
Nibbels
Developer
Developer
Beiträge: 2264
Registriert: Mi 17. Aug 2016, 17:01
Has thanked: 831 times
Been thanked: 599 times

Re: Neue Development Firmware (RF.01.35 - Weihnachts-Update)

Beitrag von Nibbels »

Hmm, ich habe das probiert (Windows, Arduino.cc 1.8.0)

Aber ich erhalte immer sowas:

Code: Alles auswählen

In file included from sketch\ui.h:173:0,

                 from sketch\Repetier.h:41,

                 from sketch\Commands.cpp:19:

sketch\uilang.h:382:0: warning: "UI_TEXT_BAUDRATE" redefined

 #define UI_TEXT_BAUDRATE    "Baudrate: %oc"

 ^

In file included from sketch\ui.h:173:0,

                 from sketch\Repetier.h:41,

                 from sketch\Commands.cpp:19:

sketch\uilang.h:224:0: note: this is the location of the previous definition

 #define UI_TEXT_BAUDRATE    "Baudrate:%oc"

 ^
In vielfacher Ausführung.

Anscheinend ignoriert der Compiler auch solche Zeilen:

Code: Alles auswählen

#if MOTHERBOARD == DEVICE_TYPE_RF1000
Irre ich mich?

Ich hab überall LEERTASTE+// mit LEERTASTE+ENTER+// ersetzt und dasselbe mit TAB statt LEERTASTE, sodass Kommentare am Ende der Zeile immer in der nächsten Zeile gelandet sind.
Am Ende stand trotzdem:

Code: Alles auswählen

Der Sketch verwendet 213984 Bytes (84%) des Programmspeicherplatzes. Das Maximum sind 253952 Bytes.
Globale Variablen verwenden 6255 Bytes (76%) des dynamischen Speichers, 1937 Bytes für lokale Variablen verbleiben. Das Maximum sind 8192 Bytes.
Wenig Arbeitsspeicher verfügbar, es können Stabilitätsprobleme auftreten.
LG
RF2000
Firmware Mod 1.45.00.Mod - geht SD wieder 100%?

Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW <= 1.43.99 aktuell meiden.
Wessix
Profi 3D-Drucker
Profi 3D-Drucker
Beiträge: 415
Registriert: Sa 18. Okt 2014, 22:20
Has thanked: 84 times
Been thanked: 69 times

Re: Neue Development Firmware (RF.01.35 - Weihnachts-Update)

Beitrag von Wessix »

Ich meine dass dieser Warnhinweis immer kommt.
E3DV6+Titan Total Conversion
Aluheizbett + MTPlus + zweite Y-Schiene mit Wagen
Z-Kette
X-kette
Platinenlüfter
X19 Schaltung LED
pi-Octopi+ Cam
Ritzel-Kühler
Firmware Mod 1.45.00
Benutzeravatar
Nibbels
Developer
Developer
Beiträge: 2264
Registriert: Mi 17. Aug 2016, 17:01
Has thanked: 831 times
Been thanked: 599 times

Re: Neue Development Firmware (RF.01.35 - Weihnachts-Update)

Beitrag von Nibbels »

Der unterste Warnhinweis mit Programmspeicher und freiem Ram ist absolut normal, aber das drüber nicht.
Ich hatte vermutet, dass das durch den Umbruch der Kommentare verschwindet, wenn ich rf_42 richtig verstanden habe.
Leider kann ich das nur nachmachen und nicht selbst logisch über Compilerstandards reden, weil ich mich da nicht sonderlich gut auskenne.

LG
RF2000
Firmware Mod 1.45.00.Mod - geht SD wieder 100%?

Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW <= 1.43.99 aktuell meiden.
rf_42
Gelegenheitsdrucker
Gelegenheitsdrucker
Beiträge: 31
Registriert: Sa 20. Feb 2016, 13:10
Has thanked: 3 times
Been thanked: 4 times

Re: Neue Development Firmware (RF.01.35 - Weihnachts-Update)

Beitrag von rf_42 »

Hallo!

Tut mir leid, daß ich erst so spät antworte. Ich habe keinerlei derartige Compilerwarnings erhalten.
Allerdings habe ich bei mir die kompletten Default-Settings verwendet ohne irgendwelche Modifikationen:

Geholt hatte ich mir die Sourcen für den Development branch folgendermaßen:

Code: Alles auswählen

rm -rf Repetier-Firmware
git clone -b development  https://github.com/RF1000/Repetier-Firmware
cd Repetier-Firmware/RF2000/Repetier/
cp -a pins.h pins.orig.h
cat pins.orig.h | sed 's/\#define\([^\/]*\)\/\/ \(.*\)/\/\/ \2\n\#define\1/' > pins.h

# und nun starten der graphischen Entwicklungsumgebung
~/arduino-1.8.0/arduino
Und dann unter Öffnen 'Repetier-Firmware/RF2000/Repetier' das File 'repetier.ino' ausgewählt. Danach compilierte die Firmware beim Aufruf von 'Sketch --> Compilieren bzw. hochladen' die Firmware einwandfrei ohne Warning. Ich habe vorsichtshalber noch einmal nach den UI_TEXT_BAUDRATE defines gegrepped:

Code: Alles auswählen

:~/Repetier-Firmware> grep -rn  ' *\#define *UI_TEXT_BAUDRATE' *
RF1000/Repetier/uilang.h:215:#define UI_TEXT_BAUDRATE                           "Baudrate:%oc"
RF1000/Repetier/uilang.h:372:#define UI_TEXT_BAUDRATE                           "Baudrate: %oc"
RF1000/Repetier/uilang.h:525:#define UI_TEXT_BAUDRATE                           "Baudrate:%oc"
RF1000/Repetier/uilang.h:684:#define UI_TEXT_BAUDRATE                           "Baudrate: %oc"
RF2000/Repetier/uilang.h:215:#define UI_TEXT_BAUDRATE                           "Baudrate:%oc"
RF2000/Repetier/uilang.h:372:#define UI_TEXT_BAUDRATE                           "Baudrate: %oc"
RF2000/Repetier/uilang.h:525:#define UI_TEXT_BAUDRATE                           "Baudrate:%oc"
RF2000/Repetier/uilang.h:684:#define UI_TEXT_BAUDRATE                           "Baudrate: %oc"
Irgendwie sind die Zeilennummern in meinen 'uilang.h' Files unterschiedlich (konkret: 215 anstatt 224, 372 anstatt 382).
Nach dem Grep zu Urteilen, sollte die Warning aber kein K.O.-Kriterium sein (auch wenn der String wahrscheinlich bei sprintf verwendet wird).
Bis auf ein Leerzeichen ist alles identisch. Bei mir zumindestens.

Welchen Warning-Level hast Du eingestellt und welche Sprache (== UI_LANGUAGE) ?
Es könnte sein, daß die neue Entwicklungsumgebung schärfere Warning Checks enthält und bei eingeschalteter UI_LANGUAGE = 1 (== Deutsch) die defines nochmals gesetzt werden :unsure:

Code: Alles auswählen


// ##########################################################################################
// ##    English
// ##########################################################################################

// At first all terms in english are defined. After that the selected language
// can overwrite the definition. That way new strings are at least in english
// available.

#define UI_TEXT_ON						"On"
#define UI_TEXT_OFF						"Off"
#define UI_TEXT_0						"0"
#define UI_TEXT_1						"1"
#define	UI_TEXT_UNKNOWN					"?"
#define UI_TEXT_NA						"N/A"						// Output for not available

...


// ##########################################################################################
// ##    German
// ##########################################################################################

#if UI_LANGUAGE==1

#define UI_TEXT_ON						"An"
#define UI_TEXT_OFF						"Aus"
#define UI_TEXT_0						"0"
#define UI_TEXT_1						"1"
#define	UI_TEXT_UNKNOWN					"?"
#define UI_TEXT_NA						"nv"

...

Bei mir war die Sprache jedenfalls defaultmäßig auf Englisch:

Code: Alles auswählen

:~/Repetier-Firmware> grep -rn UI_LANGUAGE *
RF1000/Repetier/Configuration.h:618:#define UI_LANGUAGE                                                 0
RF1000/Repetier/uilang.h:407:#if UI_LANGUAGE==1
RF1000/Repetier/uilang.h:736:#endif // UI_LANGUAGE==1
RF2000/Repetier/Configuration.h:618:#define UI_LANGUAGE                                                 0
RF2000/Repetier/uilang.h:407:#if UI_LANGUAGE==1
RF2000/Repetier/uilang.h:736:#endif // UI_LANGUAGE==1
Nach Aussagen des obenstehenden Kommentars
After that the selected language can overwrite the definition. That way new strings are at least in english available
könnten die Compiler Warnings auch tolerierte Übel sein (vom Konzept zumindestens her).

Hilft das weiter?
Oder habe ich da einen Denkfehler bzw. Konfigurationsfehler bei meiner Entwicklungsumgebung?

Viele Grüße
Benutzeravatar
Nibbels
Developer
Developer
Beiträge: 2264
Registriert: Mi 17. Aug 2016, 17:01
Has thanked: 831 times
Been thanked: 599 times

Re: Neue Development Firmware (RF.01.35 - Weihnachts-Update)

Beitrag von Nibbels »

Danke :)

Meine Zeilennummern sind etwas verschoben, weil ich da schon nicht mehr die ganz originale Datei benutzt hatte.
Um eventuelle Nibbels-Fehler auszuschließen, habe ich gerade nocheinmal das Git neu heruntergeladen und getestet.

Ohne deinen pins.h-Fix sind's echte Fehler.
nofix.txt
Mit deinem Fix sinds Warnings.
rf_42_pins_s.txt
Und hier noch ein Hinweis:
https://www.arduino.cc/en/Main/Software
vs.
http://www.arduino.org/downloads

--> http://www.golem.de/news/arduino-ide-ne ... 25248.html
Ich hatte die Version von .cc verwendet. (Korrekt?)
Nur heruntergeladen, installiert und das Board auf Mega 2560 gewählt. Mehr nicht.
Dann "Überprüfen".

In jedem Fall verbessert dein Kommentarfix einiges! Aber es scheint noch nicht absolut rund zu laufen.
Mir schwant, dass diese Compiler-#IF's nicht 100% korrekt verarbeitet werden?

Code: Alles auswählen

#define UI_LANGUAGE							0
(Mein Stand, also sollte das "German" nicht beachtet werden??)

Ich muss an dieser Stelle für heute Abbrechen, sonst werde ich Single :D

LG
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
RF2000
Firmware Mod 1.45.00.Mod - geht SD wieder 100%?

Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW <= 1.43.99 aktuell meiden.
Marcometaner
Profi 3D-Drucker
Profi 3D-Drucker
Beiträge: 346
Registriert: Mo 27. Okt 2014, 06:11
Has thanked: 31 times
Been thanked: 147 times

Re: Neue Development Firmware (RF.01.35 - Weihnachts-Update)

Beitrag von Marcometaner »

Gerade einen RF1000 mit RF.01.35 und Repetier Host 1.6.2 am laufen.
Bei mir gibt es damit keine Probleme.
Steuerung funktioniert wie gewohnt, im Moment läuft der Heat Bed Scan.

Eventuell nochmal runterladen und neu flashen.
Und nicht vergessen, wenn vorher eine alte Firmware (0.91.xx) verwendet wurde die Baudrate auf 115200 zu stellen.

MfG
Nicht mehr für Conrad tätig.
Anfragen und Reklamationen bitte an: [email protected]
rf_42
Gelegenheitsdrucker
Gelegenheitsdrucker
Beiträge: 31
Registriert: Sa 20. Feb 2016, 13:10
Has thanked: 3 times
Been thanked: 4 times

Re: Neue Development Firmware (RF.01.35 - Weihnachts-Update)

Beitrag von rf_42 »

Hallo!

Zu den Compiler Warnings:
habe ich auch verwendet, und zwar dort das 'arduino-1.8.0-linux64.tar.xz' file.

Als Board hatte ich allerdings 'Mega ADK' ausgewählt. Hat bei mir beim Compilieren allerdings keinerlei Auswirkung gehabt.
Die Language Option ist identisch zu meiner Position --> Auch das dürfte nicht die Ursache sein.

Was mich in Deinem Warning Log ein bißchen stutzig macht, ist folgende Warning fast ganz am Ende:

Code: Alles auswählen


sketch\ui.cpp:595:75: warning: '__progmem__' attribute ignored [-Wattributes]

 void UIDisplay::createChar(uint8_t location,const uint8_t PROGMEM charmap[])

  

http://forum.arduino.cc/index.php?topic=387602.0

Vor allem das '-Wattributes' irritiert mich ein bißchen, da beim Compile-Aufruf des arduino-builders bei mir '-warnings=none' übergeben wird und ich nirgends ein Makefile noch eine Dialogbox für die Compile-Optionen in der Arduino IDE gefunden habe :schock: :bah: :

Code: Alles auswählen

arduino-1.8.0/arduino-builder
-compile
-logger=machine
-hardware arduino-1.8.0/hardware
-tools arduino-1.8.0/tools-builder
-tools arduino-1.8.0/hardware/tools/avr
-built-in-libraries arduino-1.8.0/libraries
-libraries Arduino/libraries
-fqbn=arduino:avr:megaADK
-ide-version=10800
-build-path /tmp/arduino_build_745911 
-warnings=none 
-prefs=build.warn_data_percentage=75 
-prefs=runtime.tools.arduinoOTA.path=arduino-1.8.0/hardware/tools/avr
-prefs=runtime.tools.avr-gcc.path=arduino-1.8.0/hardware/tools/avr
-prefs=runtime.tools.avrdude.path=arduino-1.8.0/hardware/tools/avr
-verbose Repetier-Firmware/RF2000/Repetier/Repetier.ino
Evtl. verwendest Du ja einen anderen Warning Level. Solltest Du aber wirklich die '#if ...' Statements im Verdacht haben, kannst Du Deinen Code einfach mit '#error' Statements zum Testen vollpflastern wie z.B. so:

Code: Alles auswählen


// ##########################################################################################
// ##    German
// ##########################################################################################

#error XXXX before '#if UI_LANGUAGE==1' ...

#if UI_LANGUAGE==1

#error XXXX within '#if UI_LANGUAGE==1' ...

#define UI_TEXT_ON						"An"
#define UI_TEXT_OFF						"Aus"
#define UI_TEXT_0						"0"

Der Compiler meint dann das:

Code: Alles auswählen

"arduino-1.8.0/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10800 -DARDUINO_AVR_ADK -DARDUINO_ARCH_AVR   "-Iarduino-1.8.0/hardware/arduino/avr/cores/arduino" "-Iarduino-1.8.0/hardware/arduino/avr/variants/mega" "-Iarduino-1.8.0/hardware/arduino/avr/libraries/SPI/src" "-Iarduino-1.8.0/hardware/arduino/avr/libraries/Wire/src" "/tmp/arduino_build_745911/sketch/Repetier.ino.cpp" -o "/tmp/arduino_build_745911/preproc/ctags_target_for_gcc_minus_e.cpp"
In file included from /tmp/arduino_build_745911/sketch/ui.h:173:0,
                 from /tmp/arduino_build_745911/sketch/Repetier.h:39,
                 from Repetier-Firmware/RF2000/Repetier/Repetier.ino:112:
uilang.h:407: error: #error XXXX before '#if UI_LANGUAGE==1' ...
 #error XXXX before '#if UI_LANGUAGE==1' ...

  ^
Bibliothek SPI in Version 1.0 im Ordner: arduino-1.8.0/hardware/arduino/avr/libraries/SPI  wird verwendet
Bibliothek Wire in Version 1.0 im Ordner: arduino-1.8.0/hardware/arduino/avr/libraries/Wire  wird verwendet
exit status 1
#error XXXX before '#if UI_LANGUAGE==1' ...
Evtl. läßt sich damit das Problem lokalisieren

Viele Grüße
Benutzeravatar
Nibbels
Developer
Developer
Beiträge: 2264
Registriert: Mi 17. Aug 2016, 17:01
Has thanked: 831 times
Been thanked: 599 times

Re: Neue Development Firmware (RF.01.35 - Weihnachts-Update)

Beitrag von Nibbels »

Sodele, einige Probleme sind offenbar RF2000-only.
Screenshot_1.png
Da wird nur wenn es der RF2000 ist doppelt definiert.
Ich arbeite das um und teste, was übrig bleibt.
Das mit den Errors könnte da gut helfen!

LG

EDIT: Es sieht schon besser aus, wenn alle RF2000-Defines nicht mehr überschrieben sondern mit IF-Else gewählt werden. Es bleiben Fehler übrig, doch viele fallen weg.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
RF2000
Firmware Mod 1.45.00.Mod - geht SD wieder 100%?

Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW <= 1.43.99 aktuell meiden.
rf_42
Gelegenheitsdrucker
Gelegenheitsdrucker
Beiträge: 31
Registriert: Sa 20. Feb 2016, 13:10
Has thanked: 3 times
Been thanked: 4 times

Re: Neue Development Firmware (RF.01.35 - Weihnachts-Update)

Beitrag von rf_42 »

Hallo!

Mittlerweile habe ich den Unterschied gefunden :dash:
Ich hatte den Default-Warning-Level (einstellbar nur durch Änderung der Datei 'arduino-1.8.0/hardware/arduino/avr/platforms.txt').

Nach dem Umstellen auf die Optionen
- compiler.warning_flags.more
- compiler.warning_flags.all
compiler_flags.jpg
bekomme ich nun die gleichen Warnings wie Du :oops:


Die Redefinitions stören mich nicht nachdem ich mich da durchgewurstelt habe. Sie überlagern meistens nur wichtigere Sachen. Wo mir als SW-Entwickler dann doch ein ganz kleines bißchen unwohl wird, sind Sachen wie diese:

Code: Alles auswählen


In file included from /tmp/arduino_build_52395/sketch/Repetier.h:153:0,
                 from /home/volker/temp/Repetier-Firmware/RF2000/Repetier/Repetier.ino:112:
/tmp/arduino_build_52395/sketch/motion.h: In member function 'bool PrintLine::setNominalMove()':
/tmp/arduino_build_52395/sketch/motion.h:198:5: warning: no return statement in function returning non-void [-Wreturn-type]
     } // setNominalMove
     ^
    

sketch\RF.cpp: In function 'char determineCompensationOffsetZ()':

sketch\RF.cpp:4815:16: warning: overflow in implicit constant conversion [-Woverflow]

  short uMax = -1000000;

                ^

Ich hoffe, ich bin da jetzt niemandem zu nahe getreten und möchte mich vorsorglich dafür entschuldigen.
Bitte nehmt es mir nicht übel.

Viele Grüße
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Antworten

Zurück zu „Firmware / Tweaks“