Autor Thema: Link time optimization (-flto)  (Gelesen 586 mal)

Offline kaihs

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 921
Link time optimization (-flto)
« am: 02 Juli 2018, 22:19:08 »
Durch die letzten Erweiterungen mit der Unterstützung für WMBus C ist leider die Firmware zu groß für einen CUL V3 geworden.
Die schnellste Abhilfe wäre die Unterstützung für WMBus in der board.h komplett auszuschalten.

Die Alternative ist die Optimierung der Codegröße. Ganz schnell geht das durch Einschalten der (Option [url=https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Optimize-Options.html#Optimize-Options]-flto).
Ohne
Size:
   text    data     bss     dec     hex filename
  28806     192    1938   30936    78d8 CUL_V3.elf

Mit
Size:
   text    data     bss     dec     hex filename
  27580     158    1933   29671    73e7 CUL_V3.elf

Verfügbar ist die Option wohl seit gcc 4.5.5, obige Zahlen sind mit avr-gcc 8.1.1 ermittelt.

Spricht etwas dagegen diese Optimierung zu nutzen?
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, FHEM V5.8, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EMT7110, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, FHEMduino mit Logilink Temp.-sensoren und Auriol Wetterstation

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 18981
Antw:Link time optimization (-flto)
« Antwort #1 am: 03 Juli 2018, 21:57:29 »
Danke fuer den Hinweis. Gegen -flto spricht, dass es nicht ausgiebig mit culfw getestet wurde.
Wir hatten schon sowas: mit einer agressiven Optimierung lief RFR nicht mehr, ich habe die Ursache aber nicht lokalisiert.

Ich habe nichts dagegen, -flto zu aktivieren, und auf die Gemeinde loszulassen, aber ein minimaler Test muss sein. Da ich z.Zt nicht testen kann, brauche ich Feedback von jemandem, der mit -flto uebersetzt wenigstens ein paar der Features geprueft hat.



Offline kaihs

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 921
Antw:Link time optimization (-flto)
« Antwort #2 am: 05 Juli 2018, 20:57:59 »
Ich habe nichts dagegen, -flto zu aktivieren, und auf die Gemeinde loszulassen, aber ein minimaler Test muss sein. Da ich z.Zt nicht testen kann, brauche ich Feedback von jemandem, der mit -flto uebersetzt wenigstens ein paar der Features geprueft hat.

Es gibt einen Anwender der eine mit -flto übersetzte culfw im Einsatz hat und bei dem WMBUS Empfang funktioniert (siehe hier und hier).
Aber das ist natürlich kein ausreichender Test.

Ich selbst habe keinen original CUL und verwende eine modifizierte culfw kann also auch nicht vernünftig testen.

Daher werde ich erstmal HAS_MBUS aus der board.h für CUL_V3 raus nehmen damit zumindest eine funktionierende Version erstellt wird.
Wer dann MBUS haben möchte muss ein anderes Feature ausschalten.
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, FHEM V5.8, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EMT7110, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, FHEMduino mit Logilink Temp.-sensoren und Auriol Wetterstation

Offline PeMue

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4211
Antw:Link time optimization (-flto)
« Antwort #3 am: 20 Juli 2018, 10:48:42 »
Hallo zusammen,

wenn ihr mir sagt, wo ich das im Makefile einbauen muss, kann ich das testen mit folgenden Geräten:
- CUL V3 mit Homematic
- CUNO V2 mit slowrf
- CSM mit MAX
jeweils mit der aktuellen Firmware.

Danke + Gruß

PeMue

Edit: Liste oben aktualisiert
« Letzte Änderung: 20 Juli 2018, 13:21:04 von PeMue »
1x FB7170 (29.04.88) 5.7 1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F)
1x RPi BV2LCDCSM 1.63 5.7 2xMAX HKT, 1xMAX RT, V200KW1
1xFB 7490 (113.06.05) 5.7 1xCUL V3 1.63 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 1xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU 1xRFXtrx 90 1xWT440H 1xCM160 3xTFA30.3150 5xFA21

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 18981
Antw:Link time optimization (-flto)
« Antwort #4 am: 20 Juli 2018, 11:20:52 »
Bau mal unterCFLAGS += -Oseine neue Zeile mitCFLAGS += -fltoein.
Je nach Compiler Version gibt es zusaetzliche Warning (laut Internet harmlos), und der Code ist 3% kleiner.