Tipps uns Tricks zu Komponenten

Umgang mit PSoC Logikkomponenten
RA1981
Beiträge: 38
Registriert: Do 23. Apr 2015, 07:54

Re: Tipps uns Tricks zu Komponenten

Beitrag von RA1981 » So 18. Okt 2015, 04:34

Hi Reiner,

also soweit ich weiß werden nicht verwendete Funktionen nicht ins endgültige Programm übernommen, zumindest nicht wenn die Optimierung eingeschaltet ist bzw für RELEASE compiliert wird.
Kann aber gern helfen das zu prüfen wenn du magst.

Gruß Ralf

Reiner W.
Beiträge: 112
Registriert: Di 7. Apr 2015, 11:43

Re: Tipps uns Tricks zu Komponenten

Beitrag von Reiner W. » So 18. Okt 2015, 10:18

Hallo Ralf,

du hast ja schon mächtig geholfen!
zumindest nicht wenn die Optimierung eingeschaltet ist bzw für RELEASE compiliert wird.
Das scheint so zu sein. Habe mich inzwischen etwas eingelesen. Scheint nicht ganz so trivial zu sein.
Erste Anlaufstellen sind:

http://elinux.org/images/2/2d/ELC2010-g ... asenko.pdf
https://embeddedfreak.wordpress.com/200 ... gccgnu-ld/

Wollte mich, im Zusammenhang mit der Komponentenmanipulation, mal etwas intensiver damit befassen. Im Moment haben meine aktuellen Projekte aber etwas dagegen;-)

Gruß und schönen Sonntag
Reiner
Reiner W.

RA1981
Beiträge: 38
Registriert: Do 23. Apr 2015, 07:54

Re: Tipps uns Tricks zu Komponenten

Beitrag von RA1981 » Mo 19. Okt 2015, 17:09

Hi Reiner,

freut mich wenn ich helfen kann und wenn du Fragen hast, nur her damit, entweder ich weiss es oder ich lerne dazu =)

Gruß Ralf

RA1981
Beiträge: 38
Registriert: Do 23. Apr 2015, 07:54

Re: Tipps uns Tricks zu Komponenten

Beitrag von RA1981 » Do 22. Okt 2015, 11:59

Hallo Reiner,

bzgl dem Linken von nicht verwendeten Funktionen: in den BuildSettings gibt es unter Compiler und Linker jeweils die Rubrik "Optimization", und dort die Einstellung "Generate Function Sections" bzw. "Remove unused functions". Soweit ich sehen kann, stehen beide auch im Debug auf True. Ich hab es nicht gegengeprüft, aber das riecht verdächtig danach, dass nicht aufgerufene Funktionen auch tatsächlich nicht gelinkt werden.

Gruß Ralf

Thomas Barth
Administrator
Beiträge: 90
Registriert: So 5. Apr 2015, 21:46
Wohnort: Frankfurt/M
Kontaktdaten:

Re: Tipps uns Tricks zu Komponenten

Beitrag von Thomas Barth » Do 22. Okt 2015, 19:36

guck doch einfach mal in der map file.
Meistens wird sowas wegoptimiert.

Code: Alles auswählen

P_M_DERIVE(T_ALG.E_BH) := UC_16S_EN_16NS (TDB.T_ENTIER_16S
                                   ((1.0/C_M_LSB_BH) *
                                   G_M_INFO_DERIVE(T_ALG.E_BH)))

Reiner W.
Beiträge: 112
Registriert: Di 7. Apr 2015, 11:43

Re: Tipps uns Tricks zu Komponenten

Beitrag von Reiner W. » So 25. Okt 2015, 18:22

@Ralf: -ffunction-sections in Kombination mit -Wl,--gc-sections sind genau die Optionen, die dafür sorgen, dass unused functions gelöschte werden und die Build Settings Schalter setzen genau die.
Der Unterschied ist beträchtlich, auch wenn ich keine eigene unused function einfüge.

@Thomas: Auf die Option -Wunused-function reagiert er nicht ;-( Dachte ich bekomme dann unbenutzte Funktionen angezeigt.
Reiner W.

RA1981
Beiträge: 38
Registriert: Do 23. Apr 2015, 07:54

Re: Tipps uns Tricks zu Komponenten

Beitrag von RA1981 » Mi 28. Okt 2015, 17:55

Hi Reiner,
Reiner W. hat geschrieben:Auf die Option -Wunused-function reagiert er nicht ;-( Dachte ich bekomme dann unbenutzte Funktionen angezeigt.
Aber nur wenn sie nicht vorher wegoptimiert wurden - hast du die Funktion dann auch abgeschaltet? Ansonsten wäre es m.E. logisch, dass er die nicht benutzten Funktionen raushaut und dann gibt's ja nix mehr zu warnen...

Ralf

Reiner W.
Beiträge: 112
Registriert: Di 7. Apr 2015, 11:43

Re: Tipps uns Tricks zu Komponenten

Beitrag von Reiner W. » Mi 28. Okt 2015, 18:07

Hi Ralf,
Aber nur wenn sie nicht vorher wegoptimiert wurden - hast du die Funktion dann auch abgeschaltet?
Habe extra ein Testszenario mit einer unused-function gefahren. Am Speicherverbrauch kann ich gut sehen, dass unused functions wegoptimiert werden oder eben nicht. Nur eine Warnung bekomme ich nicht. Im Gegensatz zu unused variables.
Muss der Sache mal auf den Grund gehen.
Reiner W.

Thomas Barth
Administrator
Beiträge: 90
Registriert: So 5. Apr 2015, 21:46
Wohnort: Frankfurt/M
Kontaktdaten:

Re: Tipps uns Tricks zu Komponenten

Beitrag von Thomas Barth » Fr 30. Okt 2015, 14:55

Reiner W. hat geschrieben:@Thomas: Auf die Option -Wunused-function reagiert er nicht ;-( Dachte ich bekomme dann unbenutzte Funktionen angezeigt.
Ich meinte eher das du mal in der map file gucken sollst wo die funktionen hin gelinkt wurden. Wenn die Groesse der Funktion 0 ist oder nicht in der Datei auftaucht dann wurde sie wegoptimiert.

Code: Alles auswählen

P_M_DERIVE(T_ALG.E_BH) := UC_16S_EN_16NS (TDB.T_ENTIER_16S
                                   ((1.0/C_M_LSB_BH) *
                                   G_M_INFO_DERIVE(T_ALG.E_BH)))

RA1981
Beiträge: 38
Registriert: Do 23. Apr 2015, 07:54

Re: Tipps uns Tricks zu Komponenten

Beitrag von RA1981 » Mi 4. Nov 2015, 00:18

Hi Reiner,

sorry für die späte Antwort. Hab mir das mal angesehen. UnusedFunction bezieht sich auf statische Funktionen (also "static void FuncBlabla(void)". Nicht statische Funktionen sind immer öffentlich und daher kann GCC (mit den Standardeinstellungen) wohl nicht ermitteln, ob sie nicht doch verwendet werden (keine Ahnung warum) und spuckt deswegen keine Warnung aus.

Die gute Nachricht ist: es geht aber doch - die schlechte Nachricht ist: es hätte dann ggf (angeblich) auch Nachteile. Ich hab es mir nun nicht im Detail zu Gemüte geführt *schäm*, aber das hier erklärt das ganze ein bisschen bzw könnte einen ersten Ansatz bieten:

https://blog.flameeyes.eu/2008/01/today ... -variables

Würde mich freuen, wenn du auf diesem Weg weiterkommst und ggf auch Feedback gibst :D

Ralf

Antworten