0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

硬件产品升级时的兼容性问题

麦克泰技术 来源:麦克泰技术 作者:麦克泰技术 2024-01-12 11:08 次阅读

越来越多的硬件产品,硬件构成不仅仅是集成在一块板子上,而是多块控制板协同工作。

此时,就会涉及到多块板之间的通信(有线/无线通信),就会涉及到到通信协议。很多时候,我们都会自定义一些协议。

我们之前在也分享一种常用的自定义协议格式:

分享一种灵活性很高的协议格式(附代码例子)

c3d544f2-b0f7-11ee-8b88-92fbcf53809c.png

在多板系统中,会有以下这些应用场景:

每块板都有OTA升级的需求。

可能某块板是一块公共的板子,其它项目也会同时使用,这块公共板子软件需要同时兼容多个项目。

我们在软件迭代过程中,可能会涉及到板间交互的数据的升级,比如新增数据。

新增的某个数据属性上属于某个数据集合,比如与某个结构体是同类数据,理论上为了程序设计得更合理些,应该把这个数据加在已有的结构体里面。

但是,这可能会涉及到兼容性问题。

如果直接往结构体里新增数据,升级时,有些板子升级成功了,有些板子没升级成功。可能就会出现数据异常导致功能异常。

公共板升级新增协议之后,可能就不能完全兼容与其通信的板子。

比如,有一条数据叫做设备信息的数据需要在板间通信,设备信息里包含了:设备IP、设备Mac。

#defineMSG_ID_DEV_INFO0x0001

typedefstruct_dev_info
{
chardev_ip[IP_MAX_LEN];
chardev_mac[MAC_MAX_LEN];
}dev_info_t;

此时,有新需求需要再加一个设备的sn,这个数据我们应该如何加?

如果是项目前中期,这时候还是在开发阶段,我们可以随意修改。因为设备sn也是设备信息的一部分,可以直接在设备信息这个数据里添加会比较合理:

#defineMSG_ID_DEV_INFO0x0001

typedefstruct_dev_info
{
chardev_ip[IP_MAX_LEN];
chardev_mac[MAC_MAX_LEN];
chardev_sn[SN_MAX_LEN];
}dev_info_t;

如果是项目后期,或已经上市流通,则就需要考虑兼容性问题了。

针对这种兼容性问题,有如下解决方案:

方案一:新增的数据单独走一条数据协议

比如针对以上例子,可以这么来扩展:

#defineMSG_ID_DEV_INFO0x0001
#defineMSG_ID_DEV_SN0x0002

typedefstruct_dev_info
{
chardev_ip[IP_MAX_LEN];
chardev_mac[MAC_MAX_LEN];
}dev_info_t;

typedefstruct_dev_sn
{
chardev_sn[SN_MAX_LEN];
}dev_sn_t;

这种方案虽然能解决问题,但越到后面,程序会越来越乱,各种数据很散乱,很不好维护。

而且,一开始也不可能把所有数据都规划得很完美。有没有什么方法,可以比较合理地扩充数据,并且也能应对这种兼容性问题。

看一下方案二。

方案二:项目设计初期,引入一些数据序列化库。

比如protobuf。

Protocol Buffers,是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。它不依赖于语言和平台并且可扩展性极强。

同XML相比,Protocol buffers在序列化结构化数据方面有许多优点:

消息格式升级和兼容性好

支持跨平台多语言

序列化反序列化速度很快

序列化后体积相比Json和XML很小,适合网络传输

相关文章:

Protobuf:一种更小、更快、更高效的协议

干货 | 项目乏力?nanopb助你一臂之力

干货 | protobuf-c之嵌入式平台使用

如何利用Google的protobuf,来实现自己的RPC框架

针对上面的例子,使用protobuf。

原来的数据:

syntax="proto2";

messagedev_info
{
requiredstringdev_ip=1;
requiredstringdev_mac=2;
}

新增数据dev_sn直接新增即可:

syntax="proto2";

messagedev_info
{
requiredstringdev_ip=1;
requiredstringdev_mac=2;
requiredstringdev_sn=3;
}

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5056

    文章

    18950

    浏览量

    301485
  • 通信协议
    +关注

    关注

    28

    文章

    833

    浏览量

    40207
  • 硬件产品
    +关注

    关注

    0

    文章

    6

    浏览量

    1560

