• 注册
当前位置:1313e > 默认分类 >正文

记:关于一种多机更新Boot的设计与实现(一)——架构与初始化

0x00前言

写下这篇文章的主要目的是记录下最近新实现的一个较为复杂的BOOT系统,以实现多机更新与多机型不同软件更新。本文分为两部分,前者是对于实际工况的相关抽象,后者是针对性的使用CAN总线网络进行数据建模与调研可行性。
阅读本文,您可能需要掌握的知识:

技能熟练度
单片机熟练
BOOT-APP关系了解
CAN-基本熟练

文章目录

  • 0x00前言
  • 0x01 工况环境
  • 0x02 设备抽象
  • 0x03 数据编码--地址
  • 0x04 传输速率
    • 0x14 传输格式
  • 0x05 总结
  • 更多

0x01 工况环境

当前工况环境主要是需要在工厂情况下,对于同一系列的多种不同的机型进行单次的更新,现在的设备环境为:一台PC机器,一台数据传输设备,多台同系列1、不同型号的机器。在此情况下,要实现所有机器全部一次完成更新,这就是BOOT需要完成的功能了。
当前程序大小设定为1MB,因为现在单片机的ROM量级来看,1MB已经算是很大的了。所以可以作为极限情况下的最长更新时间计算。

0x02 设备抽象

首先,根据工况分析可知,我们仅有一台更新输出设备,一台通信设备,以及未知数量、同一系列不同型号的机器。
系统抽象 根据上图可以得出:我们的设备暂时可以确认的是PC端(更新数据输出端),其他的设备都不一定保证。于是得出,我们需要两组程序,第一组为更新通信设备内的程序(BOOT或APP均可),第二组是更新设备内的BOOT程序。
现有工况设定为:所有设备全部连接在一起,且与更新通信设备进行连接,故我们可以使用三层的分级来抽象当前的更新设备。
机型分类抽象
网关
唯一的通信设备,上与PC通信,下与任意更新设备进行通信,原则上仅与主机通信,但是也可以直接与从机进行通信。
主机
主机指各个机型的第一台并入网关的机器,这样可以确认当前机器的更新源头。
从机
从机则为当前机型的后续添加机器,每组机器都可以直接并入网络。

其中,网关与各主机进行通信,各主机与从机通信或各从机与网关通信。这样就可以确认当前设备的更新次序:网关–>主机–>从机。

0x03 数据编码–地址

上文所述,网关、主机、从机在同一个网络下。而根据组网要求,我暂时以CAN为物理传输网络定义。主要原因为:CAN具有物理ID设定,定义较为简洁;CAN原生支持多设备并接且定义较为完整。当前工况设置为CAN速率为:500Kb/s、标准帧ID(0~7FF、11位、2048数据)。[^2]
网关
网关作为当前数据的中心,优先等级应为最高,分配到的ID为0x000H,这样可以保证当前数据可以最先传输到主机,以保证更新速率。
主机
主机作为从机的根本,规范很重要,自定义的空间也很大,标准帧为11位。一般根据当前需要的机型个数来进行选择,现在工况要求可以选择在4位。
从机
因为是数据接收元,所以当前的数据优先级最低,故从机可以当作最低的位置。
于是,可以得到已下图为ID组成部分的表格。

机型定义机型位数机型个数
主机4位15组
从机7位128个
网关1位一个(共享主机位置)

但是,需要特别注意的是,CAN数据是高位的左移发送数据的模式,也就是说,数据的组成需要与常识的优先级相反,为低位优先级。 这个之后我也会写相关的文章进行分享,现在大家只需要知道是这个现象即可。
图片.png

由上图也可以看出,可以分配的机器足有15*128=1920个,而受制于CAN网络的数据传输能力,机器保持在20~50还是可以保证安全的。再往上也许就要注意当前CAN总线的终端电阻与各个机器之间的连接线EMC了。

0x04 传输速率

根据当前的CAN速率计算,在80%总线使用率的情况下,500Kb/s最多只会发挥400Kb/s,而保守估计,一帧CAN数据约130bit的波形输出.具体的原因在后续我的博客也会解释。这样,每秒最多可以发送3K组左右的波形数据。每一组数据有8个有效数据位。由此可以确认,在最安全与最快的情况下,一秒最多可以发送有效数据为24K。但是受制于BOOT需要传输数据包,会对数据区有一定的损坏,所以传输速率应该在10~20K左右。而之前工况定义的更新数据为1MB,也就是说,更新一台机器约需要50S,但是单个主机更新所有从机最快也要100S左右(广播模式下,如果单个机器进行更新,每台机器更新都需要50S左右,这个需要根据当前的速率与稳定性进行选择)。

0x14 传输格式

因为使用了CAN总线的传输方式,所以暂时也使用了CAN总线中,关于CAN-UDS相关的传输定义格式。此协议栈针对CAN总线定制,对于CAN总线的优化较大,其他的协议都很难达到20K左右的传输速率。如果需要使用别的传输协议,就需要在修改当前的传输协议中,加入Address相关的定义即可。
具体的介绍,参见我的博客 记:从零开始讲解UDS(一)——协议概述

0x05 总结

本文主要介绍了根据当前工况进行相关数据与系统建模,调研当前系统是否满足当前工况。根据上述分析可得,这种实现方式可以满足工况的需求,下篇文章我将讲述具体的实现方式与架构的详细介绍。
因为个人思考可能会有一定的局限性,所以如果又哪里不对的地方,还请各位不吝指教。

更多

本文首发自 记:关于一种多机更新Boot的设计与实现(一)——架构与初始化,更多文章可进入我的博客详查。



  1. 系列定义为通信方式一致,如所有机器更新通信方式均为2.4GHz WiFi。但是需要注意的是,当前通信方式一定需要保证可以多机通信。
    [^2] CAN使用标准帧的原因主要是因为标准帧要比扩展帧少发送约36个波形。这样在500Kb/s下每秒多发送12Kb左右的波形数据 ↩︎

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录