Hallo Zusammen, erstaml sorry, ich habe diesen teil schon mal in nem anderen Forum gepostet, denke aber hier passt er besser her! ich benutze den GNU GCC Compiler und möchte folgendes realisieren: #include <avr/pgmspace.h> //WinAVR #include <progmem.h> //AVR-GCC const unsigned char code carbmp[]= { //Keil const rom unsigned char carbmp[]= { //Microchip C18 const unsigned char carbmp[]= { //SDCC prog_uchar carbmp[]= { //AVR-GCC, WinAVR Hab diese Möglichkeiten für andere Compiler gefunden, wie mach ich das mit GNU GCC? Möchte ein Konstantes Char Array im Flash meines Philips LPC2119 ablegen!
pgmspace.h und die darin betriebenen Dinge sind auf einem ARM wie dem LPC2119 vollkommen unnötig, da das eine von-Neumann-Maschine ist (im Gegensatz zur Harvard-Architektur des AVR). Es gibt also nur einen Adressraum, in dem sowohl RAM als auch ROM liegen - aber eben an unterschiedlichen Adressen. Daher sollte es genügen, wenn Du das Schlüsselwort "const" verwendest - probiere es aus und sieh Dir das Mapfile an bzw. bestimme zur Laufzeit die Speicheradresse Deines Arrays.
Sorry, bin noch nicht allzu erfahren. Const hab ich schon ausprobiert - hat nicht funktioniert. möcht erst mal sicher gehen, ob das Array wirklich im Flash abgelegt wird. wo kann ich mir das Mapfile ansehen? Oder wie find ich das sonst raus?
Ich zitier' mich mal: > bestimme zur Laufzeit die Speicheradresse Deines Arrays Im Datenblatt/Programmiermanual des LPC2119 ist die Speicherbelegung angegeben, welche Adressen liegen im RAM, welche im ROM, welche werden für Peripherie verwendet und welche liegen brach.
Das weiß ich auch, nur wo kann ich mir ansehen in welchem Speicherbereich mein Array liegt? Danke für deine Geduld!
printf("%08X", (unsigned int *) carbmp); Oder im Debugger nachsehen.
Wenns sich erledigt hat, kann man wenigstens die anderen Threads im anderen Forum abschließen ("hat sich erledigt"). Dann hätte ich mir die Arbeit mit der Prosa im anderen Thread mit gleichlautender Frage sparen können. Sorgt für Verdruss - da hilft auch kein vorauseilendes "Danke für die Geduld", wenn man gleichzeigt zeigt, dass man selbst keine hat, um erstmal auf eine Antwort zu warten.
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.