Guten Abend zusammen,
ich bin vor kurzem auf die IDE Eclipse umgestiegen, vorher nutzte ich
den Editor Geany. Ich programmiere in C für den ATmega32 in einem
kleinen Roboter.
Mein Sytem ist ein Debian/Wheezy und ich habe avr-gcc 4.7.2. In Eclipse
ist die C-Erweiterung und AVR-Unterstützung installiert.
Meine Software compilieren und flashen funktioniert soweit gut.
Jetzt zu meinem Problem:
Ich habe eine Struktur, die einige Elemente und Funktionspointer
enthält, in meiner Headerdatei deklariert:
1 | struct commands_s {
|
2 | uint8_t command; // stores the commandtag
|
3 | void (*p_command)(uint8_t *p_cmd_arglist); // function pointer linked with commandtag
|
4 | uint8_t number_of_args; // specifies the number of arguments
|
5 | };
|
In meinem Code initialisiere ich dann wie folgt:
1 | static const __flash struct commands_s s_cmd_list[] = {
|
2 | {0x01, &drive_both, 5},
|
3 | {0x02, &Led4_Off, 1},
|
4 | {0x03, &Led6_On, 1},
|
5 | {0x04, &Led6_Off, 1},
|
6 | {0x05, &Leds, 2}
|
7 | };
|
Wenn ich das "__flash" wegnehme, ist in Eclipse alles prima. Habe ich es
wie oben stehen, wird mir das als Syntax-Error angestrichen. Dann kann
Eclipse auch die Strukturelemente (z.B. s_cmd_list[i].p_command) im Code
nicht auflösen.
Unabhängig von der Fehlermeldung läßt sich der Code mit avr-gcc
-std=gnu99 in beiden Fällen compilieren und avr-size -C zeigt mir auch,
daß die Struktur nun nur im Flash liegt.
Vielleicht hat einer von Euch einen Hinweis, an welcher Stelle meine IDE
nochmal Zuwendung braucht.
MfG
Mullwark