科学数据分析网站html5,服装定制属于什么行业,阿里巴巴可以做公司网站吗,国家拨款农村建设查询的网站嵌入式设备在运行中需要设置参数#xff0c;这个工作经常由PC机来实现#xff0c;需要为双方通信设计协议#xff0c;有代表性协议是如下三种#xff1a; 从上表可以看到#xff0c;一般嵌入式设备内存和运算性能都有限#xff0c;因此固定二进制是首选通信协议。
一这个工作经常由PC机来实现需要为双方通信设计协议有代表性协议是如下三种 从上表可以看到一般嵌入式设备内存和运算性能都有限因此固定二进制是首选通信协议。
一 简单性
保证协议是一个简单的方案晦涩难懂往往意味着实现困难和容易出错。协议的结构宜采用平面方式每个域作用明确数据域尽可能设计得长度和位置固定注释详尽文档清晰实例丰富让人尽快上手和理解。
协议一般都需要以下域帧头长度帧类型目标地址源地址数据校验帧尾。
二 可扩展
必须保证将来增加功能和更改硬件后协议仍能胜任工作这往往是通过预留空间来实现协议的变更应该只是量的增加不至于引起协议结构的变化。
三 低耦合
理想情况下每个协议包是原子信息即本协议包不与其他协议包牵连以防止通讯丢帧和设置牵连带来的错误。
四 稳定性
协议包长度适宜太小包含的信息过少协议包的种类繁多容易引起通讯混乱和牵连错误太大包含的信息过多可读性较差组帧和解帧的工作困难还会带来通讯易受干扰的缺陷一般协议长度以最小原子性信息为标尺。
协议必须包括校验机制以便于接收方判别协议包正确完整接收如果出错需要较好的机制来确保通讯成功如重传。
五 高效率
按信息类型区分协议包类别如设置网络信息参数设置当前运行参数可以区分开来方便程序处理。
将同种操作编码为一个子集是一种高效手段如Read操作编码为0x0010Write操作编码为0x0020。
数据尽可能设计成同构模式如果实在有差异至少将同类型数据放置在一起这样程序可以充分利用指针和线性寻址加速处理。
六 易实现
尽量减少复杂算法的使用如通讯链路稳定数据帧的校验码可以由CheckSum代替CRC。除非资源非常紧张否则不要将过多的信息挤压在一个数据里因为它会带来可读性差和实现困难。
七软件开发
尽可能地让硬件ISR完成驱动工作不要让“进程”参与复杂的时序逻辑否则处理器将步履蹒跚且逻辑复杂如
接收固定长度的数据帧可以使用DMA每接收完一帧DMA_ISR向进程发消息。小心处理DMA断层异常接收的数据帧长度正常但数据错误数据为上帧的后半部分本帧的前半部分。
接收不定长的数据帧可以使用状态机当接收到“帧尾数据”时向进程发消息。 相关文章如何高效解析不定长度的协议帧 小心数据紊乱和超时异常数据紊乱时需要将状态机及时复位超时一般使用定时器监控。
八. 考虑硬件
如果通信链路是高速总线如SPORT可达100Mbps一般设计成一帧产生一次中断它通过长度触发的DMA来实现需要将协议设计成固定长度如附录A。它具备高效率但灵活性较差。
如果通信链路是低速总线如UART一般100kbps一般接收一字节产生一次中断可以将协议设计成变长帧如附录B。它具备高灵活性但效率较低。
附录A 一个基于DMA传输固定长度的协议实例 如图显示了PC发送数据帧的格式总长为64字节是4字节的整倍数符合绝大部分32位处理器结构体对齐的特性。 0x3CINT8U帧头可见字符’’ LenINT8U本帧的总数据长度在图4即为64 DstINT8U标识目标设备的ID号 SrcINT8U标识源设备的ID号 Data56字节的存储区内容依赖于具体的通信帧实例见表2 CmdINT16U数据帧的类别 CSINT8U, 对它前面所有数据62字节进行8位累加和校验 0x7DINT8U, 帧尾可见字符’’
Data域数据结构实例 附录B 一个基于变长格式的UART通信协议实例
PC 与 iWL880A一种无线通信产品详见www.rimelink.com通信帧采用变长格式如下图所示。大部分设备常见为PC机对于接收以“回车符”的机制很好处理协议中的Tail就等于0x0D(换行符)。