- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式中通讯协议的设计
导语:?公司里做项目,嵌入式系统大大小小,到处都是。因为都是一个系统里的,所以都需要通讯,既然通讯就涉及到协议问题。 公司里做项目,嵌入式系统大大小小,到处都是。因为都是一个系统里的,所以都需要通讯,既然通讯就涉及到协议问题。
谈及协议,很多工程师觉得协议的设计相对简单,主要是报文的设计。大多数时候,协议的应用场景简单,没有复杂的交互。这么做的确也是没什么太大的问题。然而,就是这么简单的场景,仍有一些协议会在实际中发生意想不到的问题。归根结蒂,还是没有把握协议涉及的规律。下面我们简单的聊聊协议设计的规律。
协议设计中面临的问题:
1.设计者大多数情况下,从应用出发,仅仅考虑了基本需求的满足,没有考虑扩展需求的满足;
2.从osi七层理论上,我们往往设计的协议时站在比较高层的角度去设计,往往忽视了RS485/RS232,I2C,CAN,ETHERNET等物理层承载特点,设计缺乏对具体应用的针对性,导致潜在问题的产生;
3.容错和效率的考虑不足。
基本需求肯定是完成系统的基本功能。然而可能因为需求定义的不完整,系统设计人员没有前瞻性;协议中没有定义版本号,没有对协议兼容性的测试,导致老产品和新产品协议不兼容,而又无法采用简单的软件办法解决。这是个常见问题,最简单的办法是在握手协议中增加协议的版本号,用以判断是否对该协议支持以及为后续的软件做兼容准备。协议看似好像只有报文设计,就像一个人一样,他在父母的眼里永远是个孩子,在自己的孩子面前是父母,在朋友面前是朋友。我相信所有这些侧面合起来才是一个完整的人。UML从不同的角度去观察系统会得到不同的图。协议也是如此,协议的报文只是协议静态特性的一个方面,协议还有更重要的动态特性。如出错后怎么办,重发?重发几次?节点损坏如何从网络中剔除?怎么样才是一个完整的通讯过程?持续的时间是多少?最坏情况下是怎么样的?最好的情况下是什么样的?谁发起通讯?重要的协议可能要保证非常可靠,如何确定接受者接收的完全正确,并且可靠执行?往往这些问题已经超出了对报文自身的考虑,而是对系统解决方法的一种设计。这里有个小例子,一个RS485的半工通讯,主机向从机发送数据,希望从机可靠保存该数据;从机接收到该数据验证完毕后,写入自身的存储装置,然后再回应主机,写入成功或者失败。但这里有个问题,rs485是个主/从结构,无法同时发送数据,只能由主机点名从机回应。如果写入时间过长,从机回应报文的时间也必定过长;如果从机很多的话,这个时间就经不起浪费了。可能修改为,从机收到主机的信息后,立即应答收到。主机再分发其他从机的数据,分发完毕后,再由主机采用查询协议查询从机写入的成功与否。当然,也可以采用一些系统级的办法,只要从机收到数据后,从机一定保证数据写入成功,那么这个问题也变得简单了。主机也不用再查询写入是否成功了。软件的设计也就相对简单很多。
RS485/RS232也有双工通讯,但在实际中用得少。这里除了省线材之外,恐怕最重要的是因为RS485/RS232不带冲突检测,要么采用大家轮桩做主机,要么一个主机,点名让大家发言的办法。所以,通讯采用一问一答的方法比较多,这比较符合半工的工作状态。当然不排除一些双工的应用场景。实际应用中,大多数还是采用半工的办法。这里协议的设计主要考虑单点较多;多播和单播,因为不能确定从机是否接收成功,所以重要的协议在多播和广播之后还要查询,这个是很麻烦的事情。软件过程因此而复杂很多。RS485/RS232的通讯有自己的检测错误的办法,比如说奇偶校验,奇偶校验是一种简单的错误校验,并不能100%的挡住错误;对于可靠地协议,可能还是要设计自己的CRC或者校验和等方法。但CRC校验虽然可以用查表的办法,但计算时间比奇偶校验和校验和等方法计算量还是过大了些。在一些实时性和低端应用场合,可能时间开销大了些。所以,如果报文不是过大,还是可以考虑奇偶校验和校验和;如果过大,先考虑crc8,再考虑crc16和crc32,不要一竿子切。
I2C的通讯一般只用于板级,但现在也有用于现场总线的趋势。I2C设计之初是支持多主多从,两个主机可以同时发送信息,仲裁获胜的主机获得总线,继续发送。有仲裁不代表可以同时双向发送信息,即主机和从机的地位还是不同的,主机点名从机回应信息;虽然现在的CPU所带的I2C硬件同时支持主模式和从模式,但在同一时刻,这两个模式是不相容的。对于一个节点要么是主要么是从,而每次通讯都是由主发起,从被动接收,这就导致了和rs232无本质的区别。且,I2C的物理层协议也决定了,其通讯方式也没有rs232灵活,只能工作在半工状态。两个CPU传递一些简单的信息,在CPU无多余的rs232情况
您可能关注的文档
最近下载
- 2025年公务员多省联考《申论》真题试题答案解析(湖南省市卷).pdf VIP
- T∕CECS 10039-2019 绿色建材评价 墙面涂料(可复制版).pdf
- 2013款别克昂科拉用户使用手册.pdf VIP
- 通化(2011)1207双线路腕臂.pdf VIP
- 《公司研发投入与公司价值之间关系研究文献综述》2400字.doc VIP
- 高血压的护理(共22张PPT).pptx VIP
- 2025金融监管局考试真题及答案.doc VIP
- 通化(2010)1042双线路腕臂.pdf VIP
- 空间灵活性如何通过设计提升空间的灵活性与多功能性.pptx VIP
- 叁化(2008)1168多线路腕臂构造安装图.pdf VIP
原创力文档


文档评论(0)