Мне было интересно, как создать безопасный протокол связи UART/USB. Мне это нужно для связи между микроконтроллером и ПК. У меня есть ~ 10 команд, и я подумал, что буду использовать 10 отдельных команд подтверждения для каждой из них.
Обмен должен проходить так:
0x01
~0x01
, когда это делается (я отрицаю число, чтобы создать большее «расстояние» между двумя числами)0x01
и ожидает ~0x01
от ПК. Если что-то другое, чем ~0x01
возвращается, микроконтроллер узнает, что что-то пошло не так, и отправит новый запрос или сообщение об ошибке.Случай, когда микроконтроллер отправляет 0x01
, ПК понимает 0x02
и отправляет ~0x02
обратно, но микроконтроллер читает ~0x01
из-за некоторого шума, был бы довольно плохим.
Насколько это безопасно с точки зрения передачи или как я могу сделать это более безопасным?
Я думаю, вам следует определить более длинные команды, включая, возможно, контрольную сумму или CRC, и дождаться ACK/NACK или состояния ошибки.
Вы можете взять примеры из простых протоколов, таких как TFTP ( RFC 1350 ) .
Для безопасного общения вы должны рассмотреть все возможные потоки к вашей линии связи. Поэтому вам необходимо определить, доступна ли система извне (системы сторонних производителей, например, беспроводная связь).
В общем, вам нужно подумать о следующих темах:
Стандартные меры против потоков:
Евгений Ш.
Физз
JavaForStarters
Нил_UK
пользователь3629249
Владимир Краверо
JavaForStarters
мкейт
Крис Стрэттон
суперкот
пользователь65586