Hilfe bei Initialisierung eines großen Arrays

Gast #641356
Lesenswert?
• ▲
▼
Hallo @ all

Ich will ein Bild auf einem LCD-Display ausgeben. Dieses Bild liegt als 
BMP vor. Das Bild ist 320x240 Pixel groß genau wie das Dipslay. Deshalb 
will ich ein Array erzeugen, das die Pixelinformationen (die Farben) 
enthält. Demnach muss das Array 76800 Elemente besitzen.

mein Quellcode sieht wie folgt aus:

unsigned int Bilddaten[] = {0xA4232342, 0x32738237, 0x87628273, ...};

Nun soll das Array aber nicht in irgendeinen Speicherbereich geschrieben 
werden, sondern in einen bestimmten.

Die Startadresse ist 0x20005000;

Wie kann ich das realisieren?

Grüsse

Sebastian
Gast #641439
Lesenswert?
• ▲
▼
Ich verwende den IAR-Compiler (Demoversion). Als µC habe ich den 
AT91SAM9263.

Bei einem Pointer geht es aber. Ich kann ja einen Pointer erzeugen und 
ihm die Adresse, auf die der Pointer zeigt, zuweisen.
#641441
Lesenswert?
• ▲
▼
Sebastian wrote:
> Ich verwende den IAR-Compiler (Demoversion). Als µC habe ich den
> AT91SAM9263.
>
> Bei einem Pointer geht es aber. Ich kann ja einen Pointer erzeugen und
> ihm die Adresse, auf die der Pointer zeigt, zuweisen.

Und, was bringt dir das?
Nur weil du einen Pointer hast und dem eine Adresse zuweist, heist
das ja noch lange nicht, das dann der Speicherbereich an dieser
Adresse reserviert wird. (*)

Merke: Du musst mit dem System arbeiten, nicht dagegen!

Speicherreservierungen für globale Variablen macht nun mal der
Linker. Also muss man mit dem Linker arbeiten und ihm sagen, wo
man den einen bestimmten Speicherbereich gerne hin hätte.

(*) Ausnahme: wenn der Speicher in einem externen EEPROM liegt,
so dass du die volle Kontrolle über diesen Speicher hast und auch
Compiler/Linker nichts von diesem Speicher wissen, dann kann
man das so machen: Pointer und dem die Adresse zuweisen.
Gast #641445
Lesenswert?
• ▲
▼
Ich habe auf dem Demo Board einen großen externen Speicher. Dort kann 
ich ein großes Array anlegeden, dass dann meine Bilddaten enthält. Bis 
jetzt habe ich in diesen externen Speicher mit Hilfe einer For-Schleife 
einen Farbwert reingeschrieben. Somit erscheint auf dem Display ein 
großes Rechteck. Jetzt möchte ich aber ein Bild auf dem Display 
ausgeben. Hierzu wollte ich ich ein Array anlegen.
Gast #641453
Lesenswert?
• ▲
▼
Der  Compiler arbeitet aber unetnlich lange. Ich habe ein For.Schleife 
erzeugt, die Adresse x den 1. Wert schreibt, dann die Adresse 
incrementiert und anschließend den nächsten Wert reingeschriebn. Dafür 
braucht der Compiler unendlich lange.
#641509
Lesenswert?
• ▲
▼
Sebastian wrote:
> Ne der Compiler versucht aus dem Quekkcode ein Programm zu erzeugen

Da der Compiler nichts von diese Speicher weiss, musst du dir
was anderes ausdenken, wie du dein Bild dorthin bekommst.

Oder versuchst du gerade dieses: Ein Programm zu schreiben
welches diesen externen Speicher mit dem Bild lädt?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.