Cortex M3 - daten im ROM

Gast #2661346
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
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
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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.