AVR-GCC Versionsbezeichnung an Flash-Anfang ablegen

OP #3030807
Lesenswert?
• ▲
▼
Hallo,
ich würde gerne meine Versionsbezeichnung im Klartext im Flash ablegen 
(idealerweise am Speicheranfang).
Das würde beim Brennen helfen, mit einem kurzen Blick ins Binärfile, die 
gewünschte Version sicherzustellen.

Im Quellcode habe ich dazu eine Konstante deklariert:
1
const char version[] PROGMEM = "V1.01";

Weil ich diese aber im Programm nicht nutze, optimiert der Compiler 
(WinAVR-20100110, AVR-GCC V4.3.3) die Zeile vermutlich zurecht raus.

Wie kann ich das verhindern?
Kann ich den Versionstext auf einfache Weise vorne an den 
Flash-Speicheranfang setzen lassen?

Gruß, Jost
Persönliche Seite #3030873
Lesenswert?
• ▲
▼
Josef S. schrieb:
> Weil ich diese aber im Programm nicht nutze, optimiert der Compiler
> (WinAVR-20100110, AVR-GCC V4.3.3) die Zeile vermutlich zurecht raus.
>
> Wie kann ich das verhindern?

Ich schiesse jetzt mal so halbwegs aus der Hüfte und behaupte: Da wird 
nix wegoptimiert, das wäre ja fatal.

Falls Du das nicht glaubst, dann sieh doch einfach mit dem Editor Deines 
Vertrauens im binary nach... :-)
OP #3030882
Lesenswert?
• ▲
▼
Hallo Spess,
> Du weißt aber, das dort der Reset- und die Interruptvektoren liegen?
ja,
ich meinte mit "Anfang" halt weit vorne, damit ich im der 
Binärfile-Ansicht nicht nach unten scrollen muß.

Hallo  emperorl0ser,
das mit volatile habe ich auch gedacht und schon probiert:
1
volatile const char version[] PROGMEM = "V1.01";
- ohne Erfolg, wird trotzdem rausoptimiert.

Liegt es vllt. an meinen Compileeinstellungen?:
-mmcu=attiny2313 -Wall -gdwarf-2 -std=gnu99 -ffunction-sections 
-mtiny-stack -Os -funsigned-char -funsigned-bitfields -fshort-enums -MD 
-MP -MT

Linkereinstellungen:
 -Wl,--gc-sections  -Wl,--relax -Wl,

Gruß, Jost
#3030913
Lesenswert?
• ▲
▼
1
#include <avr/pgmspace.h>
2
#include "_version.h"
3

4
prog_uint8_t Version[] __attribute__((used));
5
prog_uint8_t Version[] = PROJECT_STRING ", "
6
                         "V:" REVISION_STRING ", "
7
       __DATE__ "\n";

An Anfang geht nicht, es kommt hinter die Vectortabelle, wenn es das 
erste File im Make ist.
Nimmt man eine Batch zum Compilieren (*.c) muß es der kleinste Filename 
sein, z.B. "_version.c".

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.