Saya bertanya-tanya bagaimana cara membuat protokol komunikasi UART / USB yang aman. Saya membutuhkannya untuk komunikasi antara mikrokontroler dan PC. Saya punya ~ 10 perintah dan saya pikir saya akan menggunakan 10 perintah pengakuan terpisah untuk masing-masing.
Pertukarannya harus seperti ini:
- PC mengirimkan perintah bangun melalui UART
- μC mengakui bahwa PC terhubung dan mengirimkan perintahnya ke PC, mis.
0x01
- PC melakukan apa yang diminta (beberapa perangkat keras) dan merespons
~0x01
ketika selesai (saya meniadakan nomor untuk membuat "jarak" yang lebih besar antara dua angka) - μC tahu bahwa itu dikirim
0x01
dan diharapkan~0x01
dari PC. Jika sesuatu selain~0x01
kembali, μC akan tahu bahwa ada yang tidak beres dan akan mengirim permintaan baru atau pesan kesalahan
Kasus yang dikirim μC 0x01
, PC memahami 0x02
dan mengirim ~0x02
kembali tetapi μC membaca ~0x01
karena beberapa kebisingan akan sangat buruk.
Seberapa aman itu dalam hal transmisi, atau bagaimana saya bisa membuatnya lebih aman?
microcontroller
c
embedded
uart
JavaForStarters
sumber
sumber
Jawaban:
Saya pikir Anda harus mendefinisikan perintah yang lebih panjang termasuk mungkin checksum atau CRC dan menunggu kondisi ACK / NACK atau kesalahan.
Anda dapat mengambil contoh dari protokol mudah seperti TFTP ( RFC 1350 )
sumber
Untuk komunikasi yang aman, Anda harus mempertimbangkan semua utas yang mungkin untuk saluran komunikasi Anda. Karena itu Anda perlu mendefinisikan, jika sistem dapat diakses dari luar (sistem pihak ketiga misalnya nirkabel)
Secara umum, Anda harus memikirkan utas berikut:
Langkah-langkah standar terhadap utas adalah:
sumber