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??