在進行soc之間進行通信時,往往需要制定通信協議,以下是我制定的一個示例,供大家參考:
1)magic
magic頭長度為2字節,內容為0x55,0xAA,這是字節出現順序,不區分little endian還是big endian。
magic頭的作用是為了實現在發送和接收同步丟失時,快速找到同步。
2)type
type長度為2字節,內容為具體的message id號。message id采用little endian字節序。
3)length
length為后面的data字段的長度,單位為字節數。length占兩個字節。length采用little endian字節序。
4) verify head
verify head為head的校驗碼,可以迅速知道head是否正確。 head包括從magic到length整個內容。如果內容不對,那么需要重新搜索magic頭,再檢查head是否正確,從而可以快速同步。校驗head的正確性后,length就可以正常使用,正確定位數據的長度。
verify_ head占2個字節。 verifyhead的算法可以采用簡單的16bit異或算法,或者CRC16算法,或者其他算法。為簡單方便,目前采用16bit異或算法。
verify head采用little endian字節序。
5) data
data為任意長度的數據。具體格式根據具體的message id來定。
6) verify_data
verify_data為data段的校驗??梢圆捎酶鞣N算法。verify_data根據算法的需求來確定長度。
為簡單方便,目前采用8bit異或算法,即這里采用1字節長度。
另外我的相關培訓視頻請看:
歡迎觀看我發布的各個課程: https://edu.51cto.com/lecturer/8896847.html
另外我的免費的linux各種驅動開發課程如下:
https://edu.51cto.com/course/17138.html
我的新的更多優惠的打包課程鏈接如下:
https://edu.51cto.com/sd/0a9d4
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。