Ich habe mich gefragt, wie man ein sicheres UART / USB-Kommunikationsprotokoll erstellt. Ich brauche es für die Kommunikation zwischen einem Mikrocontroller und einem PC. Ich habe ~ 10 Befehle und dachte, ich würde 10 separate Bestätigungsbefehle für jeden von ihnen verwenden.
Der Austausch sollte so verlaufen:
- Der PC sendet einen Weckbefehl über UART
- µC erkennt, dass der PC angeschlossen ist, und sendet seinen Befehl an den PC, z.
0x01
- Der PC macht das, worum er gebeten wurde (einige Hardware-Dinge) und antwortet,
~0x01
wenn es fertig ist (ich negiere die Zahl, um einen größeren "Abstand" zwischen den beiden Zahlen zu schaffen). - µC weiß, dass es gesendet hat
0x01
und~0x01
vom PC erwartet . Wenn etwas anderes als~0x01
zurückkommt, weiß der µC, dass ein Fehler aufgetreten ist, und sendet eine neue Anfrage oder eine Fehlermeldung
Der Fall, dass der µC sendet 0x01
, der PC versteht 0x02
und zurücksendet, ~0x02
aber der µC ~0x01
aufgrund von Rauschen liest , wäre ziemlich schlecht.
Wie sicher ist das in Bezug auf die Übertragung oder wie kann ich dies sicherer machen?
microcontroller
c
embedded
uart
JavaForStarters
quelle
quelle
Antworten:
Ich denke, Sie sollten längere Befehle definieren, einschließlich wahrscheinlich Prüfsumme oder CRC, und auf eine ACK / NACK- oder Fehlerbedingung warten.
Sie können Beispiele aus einfachen Protokollen wie TFTP ( RFC 1350 ) nehmen.
quelle
Für eine sichere Kommunikation sollten Sie alle möglichen Threads zu Ihrer Kommunikationsleitung berücksichtigen. Daher müssen Sie festlegen, ob das System von außen zugänglich ist (Systeme von Drittanbietern, z. B. drahtlos).
Im Allgemeinen müssen Sie über die folgenden Themen nachdenken:
Standardmaßnahmen gegen Gewinde sind:
quelle