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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren