Me preguntaba cómo crear un protocolo de comunicación UART / USB seguro. Lo necesito para la comunicación entre un microcontrolador y una PC. Tengo ~ 10 comandos y pensé que usaría 10 comandos de reconocimiento separados para cada uno de ellos.
El intercambio debería ser así:
- La PC envía un comando de activación a través de UART
- µC reconoce que la PC está conectada y envía su comando a la PC, por ejemplo.
0x01
- La PC hace lo que se le pidió (algunas cosas de hardware) y responde
~0x01
cuando se hace (niego el número para crear una "distancia" mayor entre los dos números) - µC sabe que se envió
0x01
y espera~0x01
de la PC. Si~0x01
vuelve a aparecer algo diferente , el µC sabrá que algo salió mal y enviará una nueva solicitud o un mensaje de error
En el caso de que el µC envíe 0x01
, la PC lo comprende 0x02
y lo envía, ~0x02
pero el µC lee ~0x01
debido a algún ruido sería bastante malo.
¿Qué tan seguro es eso en términos de transmisión, o cómo puedo hacer esto más seguro?
microcontroller
c
embedded
uart
JavaForStarters
fuente
fuente
Respuestas:
Creo que debería definir comandos más largos que incluyan probablemente suma de verificación o CRC y esperar una condición de ACK / NACK o error.
Puede tomar ejemplos de protocolos sencillos como TFTP ( RFC 1350 )
fuente
Para una comunicación segura, debe considerar todos los hilos posibles a su línea de comunicación. Por lo tanto, debe definir si el sistema es accesible desde el exterior (sistemas de terceros, por ejemplo, inalámbricos)
En general, debe pensar en los siguientes hilos:
Las medidas estándar contra hilos son:
fuente