mikrocontroller.net

Forum: Compiler & IDEs Wegoptimieren abschalten?


Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
__attribute__((used))

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch schrieb:
> __attribute__((used))

Danke,

Peter

Autor: rotuA (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht ist ja gar keine UART dran.

Autor: faustian (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: rotuA (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.