Así que tengo una pieza de hardware que estoy haciendo ingeniería inversa. Creo que he encontrado un UART en el tablero. Tengo un FPGA conectado que solo hace:
ExtTX <= PCRX;
PCTX <= ExtRX;
Entonces, de esta manera, teóricamente puedo manejar cualquier velocidad del FTDI en mi FPGA (que es bastante rápido). Entonces, tengo la parte del hardware cubierta. Ahora, sin embargo, usando Linux (o Windows), ¿cómo puedo averiguar cuál debería ser la velocidad y los bits de parada y otras opciones de configuración de la conexión en serie?
Quiere medir el tiempo de transición-transición más corto.
Esto, asumiendo que el bus que está viendo tiene un contenido decentemente variado, le indicará el tiempo de bits para la interfaz serial. Luego puede pasar de eso a la tasa de baudios general.
Sin embargo, si se toma en serio la ingeniería inversa o cualquier tipo de ingeniería eléctrica, necesitará un osciloscopio (y probablemente un analizador lógico), por lo que debería pensar en comprar uno pronto.
Con un poco de suerte, la fuerza bruta a veces puede ser más rápida que sacar su osciloscopio o analizador lógico (o su única opción cuando no tiene este tipo de equipo).
Tengo un cable USB<=>Serial por ahí que uso para estos desafíos. Solo conecto los cables GND y RxD al circuito y solo trato de capturar datos. Por lo general, empiezo en 9600 8N1 (que es bastante común), donde 9600 es la tasa de baudios, 8 es la cantidad de bits de datos, N es la abreviatura de sin paridad y 1 es la cantidad de bits de parada.
El método lento es usar un programa como PuTTY y configurarlo para cada Baudrate que quieras probar, mi método rápido es un script de Perl al que puedo acceder desde la línea de comando y toma la Baudrate como opción, seguido de una herramienta que hexdump los datos recibió. Aquí hay un ejemplo (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...@.....|
Las velocidades de transmisión comunes son: 300, 600, 1200 , 2400, 4800, 9600 , 14400, 19200, 38400, 57600 , 115200 .
La forma más sencilla sería usar un analizador lógico con un decodificador RS232 incorporado o un osciloscopio para sondear las señales.
Si no tiene esas herramientas disponibles, probablemente necesitará escribir un decodificador para su FPGA para calcular los tiempos de bits y palabras usando un reloj de referencia.
Kurt E. Clothier