RudolphRiedel / FT800-FT813

Multi-Platform C code Library for EVE graphics controllers from FTDI / Bridgetek (FT810, FT811, FT812, FT813, BT815, BT816, BT817, BT818)
MIT License
121 stars 56 forks source link

Flash support #97

Closed Jona2892 closed 10 months ago

Jona2892 commented 10 months ago

Hi,

ich habe einige Fragen zur Verwendung des Flash Speichers.

  1. Ist es möglich direkt vom Flash Videos und Bilder etc. abzuspielen/anzuzeigen, ohne dass diese in dem RAM_G geladen werden müssen, oder muss ich immer diesen "Umweg" gehen?

  2. Ist es möglich Daten direkt auf den Flash zu laden, ohne diese erst in RAM_G laden zu müssen? Z.B. Habe ich ein Video im Flash des esp32-s3 liegen und möchte das nun in den Flash des BT815 schieben. Das Video ist größer als der verfügbare RAM_G.

Lg Jonathan

RudolphRrr commented 10 months ago

1 Bei Bildern geht das direkte anzeigen nur für ASTC komprimierte Bilder. CMD_PLAYVIDEO kennt zumindest OPT_FLASH um Videos aus dem Flash abzuspielen, die Adresse setzt man vorher mit CMD_FLASHSOURCE - nur ausprobiert habe ich das nie

Wobei EVE ein wenig zickig bzgl. der Geschwindigkeit vom Flash ist, man darf nicht beliebig Bilder aus dem Flash anzeigen, das gilt auch für UTF-8 Fonts, solange genug Platz im RAM_G ist sollte man den auch nutzen.

2 Neben dem EVE_cmd_flashupdate() das ich in meinem Beispiel benutze gibt es auch noch EVE_cmd_flashwrite(). Ersteres geht über RAM_G, letzteres direkt. Wobei der Vorteil bei EVE_cmd_flashupdate() ist, dass man die Daten komprimieren kann, ich schicke die im Beispiel ja per EVE_cmd_inflate() ins RAM_G. Video-Daten sollten aber praktisch nicht komprimierbar sein und richtig, splitten müssten man das vor dem Komprimieren auch noch.

Ich würde aber so große Daten direkt per EVE-Asset-Builder in den Flash schreiben, entweder per USB/SPI Interface, oder mit einem Raspberry Pi Pico als USB/SPI Interface.

Jona2892 commented 10 months ago

Danke für die Hinweise! CMD_PLAYVIDEO, OPT_FLASH und CMD_FLASHSOURCE hat nach einigem hin und her und ausprobieren erfolgreich geklappt!

Ich würde aber so große Daten direkt per EVE-Asset-Builder in den Flash schreiben, entweder per USB/SPI Interface, oder mit einem Raspberry Pi Pico als USB/SPI Interface.

Ich frage mich an der Stelle, ob das auch ein Vorgehen für eine Serienproduktion wäre? Klar, wenn die Daten größer sind, als der Speicher der Host-MCU, dann hat man ja eigentlich keine andere Wahl. Bis dahin könnte man ja aber auch den Host-Speicher nutzen und hat somit nur einen Programmiervorgang in der Produktion. Fonts und kleinere GUI-Updates lassen sich sicher gut über OTA Update abbilden, größere Videos brauchen dann entsprechend mehr Zeit...

RudolphRrr commented 10 months ago

Har, Serie ist eine Frage des Budgets. :-) Oder mehr so ab wie viel Stück man für den einen Prozess mehr bezahlt als für einen anderen. Man kann Flash Chips ja auch schon programmiert kaufen, oder könnte die vor dem Bestücken programieren. Riverdi hat auf den Modulen z.B. eine extra Schnittstelle drauf um das Flash direkt programmieren zu können.

Nur bei Updates, vor allem noch OTA und großen Datenmengen, das ist in jedem Fall hässlich. Per Chip-Erase einen Flash Baustein vor dem Update zu löschen kann auch schon mal xx Sekunden dauern.

Wobei ich an der Stelle leider raus bin, meine höchste Stückzahl bisher war sechs oder so, wie das so ist wenn man im Prototyping unterwegs ist und nicht im Produkt-Geschäft.