首页> 中国专利> 一种基于单外接串口的多MCU系统软件升级方法

一种基于单外接串口的多MCU系统软件升级方法

摘要

本发明公开了一种基于单外接串口的多MCU系统软件升级方法,该方法通过串口将系统内部的MCU进行互联组成多MCU互联系统,由上位机根据系统进入bootloader的时段判断并选择需要更新的芯片。上位机以最小传输时间为准则选择代码数据传输的路径,与下位机建立连接,下位机根据路由信息执行数据的转发,从而实现整个系统中任意芯片代码的更新。所设计的协议定义了数据传输的基本格式,并运用了自动选择重传保证代码更新的稳定性。该方法只需要单个串口即可实现,占用了极少的硬件资源,对具有密封要求的如水下自主航行器等仪器仪表系统的开发和研制提供了简便、可靠的在线升级方案,具有重要的应用价值。

著录项

  • 公开/公告号CN104281470A

    专利类型发明专利

  • 公开/公告日2015-01-14

    原文格式PDF

  • 申请/专利权人 浙江大学;

    申请/专利号CN201410446923.X

  • 申请日2014-09-04

  • 分类号G06F9/445;

  • 代理机构杭州天勤知识产权代理有限公司;

  • 代理人胡红娟

  • 地址 310027 浙江省杭州市西湖区浙大路38号

  • 入库时间 2023-12-17 03:00:17

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-07-21

    授权

    授权

  • 2015-02-11

    实质审查的生效 IPC(主分类):G06F9/445 申请日:20140904

    实质审查的生效

  • 2015-01-14

    公开

    公开

说明书

技术领域

本发明属于MCU系统开发技术领域,具体涉及一种基于单外接串口的多 MCU系统软件升级方法。

背景技术

近年来,随着芯片技术的逐步发展,使得芯片的数据处理能力,进一步提 高,在利用各种各样的芯片进行开发的过程中,产品可靠性、成本、及更新换 代要求也随之进一步提高。

相对于软件,硬件平台的更新换代速率较慢,早期开发的软件中不可避免 地存在着一些难以发觉的问题,在实践、应用和测试过程中这些问题会逐渐暴 露,需要不断地进行修正。在硬件平台仍然满足当前的应用需求的条件下,直 接在硬件平台上实现对软件代码的更新和升级,可以节约开发成本,提高经济 效益。

在实际应用中,对单个MCU芯片升级已经较为成熟,然而在一个系统中, 往往存在着多组芯片协同工作,对多个MCU芯片代码进行更新尚没有成熟的技 术方案,通过合理地利用芯片的硬件资源可以提高系统的扩展性,增加系统的 功能,因此研究如何利用有限的硬件资源实现对多组芯片的代码更新和升级对 于整个系统的开发和设计具有重要意义。

由于某些应用的需求,一些系统需要在密封条件下进行工作,如水下自主 航行器(AUV)、水下通信系统,与其他类型的系统相比,这种系统的价格昂贵, 更加需要一种代码在线升级的方法。对于这些系统的代码更新和在线升级需要 尽可能减少外接接口,减小整个系统密封装置产生渗漏的风险,保证系统工作 环境的正常,增加系统工作的稳定性。

发明内容

针对现有技术所存在的上述技术问题,本发明提供了一种基于单外接串口 的多MCU系统软件升级方法,实现简单、稳定性好,对于多MCU系统尤其是 在密封环境下的多MCU系统的代码更新和在线升级具有重要的价值。

一种基于单外接串口的多MCU系统软件升级方法,包括如下步骤:

(1)对多MCU系统中的各MCU进行编号且使每个MCU均有唯一的ID 号;

(2)设定多MCU系统外接串口的通信方式并进行上电,进而上位机通过 外接串口向系统中的主MCU发送进入Bootloader程序的指令,进而由主MCU 直接或间接向其他各MCU转发该指令,以使系统中所有MCU均进入Bootloader 程序;

(3)上电后MCU的计时器开始计时,由用户通过对上位机进行触发操作 来选择系统中待升级的MCU;

(4)上位机以传输单帧数据时间最短为目标确定待升级MCU的传输路径, 并以此构建路由控制帧发送给主MCU,进而由主MCU通过对路由控制帧进行 解析并依据路由信息将路由控制帧传递给下一MCU,依此逐个传递最终将路由 控制帧传递至待升级的MCU并建立形成所述的传输路径;

