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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren