IAR Array im Flash

Gast #1726954
Lesenswert?
• ▲
▼
Hallo Jörg,

gut beobachtet, aber am Datentyp liegts nicht.

Also nochmal.

Wie definiere ich mit der IAR ARM Workbench einen initialisierten Array
im Flash an einer bestimmten Position?

Also so was in der Art:
1
const char p[4] @ 0x4000 = {0x00,0x01,0x02,0x04};

Gruß Sam
#1726966
Lesenswert?
• ▲
▼
Sam schrieb:

> Wie definiere ich mit der IAR ARM Workbench einen initialisierten Array
> im Flash an einer bestimmten Position?

Dein Compilerhandbuch bzw. die Online-Hilfe weiß da nichts drüber?

>
1
> const char p[4] @ 0x4000 = {0x00,0x01,0x02,0x04};
2
>

Gibts eine Fehlermeldung wenn du das versuchst?
Die Syntax sieht ja auf den ersten Blick nicht so schlecht aus.
Wie würde das denn ausschauen, wenn es kein Array wäre? Wo kommt denn 
dann die Adressangabe hin?
1
  char c @ 0x4000 = 'D';
2
  char c = 'D' @ 0x4000;

oder geht das überhaupt nicht?
Gast #1726996
Lesenswert?
• ▲
▼
Da gibts zwei Möglichkeiten:
1. Segment definieren im Linke file
dann
#pragma constseg=MYSEGMENT
const unsigned char Test;
#pragma constseg=default

2.
const unsigned char Test @ 0xa190  = 0x23;


Gruss
Peter
#1727002
Lesenswert?
• ▲
▼
Ziemlich sauber wäre es, wenn Du den gewünschten Speicherbereich 
(section) für das Array im Linker-Script definierst und dann irgendwie 
mit einem Pragma oder so im C-Code festlegst, dass das Array in dieser 
Sektion abgelegt werden soll.
In der Doku zu Deinem Compiler/Linker sollte stehen, wie sowas geht. Ich 
kann es leider auch nicht aus dem Ärmel schütteln, sonst hätte ich das 
gerne getan.
Gast #1727007
Lesenswert?
• ▲
▼
Hallo Karl Heinz,

der Compiler gibt mir folgende Fehlermeldung:

Error[Be022]: location address not allowed for initialized variables 
(writeable variables without the __no_init attribute)

Zur Meldung habe ich folgenden Link:

http://supp.iar.com/Support/?note=15461&from=search+result

Wenn ich nun exakt nach 'solution, part 3' vorgehe (also mit __root 
usw.), dann bekomme ich genau den gleichen Fehler, nämlich Error[Be022].

Gruß Sam

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.