Forum: Mikrocontroller und Digitale Elektronik Media-FIFO für FT81x?


von Rudolph (Gast)


Lesenswert?

Hi,

ich versuche gerade, den Media-FIFO zu benutzen aber das funktioniert 
weder auf einem FT813, noch auf einem FT810 wie erwartet.

Im FT81X_Series_Programmer_Guide.pdf findet sich sowas:
1
cmd_mediafifo(0x100000 - 65536, 65536);//0x100000 is the top of RAM_G
2
printf("R=%08xW=%08x\n",rd32(REG_MEDIAFIFO_READ),rd32(REG_MEDIAFIFO_WRITE));

Mit dem Hinweis:
"prints:
000f000 00f000"

Also cmd_mediafifo() sollte die Register setzen.

Ich mache gerade sowas hier:
1
#define MEM_FIFO 0x000ef000
2
...
3
ft800_memWrite32(REG_MEDIAFIFO_READ, MEM_FIFO);
4
ft800_memWrite32(REG_MEDIAFIFO_WRITE, MEM_FIFO);
5
6
ft800_cmd_mediafifo(MEM_FIFO, 65536);
7
ft800_cmd_execute();
8
while(ft800_busy() == 1);
9
10
mediafifo_read = ft800_memRead32(REG_MEDIAFIFO_READ);

Und in der Variable mediafifo_read ist dann eine Null.
Wenn ich nur die letzte Zeile benutze ist in der Variable auch eine 
Null, das macht auch Sinn, das ist Reset-Default.
Nehme ich die mittleren drei Zeilen raus ist das Ergebnis "EF000".

Das Ziel ist eigentlich, die OPT_MEDIAFIFO für cmd_loadimage() zu 
benutzen.
Nur bleibt cmd_loadimage() aber einfach hängen mit OPT_MEDIAFIFO.

Da sich sonst keinerlei Funktionen finden mit dem "FIFO" irgendwas zu 
machen, zum Beispiel beschreiben, gehe ich davon aus, dass das nur ein 
reservierte Speicher-Bereich sein soll.

cmd_loadimage() müsste sich doch eigentlich bei der Option nur die 
Adresse aus REG_MEDIAFIFO_READ holen und von da lesen, statt auf Daten 
zu warten.

Und so steht das doch eigentlich auch auf der Seite von FTDI:
"CMD MEDIAFIFO specifies an area of main memory to use as a FIFO for 
JPG, AVI and PNG loading"

Warum funktioniert das dann nicht??

von Rudolph R. (rudolph)


Lesenswert?

Nix dazu ist aber dünn, die FT8xx sind wohl immer noch etwas exotisch.

von gueat1 (Gast)


Lesenswert?

frag mal hier nach

gameduino2.proboards.com/board/8/gd2-library

die kennen sich damit aus ;)

von Rudolph R. (rudolph)


Lesenswert?

Hmm, ja okay, versuche ich dann auch mal.

Der Gameduino2 basiert allerdings noch auf einem FT800 und dieser kennt 
den Media-FIFO noch gar nicht.

von aaa2 (Gast)


Lesenswert?

gameduino2.proboards.com/thread/310/ft813-gd2-lib

von aaa2 (Gast)


Lesenswert?

hier steht bestimmt drin was du suchst ;)

www.mediafire.com/file/us0h1zpezob9bq8/GD2+FT80X_FT81X+Riverdi+Shield.ra 
r

www.mediafire.com/file/lis2b8ilpd9y1i5/GD2+for+FT813.rar

von Rudolph (Gast)


Lesenswert?

aaa2 schrieb:
> hier steht bestimmt drin was du suchst ;)

Nein, nicht so direkt.
Nur CMD_MEDIAFIFO zu implementieren bedeutet ja nicht, dass das auch was 
sinnvolles auf dem FT81x macht und dann noch mit CMD_LOADIMAGE zusammen.

Ich wusste auch, dass die GD2-Lib um Support für die FT81x erweitert 
wurde, das heisst aber noch lange nicht, dass jemand die speziellen 
Fähigkeiten der FT81x wirklich benutzt, vor allem nicht ohne dazu 
passende Hardware.

Wäre die Frage, ob das überhaupt schon mal jemand erfolgreich 
ausprobiert hat, dann hätte ich gerne mal Beispiel-Code dafür.

Meine eigene Library läuft soweit ja auch und sogar mit dem Arduino.

Zu dem Forum bekomme ich keinen Zugang, die Mail mit dem 
Aktivierungs-Code kommt einfach nicht bei mir an, wobei ich Zweifel 
habe, dass die überhaupt raus geht.

Auf eine Anfrage im CLEO Forum wurde mir nahegelegt mich noch mal direkt 
bei FTDI zu melden, da bin ich mal gespannt ob diesmal eine Reaktion 
erfolgt.

von x20011 (Gast)


Lesenswert?

Gibt es schon eine Lösung zu dem MediaFiFo Problem?

von Rudolph (Gast)


Lesenswert?

Ja, gibt es.
Wie verlinkt man hier auf einen bestimmten Beitrag? :-)

Beitrag "FT800 / FT810 Library"
27.03.2017 17:51

Auf das GD2 Forum habe ich bis heute keinen Zugriff, tja.
Von FTDI habe ich dann zwar relativ flott Support bekommen, das war aber 
noch nicht endgültig die Lösung.

Kurz gesagt ist die Dokumentation von FTDI falsch, die stellen das so da 
als ob REG_MEDIAFIFO_WRITE und REG_MEDIAFIFO_READ absolute Adressen 
wären, das sind aber nur Offsets - eine Überarbeitung soll folgen.

Im Grunde funktioniert das genau wie der Kommando-FIFO, man schreibt von 
Basis-Adresse+REG_MEDIAFIFO_READ und teilt dem Co-Pro über 
REG_MEDIAFIFO_WRITE mit wo das Ende der Daten ist.
Da das aber kein fest zugewiesener Speicher ist, kann sich der FT8xx 
beim Beschreiben nicht automatisch um den Adress-Überlauf kümmern, da 
muss man selber drauf aufpassen.

Was ich jetzt noch nicht gemacht habe ist dafür Support-Code zu 
schreiben.

Vorzugsweise würde ich auch auf das Gefummel mit dem Überlauf verzichten 
wollen und nach jedem Gebrauch REG_MEDIAFIFO_READ wieder auf Null 
setzen.
Hab aber noch nicht ausprobiert ob das funktioniert.

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.