原文标题:嵌入式中,升级时涉及的协议兼容性问题?

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HDMI的接口匹配问题(花屏、与不同电视兼容性问题等)

    HDMI的接口匹配问题,(花屏、与不同电视兼容性问题等)一直是困扰众多音视频领域工程师的老大难,有对这方面有研究的,贡献下心得。面上看,这类问题最终的表象都集中在电视机的兼容性问题, 经常是在部份
    发表于 07-06 17:04

    数据采集兼容性问题解决方案

    整合众多特点和性能以解决数据采集兼容性问题
    发表于 09-09 14:23

    DSP的电磁兼容性问题分析

    本文在DSP的电磁兼容性问题方面进行了一些探讨。
    发表于 02-03 06:19

    如何解决印制板设计上的电磁兼容性问题

    印制板上的电磁兼容性特点是什么?多层板的电磁兼容性问题有哪些?如何解决印制板设计上的电磁兼容性问题
    发表于 04-25 06:52

    关于HDMI兼容性问题的分析

    关于HDMI兼容性问题的分析
    发表于 06-02 06:18

    东元电机F系列产品升级说明

    东元电机F系列产品升级说明1,为了优化设计,增强结构稳定性,东元电机F系列GB2、GB3进行升级升级后的型号维持原TEF2、TEGH不变,仅产品编码5.6更变为3N、2N。2,A/B
    发表于 09-01 08:58

    电子、电气设备中的电磁兼容性问题

    电子、电气设备中的电磁兼容性问题 1. 引 言   20世纪90年代以后,一种新的(电磁
    发表于 10-19 09:15 975次阅读

    PC显卡急需解决的HDCP兼容性问题

    PC显卡急需解决的HDCP兼容性问题 HDMI、DVI、DisplayPort等高清媒体内容传输的版权保护机制HDCP(High-Bandwidth Digital Content Protection)由好莱坞和英特尔(Intel)共同开发,用
    发表于 11-07 09:37 3895次阅读

    大联大推出智能家居整体解决方案,未来产品升级时无需考虑兼容性

    大联大旗下友尚推出基于瑞昱半导体(Realtek)技术的智能家居整体解决方案。此方案采用全球用量最大的ARM Cortex-M MCU核心及广泛使用的FreeRTOS+LwIP,全系列新产品均能够向下兼容,未来产品升级时无需考虑
    发表于 06-02 08:58 1184次阅读
    大联大推出智能家居整体解决方案,未来<b class='flag-5'>产品升级</b>时无需考虑<b class='flag-5'>兼容性</b>

    PFC设计的电磁兼容性问题与解决方法 (10.1)

    PFC电源设计与电感设计计算(十) - PFC设计的电磁兼容性问题与对策(1) 10A
    的头像 发表于 04-02 06:01 3586次阅读
    PFC设计的电磁<b class='flag-5'>兼容性问题</b>与解决方法 (10.1)

    PFC设计的电磁兼容性问题与解决方法 (10.3)

    PFC电源设计与电感设计计算(十) - PFC设计的电磁兼容性问题与对策(3) 10C
    的头像 发表于 04-02 06:04 3964次阅读
    PFC设计的电磁<b class='flag-5'>兼容性问题</b>与解决方法 (10.3)

    PFC设计的电磁兼容性问题与解决方法 (10.2)

    PFC电源设计与电感设计计算(十) - PFC设计的电磁兼容性问题与对策(2) 10B
    的头像 发表于 04-02 06:03 3877次阅读
    PFC设计的电磁<b class='flag-5'>兼容性问题</b>与解决方法 (10.2)

    结合功能和性能解决数据采集兼容性问题

    结合功能和性能解决数据采集兼容性问题
    发表于 05-18 18:33 0次下载
    结合功能和性能解决数据采集<b class='flag-5'>兼容性问题</b>

    红外成像仪开发难点的兼容性问题

    、医疗、安防等领域。然而,在红外成像仪的开发过程中,兼容性问题是很常见的一个难点。本文将从多个方面探讨红外成像仪开发中的兼容性问题
    的头像 发表于 08-25 10:28 585次阅读
    红外成像仪开发难点的<b class='flag-5'>兼容性问题</b>

    音频线接口的兼容性问题

    音频线接口的兼容性问题主要涉及以下几个方面: 一、接口类型不匹配 音频线接口有多种类型,如RSA、TRS(大三芯)、XLR(卡侬头)、RCA(莲花头)、同轴接口、光纤接口以及HDMI接口等。不同类
    的头像 发表于 10-30 16:05 115次阅读