Las placas de mi proyecto cargan con Bootloader encriptado por usart y control de flujo XON.
De repente ayer y sin venir a cuento ningúna placa cargaba bien, todas daban checksum line error, debido a que al recibirse una línea hex mi programa comprueba la línea y la válida con su checksum. no siempre en el mismo sitio sino donde le da gana. Tengo más de 30 cables FT232RL de ftdi. Y claro, con más de 10 de ellos el Bootloader daba este error donde le da la gana, a veces lo da en la línea 7, a veces en la 30, pero no suelen llegar lejos..
Después de toda la tarde investigando me di cuenta de que solo los cables que procedían de un mismo vendedor (los compro al mejor postor) eran los que daban este fallo.
Aparentemente todo normal, el cable es igual, lo abres y el chip es el mismo y si abres el MPROG de FTDI para ver su configuración, serial, nombre en el enumerador y todo pues aparentemente todo normal, mismo driver, etc.
Examino el funcionamiento haciendo ecos uniendo tx y tx en propio cable y parece que todo en orden, enviando a 57600 un archivo grande se envía y se recibe perfecto.
Hago otro eco pero con el pic por medio y también se envía y se recibe todo perfecto.
¿Entonces?? Que está pasando??
Investigando ya el error en si, le pido al pic que me imprima la última línea hex que ha dado el error de checksum y me muestra una línea casi bien, pero con algunos caracteres corruptos. Ahí el problema.
Pero entonces,, ¿por que un archivo grande de 1 Mb por ejemplo en eco se envía perfecto, comprobado con un comparador sin errores, y en eco con el pic tambien?? Y sin embargo al enviar con XON da fallo donde le da la gana??
Pues haciendo más pruebas me di cuenta que en el texto recibido habían caracteres XON/xoff, es decir, a veces este carácter enviado por el micro a coolterm lo que hace es, no llegar a coolterm y además venir de vuelta por el otro canal. Esto es catastrófico obviamente pues ese carácter pasa al xtea y de ahí sale un carácter corrupto que se inserta en la línea hex, por lo tanto checksum error al canto.
Me baje la tool MPROG de ftdi que permite configurar el eeprom del chip ftdi y todo parece estar bien salvo una diferencia. Pero si intentas modificar la configuración eeprom del chip ftdi y lo grabas parece que se graba y no da error, pero luego todo sigue igual que estaba en la eeprom del chip, no se graba ningún cambio. Como si estuviese grabado en una rom y no en una eeprom.
Sin embargo en los cables que funcionan perfectos sí que también se graba perfecto la configuración y los cambios que haga.
Esto me dice claramente que se trata de chips ftdi falsificados, no cabe otra..
¿A alguien se le le ocurre otra causa antes de poner a parir al vendedor??