(5)上位机对关于软件升级的代码数据进行分段,组帧后通过传输路径发 送给待升级的MCU且采用超时重传机制;

(6)根据步骤(3)至(5),遍历系统中所有需要进行软件升级的MCU。

所述的主MCU为系统中唯一与外接串口连接的MCU。

所述的步骤(3)中用户选择待升级MCU的具体方法为:首先,设定待升 级MCU的最长选择时间T,并将T平均分割成N个时段,且使N个时段与各 MCU编号一一对应,N为系统中MCU的个数;然后上位机开始计时,由用户 在相应的时段内对上位机进行触发操作,上位机感应该触发操作所对应的时段, 确定该时段对应的MCU编号,进而确定该编号对应的MCU为待升级的MCU。

所述的步骤(4)中上位机根据以下公式以传输单帧数据时间最短为目标来 确定待升级MCU的传输路径:

min{t=Σi=0K10*La/Baudi}

其中:t为上位机向待升级MCU传输单帧数据的时间,K为待升级MCU的传 输路径的跳数,La为路由控制帧的长度,单位为Byte,其中每发送1Byte的数 据串口实际发送了10bit(含奇偶校验位和停止位),Bandi为待升级MCU的传输 路径中第i个MCU与第i+1个MCU之间的波特率。

所述的步骤(5)中当待升级的MCU接收到上位机发送的代码数据帧后, 对代码数据帧进行校验,进而根据校验结果通过传输路径向上位机回复正确确 认帧或错误确认帧。

若上位机收到错误确认帧或发送完代码数据帧τ秒后未收到待升级MCU回 复的正确确认帧,则通过传输路径向待升级的MCU重传代码数据帧;

τ=2·Σi=0K10*Lb/Baudi

其中:K为待升级MCU的传输路径的跳数,Lb为上行和下行代码数据帧中最长 的数据帧的长度,单位为Byte,Bandi为待升级MCU的传输路径中第i个MCU 与第i+1个MCU之间的波特率。

若上位机向待升级MCU重传代码数据帧超过三次仍未收到待升级MCU回 复的正确确认帧,则返回步骤(2)选择新的传输路径进行续传。

待升级的MCU接收代码数据帧并执行写入片内Flash的操作,直到所有代 码数据帧全部传输完毕,待升级的MCU向通过传输路径向上位机回复传输完成 帧。

所述的路由控制帧、代码数据帧、正确确认帧、错误确认帧和传输完成帧 中均依次包含有帧头、编号、长度、源地址、目的地址、数据区和CRC(循环冗 余校验码)校验七个部分信息。

待升级的MCU向上位机回复传输完成帧后会重新启动,若重启后的1.5t 秒内,上位机收到待升级MCU发送的关于版本编号和更新成功的信息,则表示 升级成功;否则,则返回步骤(2)选择新的传输路径重新传输代码数据;t为 对应传输路径下上位机向待升级MCU传输单帧数据的时间。

本发明分两部分组成:上位机和下位机(即多MCU系统);上位机系统可 对下位机系统进行代码更新,下位机系统则由多个MCU芯片组成,在设计时可 将预留串口将未互相连接的MCU进行联接,其中与外接串口相连的MCU为主 MCU,其余MCU芯片为子MCU,每个MCU都具有其独特的ID。上位机的数 据可以通过外接串口导入到各个芯片。下位机系统启动,上位机给予下位机以 进入Bootloader程序的命令后,下位机可进行代码更新。上位机以传输一帧数 据所消耗的时间最短为评价准则选择数据传输路径,并建立连接。本发明还设 计了合理的数据帧格式,并在数据传输的过程中应用了超时机制和重传机制, 保证了整个数据传输过程的可靠性。

由于本发明升级方案只需要一个外接串口,对于在密封仪器内部的系统, 减少了密封仪器外部接口的数量,在一定程度上提高了仪器的密封质量,同时 该设计方案简单有效,可通过串口进行扩展,具有良好的扩展性。

附图说明

图1为上位机与多MCU系统之间的连接结构示意图。

图2为各通信帧的结构示意图。

图3为本发明软件升级方法的流程示意图。

图4为上位机与MCU之间数据传输的过程示意图。

具体实施方式

为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技 术方案进行详细说明。

本实施方式基于单串口更新多MCU代码的在线升级方案,以LPC2368芯 片为例,结合图1进行说明。

