Forum: Mikrocontroller und Digitale Elektronik FT232H EEPROM -- wtf?


von Sven B. (scummos)


Lesenswert?

Hi,

ich hab mir ein Demoboard für den FTDI FT232H gekauft (UM232H). Ich 
würde gern die C-Bus Pins als GPIOs nutzen und ein- und ausschalten. 
Anscheinend muss man die dazu erstmal im EEPROM umkonfigurieren. Na gut, 
wenn's unbedingt sein muss, dachte ich mir.

Hab ich also mit dem ftdi_eeprom (aus der offiziellen libftdi!) ein 
bisschen rumgefrickelt.
Erstmal ist die Beispiel-Konfigurationsdatei, die auch unter Linux 
geshippt wird, wohl nur für Windows sinnvoll. Toll.
Dann hab ich mir gedacht, ok, machst du erstmal ein Backup vom EEPROM.
 ftdi_eeprom --read-eeprom test.conf
Hat eine Datei mit 256B geschrieben, sah sinnvoll aus.

Dann hab ich in meiner test.conf ein paar Zeilen aus dem Internet 
zusammengeklaubt, die die C-Bus Pins als GPIO konfigurieren sollen und 
den EEPROM neu geschrieben.
Dann waren natürlich erstmal die LEDs auf dem Board nicht mehr 
funktional (irgendwie klar, weil die standen in meiner 
Konfigurationsdatei nicht richtig drin, woher auch). Chip wird aber noch 
erkannt. Jetzt möchte ich das natürlich erstmal reparieren.

Erstmal wollte ich den alten EEPROM nochmal draufschreiben, um zu sehen 
dass das geht. Natürlich kann ftdi_eeprom das nicht (wtf).

Dann hab ich mir den Backup-EEPROM mal angeschaut und festgestellt, dass 
das nicht der EEPROM-Inhalt vom Chip ist, sondern nur meine 
Konfigurationsdatei in binär. Also kein Backup. wtf??

Dann wollte ich halt selber den Wert von dem entsprechenden C-Bus Pin so 
setzen dass er die Power-LED ist. Steht ja im Datenblatt vom Modul, 
welcher das ist. Ich weiß aber a) nicht welcher Wert für "Power-LED" 
steht (steht nicht im Datenblatt) und b) kennt ftdi_eeprom wenn man so 
den Quellcode liest den entsprechenden Pin (ACBUS8) überhaupt nicht, das 
geht nur bis 5. wtf???

Dann dachte ich mir "okay, egal, ich boote mein Windows und nehme das 
offizielle FTDI klickbunt-Tool und schalte die LEDs wieder an, muss ich 
ja nur einmal machen". Treiber installiert, Tool installiert, gestartet, 
erkennt keine Devices. Seufz.

Bin ich nun zu blöd dafür, oder ist die Situation wirklich so 
schrecklich? :/

Um mal konstruktiv zu sein:
 - Gibt es irgendwo eine Doku, welches Bit im EEPROM für was steht und 
welcher Wert was festlegt?
 - Gibt es irgendwo den Original-EEPROM zum Vergleichen?
 - Funktioniert das Windows-Tool bei irgendjemandem?
 - Kann ich die C-Bus Pins überhaupt als I/Os benutzen und trotzdem noch 
UART machen? Das sah nämlich auch nicht unbedingt so aus.

Bin für jeden Rat dankbar.
Viele Grüße,
Sven

von Sven B. (scummos)


Lesenswert?

Ok, man muss den EEPROM mit ftdi_eeprom löschen:
  ftdi_eeprom --erase-eeprom test.conf

Dann geht das Windows-Tool und damit kann man den Kram auch 
umkonfigurieren. Alles ziemlich meh, trotzdem.

Mein eigentliches Problem ist aber noch unklar: Kann ich irgendwie 
irgendwelche GPIOs benutzen ohne dass der UART weg ist? Wenn ja, 
irgendeine Idee wie?

von Andreas (Gast)


Lesenswert?

Hallo  Sven,

eine Beschreibung vom EEPROM für den FT232H gibt es von FTDI.
Allerdings mußt Du dafür ein NDA unterzeichnen.

Viele Grüße
Andreas

von Falk B. (falk)


Lesenswert?

Warum nicht einfach MProg bzw. dessen Nachfolger nutzen? Dort kann man 
das alles spielend per GUI einstellen. Zu einfach?

von Bernd K. (prof7bit)


Lesenswert?

Andreas schrieb:
> eine Beschreibung vom EEPROM für den FT232H gibt es von FTDI.
> Allerdings mußt Du dafür ein NDA unterzeichnen.

Damit verhindern sie bestimmt wirkungsvoll Fälschungen des Chips. Sehr 
sinnvolle Maßnahme. Alle haben Verständnis für die Unannehmlichkeiten so 
eines albernen NDA-Kindergartens für so einen hochgeheimen Pipifax wie 
eine Handvoll alberner Konfigurationsbytes zum Konfigurieren der 
Blinkenlights :-/

von Sven B. (scummos)


Lesenswert?

Andreas schrieb:
> eine Beschreibung vom EEPROM für den FT232H gibt es von FTDI.
> Allerdings mußt Du dafür ein NDA unterzeichnen.

Danke für den Hinweis, Andreas. Das soll ja wohl ein Witz sein. Was für 
ein Kindergarten.

MProg und dessen Nachfolger laufen halt nicht auf Linux, deshalb war das 
für mich erstmal nicht die Methode der Wahl. Und gingen ja dann auch 
unter Windows erstmal nicht, bis man den EEPROM gelöscht hat. Naja, nun 
tut es ja, und die Frage ist nur noch ob man es schafft einen GPIO zu 
toggeln ohne dass der UART verschwindet ... es sieht irgendwie nicht so 
aus, das ist echt etwas enttäuschend.

von Jim M. (turboj)


Lesenswert?

Sven B. schrieb:
> Ich
> würde gern die C-Bus Pins als GPIOs nutzen und ein- und ausschalten.
> Anscheinend muss man die dazu erstmal im EEPROM umkonfigurieren.

Unter Linux IMO nicht. Mann muss nur die korrekten Bits zum FTDI 
bringen, etwa mit Libusb oder Libftdi oder ähnlichem.

Sven B. schrieb:
> ob man es schafft einen GPIO zu
> toggeln ohne dass der UART verschwindet

Obacht: Ein FT232H hat AFAIK nur 1 Interface. Das kann entweder als 
/dev/ttyUSBx benutzt werden oder die Anwendung toggelt GPIOs, denn für 
letzteres muss IMO das ttyUSBx Device vom Kernel abgekoppelt werden.

Man könnte - falls die Doku vollständig ist - ein Programm schreiben das 
GPIOs toggeln und via UART Daten übertragen kann ohne dabei über das tty 
Device zu gehen. Keine Ahnung ob LibFTDI das out-of-the-box kann, z.B. 
bei OpenOCD haben sie MPSSE direkt via LibUSB programmiert.

von Sven B. (scummos)


Lesenswert?

Hmm. Was sollen dann die zwei Ports? Es gibt ja den ACBUS und den ADBUS 
...

Das Datenblatt sagt auch:
> It is possible to use this mode while the UART interface is being used,
> thus providing up to 4 general purpose I/O pins which are available
> during normal operation.

Wenn ich in libftdi aber set_bitmode(..., BITMODE_CBUS) aufrufe, ist das 
UART-Device weg ... zumindest aus dem Kernel.

Naja, ich werde mal noch ein bisschen herumprobieren. Danke für die 
Hinweise soweit.

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.