Ich habe also ein Stück Hardware, das ich zurückentwickle. Ich glaube, ich habe einen UART auf dem Board gefunden. Ich habe ein FPGA angeschlossen, das nur Folgendes tut:
ExtTX <= PCRX;
PCTX <= ExtRX;
Auf diese Weise kann ich also theoretisch mit jeder Geschwindigkeit umgehen, die FTDI auf meinem FPGA kann (was ziemlich schnell ist). Also habe ich den Hardware-Teil abgedeckt. Wie kann ich nun unter Linux (oder Windows) herausfinden, wie hoch die Geschwindigkeit und die Stoppbits und andere Konfigurationsoptionen der seriellen Verbindung sein sollten?
Sie möchten die kürzeste Übergangs-Übergangszeit messen.
Dies wird Ihnen, vorausgesetzt, der Bus, den Sie betrachten, einen anständig abwechslungsreichen Inhalt hat, die Bitzeit für die serielle Schnittstelle mitteilen. Sie können dann von dieser zur Gesamtbaudrate gehen.
Wirklich, wenn Sie Reverse-Engineering oder irgendeine Art von Elektrotechnik ernsthaft betreiben möchten, benötigen Sie ein Oszilloskop (und wahrscheinlich einen Logikanalysator), also sollten Sie bald darüber nachdenken, eines zu kaufen.
Mit etwas Glück kann Brute-Forcing manchmal schneller sein als das Herausziehen Ihres Oszilloskops oder Logikanalysators (oder Ihre einzige Option, wenn Sie nicht über diese Art von Ausrüstung verfügen).
Ich habe ein USB <=> Serial-Kabel herumliegen, das ich für diese Herausforderungen verwende. Ich verbinde einfach GND- und RxD-Drähte von dort mit der Schaltung und versuche einfach, Daten zu erfassen. Ich beginne normalerweise bei 9600 8N1 (was ziemlich üblich ist), wobei 9600 die Baudrate, 8 die Anzahl der Datenbits, N die Abkürzung für No-Parity und 1 die Anzahl der Stoppbits ist.
Die langsame Methode verwendet ein Programm wie PuTTY und konfiguriert es für jede Baudrate, die Sie ausprobieren möchten. Meine schnelle Methode ist ein Perl-Skript , auf das ich über die Befehlszeile zugreifen kann und das die Baudrate als Option akzeptiert, gefolgt von einem Tool, das die Daten hexdumpt erhalten. Hier ist ein Beispiel (Linux):
cat_usbCable --baudrate=2400 | hexdump -C
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 02 00 3e 00 01 00 00 00 40 13 40 00 00 00 00 00 |..>.....@.@.....|
00000020 40 00 00 00 00 00 00 00 c8 62 00 00 00 00 00 00 |@........b......|
00000030 00 00 00 00 40 00 38 00 09 00 40 00 1c 00 1b 00 |....@.8...@.....|
Gängige Baudraten sind: 300, 600, 1200 , 2400, 4800, 9600 , 14400, 19200, 38400, 57600 , 115200 .
Am einfachsten wäre es, einen Logikanalysator mit eingebautem RS232-Decoder oder ein Oszilloskop zu verwenden, um die Signale zu prüfen.
Wenn Sie diese Tools nicht zur Verfügung haben, müssen Sie wahrscheinlich einen Decoder für Ihr FPGA schreiben, um die Bit- und Wort-Timings mit einem Referenztakt zu berechnen.
Kurt E. Tuchmacher