Forum: Mikrocontroller und Digitale Elektronik Cortex M3 - daten im ROM


von Nima (Gast)


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!

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

1
const uint8_t date[140*1024]
So einfach kann die Welt sein.

mfg

von Mike R. (thesealion)


Lesenswert?

und besondere Funktionen zum lesen brauchst du auch nicht, da es nahezu 
egal ist ob du auf Flash oder RAM zugreifst. Die Cortex haben nur einen 
Adressbus und das macht einiges einfacher. :)

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Mike S. schrieb:
> Die Cortex haben nur einen Adressbus
dafür aber 4G adressierbar :-)

Intern ists auch Havard, aber von-Neumann Programmiermodell.

von Nima (Gast)


Lesenswert?

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

Danke für die Info!

von Roland H. (batchman)


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.

von Random .. (thorstendb) Benutzerseite


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.

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.