LPC2368芯片具有4个UART,2路CAN通道,1个SPI接口,2个同步串 行接口(SSP),三个I2C接口和一个I2S接口,非常适合于多路串行通信场合, 具有一定的代表意义。利用ADS1.2(或其它ISP/IAP工具)将Bootloader程序 烧写到起始地址为0,终止地址为0x7FFF的内部flash中,将待更新的代码转换 为十六进制的bin文件,其中升级的应用程序的代码区起始地址为0x8000。

图3所示为代码更新过程,主要升级方案步骤如下:

(1)将外接串口同PC机串口相连接,打开上位机,考虑到数据传输的速 率,可设置波特率为115200,传输方式为8数据位,1停止位,无奇偶校验, 并打开串口。给下位机系统上电,系统上电后芯片计时器开始计时,在T时间 内发送某个特定字符串,比如按下Ctrl+b,通过串口相连接的各个芯片进入 Bootloader程序。若没有任何动作,各下位机MCU系统执行其内部原有的源程 序。

(2)上位机根据按下Ctrl+b的时间t,判断需要更新代码的芯片编号,待 更新代码的MCU编号如公式(1)所示。

其中:N为通过串口相互连接的MCU的数量,n为待更新代码的MCU的编号, 考虑到反应时间,时隙Δt=T/N的设置选择要合理,一般选5s到10s即可

(3)判断需要更新的芯片编号后,上位机自动发送一个路由选择帧(如图 2所示)进行连接,其中路由信息由上位机根据最短路径方法进行计算。上位机 计算各个芯片之间传输一帧代码所需要的时间,以到达目的芯片所需要总时间 最短的路径作为数据传输的路径。若所连接的均为串口,则计算公式如下:

min{t=Σi=0k10*L/Baudi}---(2)

其中:K为各个路径的跳数,Baudi为第i个芯片与第i+1个芯片之间的波特率, L为控制帧的长度,这里假设上位机与主芯片之间的波特率为Baud0

(4)下位机中接收到该控制帧的芯片将控制帧中包含的芯片编号与自己的 芯片编号进行对比,并设置标志位,表示自己处于代码更新的路由中,并记录 自己的数据传输路径上一跳和下一跳的芯片编号。

(5)路由控制帧传输到目的芯片后,下位机回复路径建立成功。待上位机 系统出现字母d时,表示路径建立完毕并可以进行数据的传输,选择需要更新 代码的bin文件,上位机将代码数据进行分段,组帧后进行传输,所传输的数据 帧如图2所示。通信帧中包含帧头、编号、长度、源地址、目的地址、数据区 和CRC校验七个部分。帧头判断一帧数据的开始,编号保证了数据不会重复成 功发送,源地址即为主MCU的ID,目的地址为待更新代码芯片的ID,数据区 内的数据分为5个类型,分别是代码数据、路由信息、正确确认、错误确认和 传输结束,并包含了其数据类型标志,长度则可以判断通信帧的结束,最后CRC 校验(也可采用其它校验方式)保证了数据不会被传输错误。

(6)下位机系统各个芯片根据已经记录下来的路由信息进行选择下一跳的 转发芯片。数据传输过程中所经过的芯片执行数据的转发直到到达目的芯片。 由于数据在转发的过程中可能经过多个MCU,因此可能发生数据的中断或传输 校验错误等可能,在数据的传输过程中加入超时重传机制,最短超时时间可根 据公式(3)计算。整个数据传输的过程如图4所示。

τ=2·Σi=0K10*L/Baudi---(3)

上位机发送完数据τs后,若没有接收到下位机回复的具有对应编号的正确 确认帧,上位机重传数据,下位机接收到错误的数据帧,则回复错误确认帧, 上位机重传数据,反之亦然。若重传次数超过三次,则表示通信路径出现中断, 上位机重新选择路径并根据数据帧编号进行续传。待更新的芯片接收到传输的 代码数据,执行写入片内Flash的操作直到数据全部传输完毕为止。上位机在发 送完最后一帧代码数据后会传输结束帧,下位机对该帧进行回复,表明代码数 据全部传输完毕、

数据传输完毕后,重新启动系统,等待Δτ时间后,若PC机收到所有MCU 发送过来的版本编号+OK,则表示系统代码更新成功,否则重新执行步骤2进 行代码更新,其中等待的时间Δτ为1.5t,其中t可以根据公式(2)进行计算。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号