Cortex M3 - daten im ROM

Gast #2661346
Lesenswert?

Moin,

kann mir einer verraten, wie man Daten im Programmspeicher ablegen kann 
? Mein Problem ist, dass ich ca. 140kb Daten ablegen muss. Definiere ich 
ein uint8_t date[140*1024] array, dann legt der compiler natürlich alles 
im RAM ab.

Bei den AVR's gibt es die Möglichkeit, PROGMEM zu definieren und später 
die xxx_P Funktionen zu nutzen - sowas muss es doch auch beim m3 geben 
?!

(Verwendet wird der gnu-gcc für arm)

Vielen Dank schonmal!
#2661507
Lesenswert?

Nima schrieb:
> Bei den AVR's gibt es die Möglichkeit, PROGMEM zu definieren und später
> die xxx_P Funktionen zu nutzen

Das ist die falsche Perspektive. Es gibt den Zwang bei Verwendung des 
avr-gcc PROGMEM nutzen zu müssen.

Der AVR ist die Ausnahme - bei MSP430, ARM, PIC32, Renesas RX, ... 
genügt ein const.

Im Zweifel bedarf es dann auch zwei Funktionen, je eine ohne und eine 
mit PROGMEM.

Es geht noch weiter: Z. B. kann der GCC konstante Strings optimieren: 
Duplikate werden nur 1x abgelegt, auch kann er Teilstrings optimieren: 
Bei "Hallo Welt" und "Welt" liegt nur "Hallo Welt" im ROM. Das geht aber 
nur "ohne PROGMEM".

Wohl mit einer der Gründe, warum Applikationen für AVR m. E. nach 
beträchtlich mehr Flash belegen im Vergleich zu den anderen 
Architekturen.
Persönliche Seite #2661554
Lesenswert?

Nima schrieb:
> Ja, das Teil ist schon nett - da will man keine AVR's mehr anfassen :)

AVRs sind Klasse für Einsteiger sowie für einen schnellen 
Lochbrettaufbau. Ich habe mit dem AVR im Wesentlichen µC und C 
gleichzeitig gelernt. Desweiteren lernt man gleich ressourcensparendes 
Programmieren :-)

Seit ein paar Jahren bin ich aber nur noch mit µVision, ULINK (pro) und 
Cortex-M3 (STM32, LPC1700) unterwegs, in meiner privaten Bastelei.
Einfach viel mehr Rechenpower und sehr viel angenehmeres Debugging.

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