Forum: Compiler & IDEs Wegoptimieren abschalten?


von Peter D. (peda)


Lesenswert?

AVR-GCC 4.3.2

Ich lege im Flash eine Kennung (String) ab, damit ich im Hexfile sehen 
kann, was für ein Programm das ist.

Ich würde aber auch gerne die Optimierung "--combine -fwhole-program" 
verwenden.

Kann ich den String irgendwie vorm Wegoptimieren schützen?
Er wird in der Software nicht verwendet.


Peter

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

__attribute__((used))

von Peter D. (peda)


Lesenswert?

Jörg Wunsch schrieb:
> __attribute__((used))

Danke,

Peter

von rotuA (Gast)


Lesenswert?

> Ich lege im Flash eine Kennung (String) ab, damit ich im Hexfile
> sehen kann, was für ein Programm das ist.
Interessante Idee, diese Kennung musst du dann aber im Hexeditor suchen, 
oder kannst du (man) steuern, wo sie im Flash landet?

von Peter (Gast)


Lesenswert?

Ich würde die "Kennung" eh jedesmal beim Aufstarten über die UART 
rausspucken, dann ist sie so  oder so used auch ohne ein extra 
Attribute.

von Simon K. (simon) Benutzerseite


Lesenswert?

Vielleicht ist ja gar keine UART dran.

von faustian (Gast)


Lesenswert?

Naja, wenn ein Teil des Strings konstant und bekannt ist kann man ja 
grep verwenden ...

von Peter D. (peda)


Lesenswert?

Ohne irgendwelche Maßnahmen legt der AVR-GCC den String direkt nach der 
Interruptsprungtabelle ab, ist also leicht zu finden.

Für eine Plazierung woanders müßte man mal bei Bootloadererstellung 
nachgucken.

Ne UART oder ein LCD hat nicht jeder MC angeschlossen.


Peter

von Peter (Gast)


Lesenswert?

>Ne UART oder ein LCD hat nicht jeder MC angeschlossen.

Bei mir schon! Nicht immer für den Anwender oder für das Endprodukt 
genutzt, aber für mich als Entwickler zum testen und debuggen!

von Simon K. (simon) Benutzerseite


Lesenswert?

Peter schrieb:
>>Ne UART oder ein LCD hat nicht jeder MC angeschlossen.
>
> Bei mir schon! Nicht immer für den Anwender oder für das Endprodukt
> genutzt, aber für mich als Entwickler zum testen und debuggen!

Es gibt aber auch AVRs ohne UART Hardware Einheit, bzw. wo keine Pins 
mehr frei sind.

Das Platzieren müsste man mit einer neuen section machen. Das Array 
bekommt dann mittels attribute den Section-Name mitgeteilt. Dem Linker 
sagt man dann noch wo die Section liegen soll, da packt er es dann hin.

von rotuA (Gast)


Lesenswert?

> Ohne irgendwelche Maßnahmen legt der AVR-GCC den String direkt nach der
> Interruptsprungtabelle ab, ist also leicht zu finden.
>
> Für eine Plazierung woanders müßte man mal bei Bootloadererstellung
> nachgucken.
Ah, danke für die Info.
Ich habe gerade ein wenig Stress mit meinem usbprog, mit deiner Idee, 
kann ich den Flash wieder auslesen und zumindest sehen, ob er überhaupt 
geschrieben hat.

rotuA

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.