Forum: Mikrocontroller und Digitale Elektronik Kreatives Chaos Code in Atmel Studio 6 portieren


von Micha (Gast)


Lesenswert?

Servus,

ich habe da eine Frage und zwar habe ich erfolgreich den Bootloader Code 
von Kreative Chaos ins Atmel Studio 6.2 importiert und mit dem 
CAN-Debugger von Kreatives Chaos getestet. Dabei habe ich das original 
HEX file von Kreatives Chaos für den Debugger benutzt. Nun muss ich, da 
die Hardware etwas anders ist, die Software von Debugger etwas anpassen. 
Ich habe alles soweit hingekriegt außer die Stelle mit prog_char und 
zwar nach langer Suche im Internet habe ich so verstanden, dass man 
prog_char durch constant_char ersetzen darf. Bin mir aber nicht 100% 
sicher, dass es richtig ist.

Somit darf man den Code:
static prog_char s_help[]     = "help";

So schreiben:
static const char s_help[]     = "help";

Ist das wirklich richtig? Ich habe leider Probleme mich mit dem 
CAN-Debugger zu verbinden und den Bootloader anzusprechen. Hat da jemand 
vielleicht schon was gemacht in Atmel Stufio 6.2?

Gruss Micha

von Micha (Gast)


Lesenswert?

Hallo,

hat niemand einen Plan oder einfach keine Lust zu antworten?
Sorry das ich so direkt Frage!

Gruss Micha

von Bastler (Gast)


Lesenswert?

prog_char wird irgend ein Makro sein, daß das Attribute für "im FLASH 
ablegen" versteckt. Damit ist es zwar quasi auch "static const", aber 
eben doch nicht ganz das gleiche. Ich vermute mal die Software ist in C 
ohne ++, dann kann man die EmbededC Erweiterungen des GCC nutzen.
1
static const __flash char s_help[]     = "help";
sollte genau das machen, was geplant war: ein String im FLASH ablegen.
Den kann man aber nur an Funktionen übergeben, die einen "char __flash 
*" oder einen universellen "char __memx *" erwarten. Zugreifen kann man 
dann auf die Daten ohne jegliche pgm_read*-Funktionen einfach per C 
Statements.
In C++ gibt's das leider nicht.
BTW, waren die CC-Sourcen nicht immer schon für GCC? Was mußte da 
portiere werden?

von Jürgen H. (Gast)


Lesenswert?

Bastler schrieb:
> BTW, waren die CC-Sourcen nicht immer schon für GCC? Was mußte da
> portiere werden?

Das liegt wohl an einer neueren Version der AVR-Libc. prog_char gilt als 
deprecated.

http://www.nongnu.org/avr-libc/changes-1.8.html

von Micha (Gast)


Angehängte Dateien:

Lesenswert?

Bastler, Jürgen H. danke für die Rückmeldung.

Der Fehler ist jetzt weg, jetzt kriege ich aber einen anderen Fehler. 
Siehe Bild. Kann jemand damit was anfangen?

Gruss Micha

von Peter (Gast)


Lesenswert?

Versuchs mal mit PROGMEM statt __flash.

http://www.nongnu.org/avr-libc/user-manual/pgmspace.html

von Falk B. (falk)


Lesenswert?

Mach es so.
1
static const char s_help[] PROGMEM = "help";

von Falk B. (falk)


Lesenswert?

@ Micha (Gast)

>Der Fehler ist jetzt weg, jetzt kriege ich aber einen anderen Fehler.
>Siehe Bild. Kann jemand damit was anfangen?

Schon mal überlegt, dass man die Fehlermeldung aus dem Fenster als TEXT 
kopieren und hier reinkopieren kann?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.