__DATE__ in Bootloader

Gast #3710239
Lesenswert?

Hallo Forum,

ich möchte gerne die GCC Defines für das Kompilierdatum auch im 
Bootloader benutzen, bin mir aber nicht sicher, ob ich es korrekt 
umgesetzt habe.
1
#include <avr/io.h>
2
#include <avr/pgmspace.h>
3

4
//gcc builtin defines:
5
static const char PROGMEM CompileDateP[12] = __DATE__;
6
static const char PROGMEM CompileTimeP[9]  = __TIME__;
7
static const char PROGMEM CompilerVerP[6]  = __VERSION__;
8

9
//In der Main vor der Endlosschleife einmalig:
10
unint8_t str[31];
11
unint8_t i;
12

13
//Read compile date and time
14
  str[ 0]='R';
15
  str[ 1]='C';
16
  str[ 2]='D';
17
  str[ 3]='T';
18
  str[ 4]=' ';
19
  for(i=0;i<=11;i++) {
20
    str[5+i] = pgm_read_byte_far(&CompileDateP[i]);
21
    //str[5+i] = '1';
22
  }
23
  str[16]=' ';
24
  for(i=0;i<=8;i++) {
25
    str[17+i] = pgm_read_byte_far(&CompileTimeP[i]);
26
    //str[17+i] = '2';
27
  }
28
  str[25]=' ';
29
  for(i=0;i<=5;i++) {
30
    str[26+i] = pgm_read_byte_far(&CompilerVerP[i]);
31
    //str[26+i] = '3';
32
  }
33

34
  ua_sendbuf((unint8_t*)str,31);

Prinzipiell erhalte ich die Ausgage, die ich erwarte.

Beim pgm_read_byte_far() bekomme ich allerding noch jeweils eine 
Warnung:
1
warning: cast from pointer to integer of different size

Wie bekomme ich die weg?
Und meine eigentliche Frage ist, ob ich das so machen kann, oder ob ich 
da evtl. Probleme mit meinem eigentlichen Programm bekommen kann?
Liegt z.B. CompileDateP wirklich im Flash des Bootloaderbereichs?
Gast #3710263
Lesenswert?

A. K. schrieb:
> Nur so nebenbei: Man kann sich das Leben auch mit dem Gesamtstring   ...
> [] = "RCDT " _DATE_ " " _TIME_ " " _VERSION_;
> erleichtern. Auch wenns nicht gleich ins Auge sticht, ist das doch nur
> EIN String.

Stimmt, das reicht hier im Prinzip völlig aus.
Danke für den Tipp.

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