Forum: Mikrocontroller und Digitale Elektronik Viel Arbeitsspeicher für Bildverarbeitung benötigt


von Max M. (maxmicr)


Lesenswert?

Ich möchte gerne eine Grafikanwendung auf einem µC betreiben. Die 
erzeugten Bilder sollen auf einem SPI-Display (z.B. dem hier: 
https://www.ebay.de/itm/2-4-SPI-TFT-LCD-Display-2-4-Inch-Touch-Panel-LCD-ILI9341-240x320-5V-3-3V/201950756194) 
dargestellt werden. Nach meiner Rechnung benötige ich für den 
Pixelbuffer (R, G, B) mindestens 1.84 Mbit RAM.

Die Pixeldaten müssen ständig im Speicher gehalten werden, da das 
Ergebnis einer vorherigen Berechnung für die Nächste benötigt wird.

Als "Machbarkeitsstudie" wollte ich das auf einem 8-Bit Controller 
erledigen. Das Programm läuft im normalen RAM des µC und bei Bedarf 
werden die 3 Byte aus dem externen RAM geladen, verarbeitet und wieder 
zurückgeschrieben. Nach der Verarbeitung werden sie außerdem an das 
Display zur Darstellung gesendet.

Bei Mouser gibt es da jetzt nicht so eine große Auswahl (eigentlich nur 
einen, wenn man bedenkt, dass der andere SRAM nicht verfügbar ist): 
https://www.mouser.de/Semiconductors/Memory/SRAM/_/N-4bzpt?P=1z0w12pZ1z0y176&pop=3i6n7

Könnte es damit klappen oder gibt es günstigeren, externen RAM, mit dem 
ein 8-Bit µC noch umgehen kann?

von Stefan F. (Gast)


Lesenswert?

Du hast Dir da den falschen Mikrocontroller ausgesucht. Derart viele 
Daten kann man damit theoretisch verarbeiten, es wird aber sinnlos 
kompliziert. Schon alleine deswegen, weil kein aktueller 8bit 
Mikrocontroller so viel RAM direkt adressieren kann.

Tue Dir das nicht an, es sei denn du musst für irgend eine Sünde Buße 
tun.

Nimm lieber einen Mikrocontroller, der von Hause aus genug RAM enthält. 
Zum beispiel einen STM32F676 
(http://www.st.com/en/microcontrollers/stm32f7x7.html?querycriteria=productId=LN1998).

Entsprechende Entwickler-Boards samt Debugger bekommt man fast 
geschenkt: 
https://www.amazon.de/STM32-ST-NUCLEO-F767ZI-Nucleo-Development/dp/B072MMZZBK/ref=sr_1_fkmr1_2?ie=UTF8&qid=1522746515&sr=8-2-fkmr1&keywords=stm32f407+nucleo

von Nop (Gast)


Lesenswert?

Max M. schrieb:

> dargestellt werden. Nach meiner Rechnung benötige ich für den
> Pixelbuffer (R, G, B) mindestens 1.84 Mbit RAM.

Den Buffer kannst Du auch mit 8 Bit pro Pixel betreiben, indem Du für R 
und G je drei Bit (Augenempfindlichkeit) und B 2 Bit spendierst. Oder 
gleich monochrom und 1-2 Bit pro Pixel. Zudem kannst Du Quadrate von 
2x2, 3x3 oder 4x4 Pixeln auch als ein logisches Pixel behandeln.

Für eine Machbarkeitsstudie wär's vielleicht gut genug?

von Stefan F. (Gast)


Lesenswert?

> Zum beispiel einen STM32F676

Sorry, sollte STM32F767 heissen

von Max M. (maxmicr)


Lesenswert?

Stefan U. schrieb:
> weil kein aktueller 8bit
> Mikrocontroller so viel RAM direkt adressieren kann.

Deswegen der verlinkte SPI-RAM, damit geht das ja (wenn auch viel 
langsamer).

Nop schrieb:
> Für eine Machbarkeitsstudie wär's vielleicht gut genug?

Soweit ich mich jetzt nicht verrechnet habe, käme ich immer noch auf 
mindestens 75 kBit, und ein Farbdisplay im S/W-Modus zu verwenden, 
naja...
Und bei den restlichen Vorschlägen scheint ein externer RAM auch 
unumgänglich.

Das spannende ist, wenn man sowohl das Display als auch den RAM per SPI 
ansteuert, man gerade mal 5 I/Os benötigt, eigentlich nur 4, wenn man 
vom Display nichts lesen will.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@Max MMM (maxmicr)

>dargestellt werden. Nach meiner Rechnung benötige ich für den
>Pixelbuffer (R, G, B) mindestens 1.84 Mbit RAM.

Das sind ~230kB RAM, ganz schön viel für einen 8-Bitter.

>Als "Machbarkeitsstudie" wollte ich das auf einem 8-Bit Controller
>erledigen.

Kann man machen. Such dir ein Board, das den Speicher schon drauf hat, 
z.B. das AVR Explained mit einem ATXmega. Ist zwar nicht ganz taufrisch, 
hat aber 8 Mbit Speicher drauf, den man leidlich brauchbar nutzen kann.

http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=ATAVRXPLAIN

Kriegt man gebraucht für wenig Geld, ich hab auch noch eins rumliegen.

>Bei Mouser gibt es da jetzt nicht so eine große Auswahl (eigentlich nur
>einen, wenn man bedenkt, dass der andere SRAM nicht verfügbar ist):
>https://www.mouser.de/Semiconductors/Memory/SRAM/_...

Naja, serielles SRAM ist schon SEHR exotisch, erst recht in der Größe. 
Prinzipiell ist es damit machbar, ob es schnell und schön ist, ist eine 
andere Frage.

>Könnte es damit klappen oder gibt es günstigeren, externen RAM, mit dem
>ein 8-Bit µC noch umgehen kann?

Was willst du denn da noch optimieren? Den Preis? Oder die Handhabung? 
Und warum soll es unbedingt ein 8-Bitter sein? Ein 32 Bitter ist für 
sowas deutlich besser geeignet, der kann 256kB RAM deutlich einfacher 
und schneller ansprechen und unter C ist es sowieso fast egal.

von Nop (Gast)


Lesenswert?

Max M. schrieb:

> Soweit ich mich jetzt nicht verrechnet habe, käme ich immer noch auf
> mindestens 75 kBit,

Gibt von STM auch Cortex-M4 mit 192 kByte internem SRAM, und das 
komplette Board mit Spannungswandler usw. kostet unter 20 Euro (Olimex 
H405). Perfekt, um mal eben schnell einen Prototypen zurechtzubasteln.

> und ein Farbdisplay im S/W-Modus zu verwenden, naja...

Nur für die Machbarkeitsstudie. Wieviel bräuchtest Du bei 1 Byte pro 
Pixel?

von A. B. (Gast)


Lesenswert?

Wozu eigentlich ein externes RAM? Der Display-Controller hat doch schon 
eins eingebaut. Das Auslesen geht zwar gemächlich, aber bei einem 
externen RAM ohne direkten Zugriff der CPU (mit externem Businterface, 
genügend Adressleitungen etc.) geht's wohl auch kaum so viel schneller 
...
Letztlich müssen die Daten ja sowieso in Display-RAM, also sind 
Geschwindigkeitsrekorde (bewegte Grafik) damit ohnehin nicht drin.

Und der Lesezugriff aufs Display-RAM geht auch gleich auf Frame-Basis, 
besonders bequem, wenn man Text anzeigen will.

von Dr. Sommer (Gast)


Lesenswert?

Stefan U. schrieb:
> Entsprechende Entwickler-Boards samt Debugger bekommt man fast
> geschenkt:

Da kann man auch direkt das STM32F746 Discovery nehmen. Das hat 8 MByte 
SDRAM und ein großes Touch-Display direkt an Bord. Das ist dank 
paralleler Ansteuerung auch viel schneller als SPI. Nicht ganz billig, 
dafür aber perfekt für solche Multimedia Geschichten und Hardware mäßig 
ist alles schon fertig. Außerdem ist ein Debugger, Stereo Audio Codec, 
Ethernet Interface, USB HS OTG Interface, USB FS OTG, und microSD Slot 
mit SDIO (viel schneller als SPI) Anbindung vorhanden.

von --- (Gast)


Lesenswert?

Vor droellfzig Jahren hatte hier mal jemand einen EDO-Riegel
an einen AVR geknueppert.
Das ist doch genau was du brauchst.
Platz ohne Ende.

Musst du mal nach suchen...

von Max M. (maxmicr)


Lesenswert?

Falk B. schrieb:
> Und warum soll es unbedingt ein 8-Bitter sein?

Ich mag es, die Grenzen von Hardware auszuloten.

Falk B. schrieb:
> Ein 32 Bitter ist für
> sowas deutlich besser geeignet, der kann 256kB RAM deutlich einfacher
> und schneller ansprechen und unter C ist es sowieso fast egal.

Welchen externen RAM würde man bei einem 32-Bit µC verwenden? Wie 
erfolgt das Adressieren / Ansprechen des externen RAMs? Ein SDRAM 
Interface oder so etwas müsste der Controller doch schon als 
Hardwaremodul dabei haben, oder?

Falk B. schrieb:
> Naja, serielles SRAM ist schon SEHR exotisch

Verwenden das die µC nicht als internes RAM (z.B. der STM32F103: 
http://www.st.com/en/microcontrollers/stm32f103c8.html)

von Dr. Sommer (Gast)


Lesenswert?

Max M. schrieb:
> Welchen externen RAM würde man bei einem 32-Bit µC verwenden?

SRAM oder SDRAM.

Max M. schrieb:
> Wie erfolgt das Adressieren / Ansprechen des externen RAMs?

Über die entsprechenden Datenleitungen.  Der Controller macht das in 
Hardware. Im Programm merkst du gar nicht ob eine Variable jetzt im 
internen oder externen RAM liegt (nur an der Geschwindigkeit). Wo sie 
landet, lässt sich über das Linker Script Steuern.

Max M. schrieb:
> Ein SDRAM Interface oder so etwas müsste der Controller doch schon als
> Hardwaremodul dabei haben, oder?

Jo, das SDRAM Interface der STM32 nennt sich "FMC". Das "FSMC" welches 
die kleineren STM32 haben kann keinen SDRAM.

von Dr. Sommer (Gast)


Lesenswert?

Max M. schrieb:
> Falk B. schrieb:
>> Naja, serielles SRAM ist schon SEHR exotisch
>
> Verwenden das die µC nicht als internes RAM (z.B. der STM32F103:
> http://www.st.com/en/microcontrollers/stm32f103c8.html)

Wie soll das denn gehen? Dann würde ja jeder Zugriff 32 Takte oder so 
brauchen. Das wäre ja super langsam.

von Falk B. (falk)


Lesenswert?

@Max MMM (maxmicr)

>> Und warum soll es unbedingt ein 8-Bitter sein?

>Ich mag es, die Grenzen von Hardware auszuloten.

Naja.

Beitrag "Re: Viel RAM am kleinen Controller"

>Welchen externen RAM würde man bei einem 32-Bit µC verwenden?

SRAM oder meistens eher SDRAM.

> Wie
>erfolgt das Adressieren / Ansprechen des externen RAMs?

So wie es im Datenblatt steht. Das macht der Controller allein, wenn er 
einmal richtig konfiguriert wurde.

> Ein SDRAM
>Interface oder so etwas müsste der Controller doch schon als
>Hardwaremodul dabei haben, oder?

Sicher.

>> Naja, serielles SRAM ist schon SEHR exotisch

>Verwenden das die µC nicht als internes RAM (z.B. der STM32F103:
>http://www.st.com/en/microcontrollers/stm32f103c8.html)

Ja, das ist SRAM, aber das ist weder seriell noch extern ;-)

von Axel S. (a-za-z0-9)


Lesenswert?

Max M. schrieb:
> Falk B. schrieb:
>> Und warum soll es unbedingt ein 8-Bitter sein?
>
> Ich mag es, die Grenzen von Hardware auszuloten.

Andere aber womöglich nicht so. Wundere dich also nicht, wenn du von den 
meisten hier den Rat bekommst, der Problemstellung angemessene Technik 
zu nutzen. Ungeachtet dessen kannst du es ja trotzdem tun. Nur halt 
allein.

>> Ein 32 Bitter ist für
>> sowas deutlich besser geeignet, der kann 256kB RAM deutlich einfacher
>> und schneller ansprechen und unter C ist es sowieso fast egal.
>
> Welchen externen RAM würde man bei einem 32-Bit µC verwenden? Wie
> erfolgt das Adressieren / Ansprechen des externen RAMs? Ein SDRAM
> Interface oder so etwas müsste der Controller doch schon als
> Hardwaremodul dabei haben, oder?

Im Normalfall würde man einen µC verwenden, der die benötigten ~256KByte 
RAM schon eingebaut hat. Sonst halt einen, der einen Memorycontroller 
für z.B. SDRAM mitbringt. STM baut sowas unter der Bezeichnung FMC 
(flexible memory controller) in einige Modelle ein.

Wenn du allerdings so auf 8-Bitter fixiert bist und viel RAM brauchst - 
warum dann überhaupt einen µC? Nimm doch eine 8-Bit CPU und stricke da 
RAM und Flash dran. Ist im Zweifel sogar weniger aufwendig (und 
schneller) als das RAM per GPIO an einen µC zu knüppern. Vom Z80 gibt es 
z.B. Nachfolger wie Z180 oder HD64180, die 1MB Speicher direkt 
adressieren können.

> Falk B. schrieb:
>> Naja, serielles SRAM ist schon SEHR exotisch
>
> Verwenden das die µC nicht als internes RAM

Nein. Warum sollte man auf einem Chip einen Flaschenhals in Form eines 
seriellen Interface zum RAM vorsehen? Leitungen sparen muß man 
eigentlich nur bei extern angebundenem Speicher. Und auch dann würde man 
das bevorzugt für Speicher verwenden, bei dem die Latenzzeit unkritisch 
ist. Etwa weil da ein Cache dazwischen ist.

: Bearbeitet durch User
von fchk (Gast)


Lesenswert?

Max M. schrieb:
> Könnte es damit klappen oder gibt es günstigeren, externen RAM, mit dem
> ein 8-Bit µC noch umgehen kann?

Du machst es Dir unnötig schwer.

Die ILI9341-Displays haben alle ihren Grafikspeicher dabei. Den kannst 
Du schreiben und lesen. Damit das möglichst schnell geht, nimmst Du 
einen Prozesor mit External Memory Interface, d.h. einen der externe 
Adress- und Datenleitungen hat und wo Du SRAM anschließen kannst. Der 
ILI9341 kann auch über einen externen Adress/Datenbus angesteuert 
werden, nur bei dem, das Du Dir ausgesucht hast, sind die Leitungen 
nicht herausgeführt. Es gibt aber auch andere, z.B. ebay #172388598203. 
Wenn Du unbedingt einen AVR verwenden musst, dann wäre ein 
Mega64*/128*/256* der Prozessor Deiner wahl, weil die eben genau einen 
solchen Adress/Datenbus haben, d.h. Du kannst mit einem Speicherzugriff 
auf den Controller zugreifen.

fchk

von tfrw (Gast)


Lesenswert?

xmega + sdram über ebi

von Olaf (Gast)


Lesenswert?

> Im Normalfall würde man einen µC verwenden, der die benötigten ~256KByte
> RAM schon eingebaut hat.

Ich kann nur dringend zu internem Ram raten. Gerade als Bastler. Einfach 
weil die Ansteuerung VIEL einfacher ist und man weniger EMV Probleme 
hat. Die Platine wird halt viel einfacher.

Schaut mal hier was moeglich ist wenn man einmal ueber seinen Horizont 
schaut:

https://www.renesas.com/en-us/docs/products/microcontrollers-microprocessors/rz/RZ-brochure.pdf

Olaf

von Falk B. (falk)


Lesenswert?

@Olaf (Gast)

>Ich kann nur dringend zu internem Ram raten. Gerade als Bastler. Einfach
>weil die Ansteuerung VIEL einfacher ist und man weniger EMV Probleme
>hat. Die Platine wird halt viel einfacher.

Das interessiert den OP keine Sekunde, wenn er sinnvollerweise ein 
fertiges Eval-Board kauft.

von dasrotemopped (Gast)


Lesenswert?

>> Und warum soll es unbedingt ein 8-Bitter sein?
>Ich mag es, die Grenzen von Hardware auszuloten.

ich habe vor ein paar Jahren auch mal mit den AVR 8-bittern herumgemacht 
und habe gedacht, Grafik und 8-bit muss doch gehen. Nach ein paar 
Experimenten bin ich auf den Trichter gekommen, Grafik braucht viel 
Speicher, damit man nicht ständig um irgendwelche Flaschenhälse 
herumprogrammieren muss. Konsequenz war der Xmega statt Atmega:
http://www.dasrotemopped.de/index.php?var=projekte&nr=12
Hat sich schnell herausgestellt, das das auch keine Lösung war, da zu 
langsam, immer noch Flaschenhals um bequem was mit Grafik zu machen.

Die Lösung ist das STM32F429i-disco, wenn man kein Board selbst bauen 
will.
http://www.dasrotemopped.de/index.php?var=projekte&nr=21
ILI9341, 8MB SDRAM, mehr als genug CPU Leistung und der Grafikspeicher 
liegt bequem im Adressbereich der CPU, für die Software transparent und 
leicht zu benutzen.
Mit dem BSP von STmicro kann man sofort loslegen, da die Hardware 
bereits initialisiert wird:
http://www.dasrotemopped.de/dateien/STM32F429i-DISCO_BSP_20170417.zip
Man kann sich also direkt seinem eigentlichen Ziel widmen statt 
Unzulänglichkeiten der gewählten Hardware zu umschiffen. Und preiswert 
ist das Disco Board auch noch.
Wer will kann natürlich auch einen Arduino, SPI SRAM und ein externes 
Display verwenden, aber jeder wie er mag ... was dem einen der Spatz 
ist, ist dem anderen seine Nachtigall.

von dasrotemopped (Gast)


Lesenswert?

vergessen: ATmega für die Grafik:
http://www.dasrotemopped.de/index.php?var=projekte&nr=9
Ohne ausreichend RAM eine Sackgasse für Grafik.

von Pandur S. (jetztnicht)


Lesenswert?

Bildverarbeitung ... was soll denn wie verarbeitet werden ? Ein Bisschen 
Zoom, ein Bisschen Pan, ein bisschen Filtern ?
Hat sich der Poster schon mal Gedanken ueber die Geschwindigkeit gemacht 
? Wie viele Operation da benoetigt werden ? Wieviele Memory zugriffe ?

Ich empfehle eine Simulation auf einem PC. Da kann man jeden Zugriff 
zaehlen. Und dann vergleichen mit der Verarbeitungsgeschwindigkeit. Ist 
irgendetwas in Richtung Interaktivitaet geplant?
Weshalb haben Smartphones Quadcore 32, resp Quadcore 64 bit Maschinen 
mit GHz Geschwindigkeit, und speziellem Grafikcoprozessor ... damit 
alles etwas flott reagiert.
Bedeutet auch mit einer 100MHz 32bit Maschine, mit direkt angebundenem 
zerowaitstate RAM ist alles noch schnarchlangsam.

von Schnitz (Gast)


Lesenswert?

>Ich mag es, die Grenzen von Hardware auszuloten.

Dann aber bitte auch konsequent sein und das Ganze in Brainfuck oder 
Whitespace programmieren.

von Stefan F. (Gast)


Lesenswert?

Wer so etwas mit einem AVR machen möchte hat eventuell den alten C64 im 
Sinn, der konnte mit 1MHz ganze Spiele ausführen.

Dabei vergisst man aber womöglich, dass der C64 einen eigenen 
Grafikprozessor hatte, der die bewegten Objekte vollkommen selbstständig 
dargestellt hat. Außerdem war die Programmierung von Grafik damals trotz 
dieses Prozessors eine ganz besonders aufwändige Herausforderung, mit 
der sich nur wenige Hobby-Programmierer befasst haben.

Wer meint, die Grafik vom C64 war toll, möge sich bitte nochmal 
Bildschirmfotos ansehen. Die Wahrscheinlichkeit ist hoch, dass man sie 
sehr viel schöner und detaillierter im Gedächtnis hat, als sie 
tatsächlich waren. Damals waren die Bilder mehr ein Hilfsmittel um die 
Phantasie anzuregen, welche Bilder im Kopf erzeugt. Es sind die Bilder 
im Kopf, an die wir uns heute noch erinnern.

von avr (Gast)


Lesenswert?

Die Frage ist was du willst. Es ist durchaus möglich bessere 
Grafikausgaben mit avrs zu machen - klar muss natürlich sein, dass mehr 
Arbeit in die Software gesteckt werden muss, als wenn man einfach einen 
Speicherbereich per dma an ein Display schickt. Bei der uzebox kann man 
gut sehen, was möglich ist. Unter Bildbearbeitung bezeichnet man 
übrigens in der Regel etwas anderes als du wahrscheinlich meinst.

von Name: (Gast)


Lesenswert?

Max M. schrieb:
> Und bei den restlichen Vorschlägen scheint ein externer RAM auch
> unumgänglich.

Nein. Es gibt µC mit genug RAM.

Der hier hat 32MByte:
https://www.digikey.at/de/product-highlight/m/microchip-technology/pic32mz-da-series-mcus?utm_adgroup=General&mkwid=shpOrGYPK&pcrid=251907372415&pkw=&pmt=b&pdv=c&gclid=EAIaIQobChMI1eymlY-g2gIVAxwbCh2ETQ5zEAAYASAAEgLr3vD_BwE

Die sind genau für derartige Dinge gebaut.

von dasrotemopped (Gast)


Lesenswert?

>Bedeutet auch mit einer 100MHz 32bit Maschine, mit direkt
>angebundenem zerowaitstate RAM ist alles noch schnarchlangsam.

so ein Cortex M4/7 kann schon was:
https://youtu.be/a1U5W8K1GMM

und auch der Hobbyprogrammierer kann mit einem STM32F429@180MHz flüssig 
animierte Grafik in 2D:
https://youtu.be/miGGfDeDFWU

hier wird der Unterschied von AVR zu ARM deutlich sichtbar:
https://youtu.be/_SmLlGAyRRc

3D Grafik ist da nicht mehr empfehlenswert, aber möglich. Ein ARM Axx 
mit integierter GPU ist da natürlich klar besser, aber verlässt den 
Bastel-/Hobbybereich.

Cortex-M zu ARM Axx verhält sich warscheinlich wie AVR zu ARM Cortex von 
der Geschwindigkeit her, aber vom Budget zu Leistung dürfte das 
STM32F429i-disc1 ungeschlagen sein.

von Patrick B. (p51d)


Lesenswert?

Ich würde hier auch auf einen grösseren Controller wechseln (z.B. 
STM24F429 Discovery für ~20Euro hat schon externes RAM und 
Touch-Display).

Da ersparst du dir viel Ärger:
- FMC zum ansteuern des externen RAM
- Display Controller (verschiedene RGB Formate...)
- DMAs

Dann kannst du dir auch im Speicher 2 LCD-Bilder ablegen: eines wird 
immer schön angezeigt und das andere bereitest du dir für die Anzeige 
vor. So hast du ein besseres Bild-Ergebnis (wird auch bei PC so gemacht, 
dass immer über 2 Buffer gearbeitet wird). Sobald dein neues Bild fertig 
ist, wechselst du den Speicher...

Solche Displays haben oft keinen eigenen Speicher und die Pixel müssen 
auch zyklisch aktualisiert werden. Wenn dein 8-Bitter nun RAM Lesen, 
Bild berechnen und gleichzeitig das Display ansteuern wird, wird's 
vermutlich eng.

von Alex G. (dragongamer)


Lesenswert?

Stefan U. schrieb:
> Wer meint, die Grafik vom C64 war toll, möge sich bitte nochmal
> Bildschirmfotos ansehen. Die Wahrscheinlichkeit ist hoch, dass man sie
> sehr viel schöner und detaillierter im Gedächtnis hat, als sie
> tatsächlich waren. Damals waren die Bilder mehr ein Hilfsmittel um die
> Phantasie anzuregen, welche Bilder im Kopf erzeugt. Es sind die Bilder
> im Kopf, an die wir uns heute noch erinnern.

Wobei das auch mit dem Ausgabemedium zutun hat.
Solch niedrige Auflösungen sehen auf einem CRT grundsätzlich besser aus, 
als auf einem TFT.
Liegt wahrscheinlich daran dass die alten CRTs zwangsläufig eine Art 
anti-aliasing hatten - schlicht nicht so scharf wie Flachbildschirme.

: Bearbeitet durch User
von Genau (Gast)


Lesenswert?

Stefan U. schrieb:
> Dabei vergisst man aber womöglich, dass der C64 einen eigenen
> Grafikprozessor hatte, der die bewegten Objekte vollkommen selbstständig
> dargestellt hat. Außerdem war die Programmierung von Grafik damals trotz
> dieses Prozessors eine ganz besonders aufwändige Herausforderung, mit
> der sich nur wenige Hobby-Programmierer befasst haben.

Die Grafik der 8-Bit-Rechner früher war durch ihr Konzept soetwas wie 
komprimiert. 2 Bit pro Pixel zeigten auf eine Referenz-Farb-Palette und 
ein Tile konnte wiederholt werden bzw. musste sogar weil die Tile-Karte 
nur 256 verschiedene Einträge zuliess.

Genaueres siehe:
http://www.dustmop.io/blog/2015/04/28/nes-graphics-part-1/

Die Mühe wurde belohnt indem die lahme CPU pro Bild nur noch wenige 
Bytes an Daten verschieben musste und schon lief das Spiel. Nur die 
Erstellung der Grafik war furchtbar und erforderte Grips. Den hatten 
(und haben) die Japaner aber zuhauf.

von Peter D. (peda)


Lesenswert?

Max M. schrieb:
> Ich mag es, die Grenzen von Hardware auszuloten.

Die meisten 8-Bitter können nur bis 64kB linear adressieren.

Ich kann Dir versichern, es macht keinen Spaß, den RAM in kleine 
Häppchen aufteilen zu müssen und viel Zeit und Code mit Pageumschaltung 
zu vergeuden. Insbesondere Berechnungen an den Pagegrenzen werden dann 
zur Qual und fehlerträchtig.
Zu DOS-Zeiten war das nötig, als die Grafikspeicher nicht mehr in den 
dafür vorgesehenen Bereich paßten. Jeder Grafikhersteller kochte da sein 
eigenes Süppchen der Pageumschaltung.
Daher waren viele Spiele im Grafikmodus oft nur im 320*240 Format.

: Bearbeitet durch User
von dasrotemopped (Gast)


Lesenswert?

>Die Grafik der 8-Bit-Rechner früher war durch ihr Konzept soetwas
>wie komprimiert. 2 Bit pro Pixel zeigten auf eine Referenz-Farb-Palette

das heisst beim STM32F429 CLUT "colour lookup table". 8-bit Index Werte 
zeigen auf eine Tabelle mit 256 RGB 32 bit Farbwerte.
Spart RAM und Speicherbandbreite bei der Nutzung von SDRAM bei hohen 
Auflösungen.

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
Noch kein Account? Hier anmelden.