Seite 2 von 7

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

Verfasst: Mo 26. Dez 2016, 18:58
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

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

Verfasst: Mo 26. Dez 2016, 23:32
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

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

Verfasst: Di 27. Dez 2016, 09:12
von Wessix
Ich meine dass dieser Warnhinweis immer kommt.

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

Verfasst: Di 27. Dez 2016, 12:37
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

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

Verfasst: Di 27. Dez 2016, 21:03
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

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

Verfasst: Di 27. Dez 2016, 23:57
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

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

Verfasst: Mi 28. Dez 2016, 09:43
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

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

Verfasst: Mi 28. Dez 2016, 22:11
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

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

Verfasst: Do 29. Dez 2016, 18:10
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.

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

Verfasst: Do 29. Dez 2016, 23:42
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