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?