您好,登录后才能下订单哦!
在进行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段的校验。可以采用各种算法。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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。