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!
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. :)
Mike S. schrieb: > Die Cortex haben nur einen Adressbus dafür aber 4G adressierbar :-) Intern ists auch Havard, aber von-Neumann Programmiermodell.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.