Eu queria saber como criar um protocolo de comunicação UART / USB seguro. Eu preciso disso para a comunicação entre um microcontrolador e um PC. Eu tenho ~ 10 comandos e pensei em usar 10 comandos de reconhecimento separados para cada um deles.
A troca deve ser assim:
- PC envia comando de ativação via UART
- O µC reconhece que o PC está conectado e envia seu comando ao PC, por exemplo.
0x01
- O PC faz o que foi solicitado (algumas coisas de hardware) e responde
~0x01
quando termina (eu nego o número para criar uma "distância" maior entre os dois números) - O µC sabe que foi enviado
0x01
e está esperando~0x01
pelo PC. Se algo além de~0x01
voltar, o µC saberá que algo deu errado e enviará uma nova solicitação ou uma mensagem de erro
O caso que o µC envia 0x01
, o PC entende 0x02
e envia de ~0x02
volta, mas a leitura do µC ~0x01
devido a algum ruído seria muito ruim.
Quão seguro é isso em termos de transmissão, ou como posso tornar isso mais seguro?
microcontroller
c
embedded
uart
JavaForStarters
fonte
fonte
Respostas:
Eu acho que você deve definir comandos mais longos, incluindo provavelmente soma de verificação ou CRC e aguardar uma ACK / NACK ou condição de erro.
Você pode obter exemplos de protocolos fáceis como TFTP ( RFC 1350 )
fonte
Para uma comunicação segura, você deve considerar todos os threads possíveis para sua linha de comunicação. Portanto, você precisa definir se o sistema pode ser acessado de fora (sistemas de terceiros, por exemplo, sem fio)
Em geral, você precisa pensar nos seguintes tópicos:
As medidas padrão contra threads são:
fonte