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
> Wie kann ich das realisieren?
Indem Du das Array in ein eigenes Segment packst und per Linkerskript
dessen Adresse festlegst.
c legt dir nicht fest wo was steht.. das macht der linker... aja welcher compiler ? welcher prozessor? 73
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.
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.
@ Sebastian Was soll es eigentlich bringen wenn du das Array auf eine bestimmte Adresse festnagelst ?
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.
Sebastian wrote:
> Ich habe auf dem Demo Board einen großen externen Speicher.
Weiss der Compiler von diesem Speicher?
Wenn nein, dann kannst du das mit dem Pointer so machen.
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.
>Der Compiler arbeitet aber unetnlich lange.
Der Compiler ? Oder meinst du das das Programm sich aufhängt ?
Ne der Compiler versucht aus dem Quekkcode ein Programm zu erzeugen
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?
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.