CN113568629A - 基于can的软件升级方法、装置、计算机设备和存储介质 - Google Patents
基于can的软件升级方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113568629A CN113568629A CN202010350275.3A CN202010350275A CN113568629A CN 113568629 A CN113568629 A CN 113568629A CN 202010350275 A CN202010350275 A CN 202010350275A CN 113568629 A CN113568629 A CN 113568629A
- Authority
- CN
- China
- Prior art keywords
- program
- controller
- upper computer
- application program
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Abstract
本发明提供一种基于CAN的软件升级方法、装置、计算机设备和存储介质,该方法包括接收上位机的更新指令;响应于所述更新指令,将当前的运行程序由应用程序跳转至启动程序;在所述启动程序中,接收所述上位机的文件传输请求;响应于所述文件传输请求,将存储器中的所述应用程序擦除;接收所述上位机的更新包,将所述更新包写入所述存储器中。上位机通过CAN向控制器发送更新指令,使得控制器将当前运行的应用程序停止,运行启动程序,使得控制器在接收到上位机的文件传输请求后,能够将存储器中的应用程序擦除,进而在接收到更新包后,能够将更新包吸入至存储器中,使得应用程序得到更新,无需仿真器进行应用程序的更新,有效提高了更新效率。
Description
技术领域
本发明涉及基于CAN通信的软件升级技术领域,特别涉及一种基于CAN的软件升级方法、装置、计算机设备和存储介质。
背景技术
目前,列车的多个控制器之间通过CAN(Controller Area Network,控制器局域网络)组网,上位机通过该CAN网络与控制器连接,并实现通信。在控制器的调试阶段由于应用程序未定型,应用程序往往需要更新升级,目前应用程序的更新需要拆开控制器后,采用用仿真器进行更新。然而这种更新方式效率低下,并且存在安全隐患。
发明内容
基于此,有必要针对上述技术问题,提供一种基于CAN的软件升级方法、装置、计算机设备和存储介质。
一种基于CAN的软件升级方法,包括:
接收上位机的更新指令;
响应于所述更新指令,将当前的运行程序由应用程序跳转至启动程序;
在所述启动程序中,接收所述上位机的文件传输请求;
响应于所述文件传输请求,将存储器中的所述应用程序擦除;
接收所述上位机的更新包,将所述更新包写入所述存储器中,其中,所述更新包携带更新后的应用程序。
在一个实施例中,在所述接收上位机的更新指令的步骤之前还包括:
检测是否接收到所述上位机的拦截模式指令;
当检测到所述上位机的所述拦截模式指令时,维持当前的运行程序为所述启动程序。
在一个实施例中,所述检测是否接收到所述上位机的拦截模式指令的步骤包括:
在上电后,运行所述启动程序,并在上电后的的预设时间内,检测是否接收到所述上位机的拦截模式指令。
在一个实施例中,所述接收所述上位机的更新包,将所述更新包写入所述存储器中的步骤包括:
接收所述上位机的更新包和校验信息;
按照预设规则计算得到所述更新包的校验值,检测所述校验值与所述校验信息是否一致;
当所述校验值与所述校验信息一致时,将所述更新包写入所述存储器中。
在一个实施例中,所述接收上位机的更新指令的步骤之前还包括:
接收所述上位机的请求指令,响应于所述请求指令,向所述上位机发送响应信息。
一种基于CAN的软件升级方法,包括:
向控制器发送更新指令;
向所述控制器发送文件传输请求;
向所述控制器发送更新包,其中,所述更新包携带更新后的应用程序。
在一个实施例中,在所述向控制器发送更新指令的步骤之前还包括:
向所述控制器发送拦截模式指令。
在一个实施例中,所述向所述控制器发送拦截模式指令的步骤包括:
在所述控制器上电后的预设时间内,向所述控制器发送拦截模式指令。
一种基于CAN的软件升级方法,其特征在于,包括:
上位机向控制器发送更新指令;
所述控制器响应于所述更新指令,将当前的运行程序由应用程序跳转至启动程序;
所述上位机向所述控制器发送文件传输请求;
所述控制器在所述启动程序中,接收所述上位机的文件传输请求,响应于所述文件传输请求,将存储器中的所述应用程序擦除;
所述上位机向所述控制器发送更新包,其中,所述更新包携带更新后的应用程序;
所述控制器接收所述上位机的更新包,将所述更新包写入所述存储器中。
在一个实施例中,在所述上位机向控制器发送更新指令的步骤之前还包括步骤:
所述上位机向所述控制器发送拦截模式指令;
所述控制器在上电后的预设时间内,当检测到所述上位机的所述拦截模式指令时,维持当前的运行程序为所述启动程序。
一种基于CAN的软件升级装置,包括:
更新指令接收模块,用于接收上位机的更新指令;
程序跳转模块,用于响应于所述更新指令,将当前的运行程序由应用程序跳转至启动程序;
文件传输请求接收模块,用于在所述启动程序中,接收所述上位机的文件传输请求;
程序擦除模块,用于响应于所述文件传输请求,将存储器中的所述应用程序擦除;
更新包写入模块,用于接收所述上位机的更新包,将所述更新包写入所述存储器中,其中,所述更新包携带更新后的应用程序。
一种基于CAN的软件升级装置,包括:
更新指令发送模块,用于向控制器发送更新指令;
文件传输请求发送模块,用于向所述控制器发送文件传输请求;
更新包发送模块,用于向所述控制器发送更新包,其中,所述更新包携带更新后的应用程序。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
接收上位机的更新指令;
响应于所述更新指令,将当前的运行程序由应用程序跳转至启动程序;
在所述启动程序中,接收所述上位机的文件传输请求;
响应于所述文件传输请求,将存储器中的所述应用程序擦除;
接收所述上位机的更新包,将所述更新包写入所述存储器中,其中,所述更新包携带更新后的应用程序。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
向控制器发送更新指令;
向所述控制器发送文件传输请求;
向所述控制器发送更新包,其中,所述更新包携带更新后的应用程序。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收上位机的更新指令;
响应于所述更新指令,将当前的运行程序由应用程序跳转至启动程序;
在所述启动程序中,接收所述上位机的文件传输请求;
响应于所述文件传输请求,将存储器中的所述应用程序擦除;
接收所述上位机的更新包,将所述更新包写入所述存储器中,其中,所述更新包携带更新后的应用程序。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
向控制器发送更新指令;
向所述控制器发送文件传输请求;
向所述控制器发送更新包,其中,所述更新包携带更新后的应用程序。
上述基于CAN的软件升级方法、装置、计算机设备和存储介质,上位机通过CAN向控制器发送更新指令,使得控制器将当前运行的应用程序停止,并运行启动程序,使得控制器在接收到上位机的文件传输请求后,能够将存储器中的应用程序擦除,进而在接收到更新包后,能够将更新包吸入至存储器中,使得应用程序得到更新,无需仿真器进行应用程序的更新,有效提高了更新效率,且提高了安全性。实现了多节点控制器的应用程序远程更新,无需拆开机箱连接仿真器刷新底层BOOT程序,提升了产品的维护效率。
附图说明
图1A为一个实施例中基于CAN的软件升级方法的流程示意图;
图1B为另一个实施例中基于CAN的软件升级方法的流程示意图;
图2为又一个实施例中基于CAN的软件升级方法的流程示意图;
图3为再一个实施例中基于CAN的软件升级方法的流程示意图;
图4为一个实施例中基于CAN的软件升级装置的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1A所示,提供了一种基于CAN的软件升级方法,本实施例中的基于CAN的软件升级方法适用于控制器,其包括:
步骤110,接收上位机的更新指令。
具体地,更新指令由上位机通过CAN发送至控制器,控制器通过CAN接收上位机的更新指令。该更新指令用于使得控制器将当前运行的应用程序切换至启动程序。
本实施例中,在一节车厢内最多布置32个机箱,每一机箱内设置一控制器, 32个控制器相当于CAN通信网络里面的32个节点,而上位机与这32个控制器通过CAN连接,使得32个控制器与上位机之间能够通信。
步骤120,响应于所述更新指令,将当前的运行程序由应用程序跳转至启动程序。
具体地,该启动程序也称为BOOT程序,该启动程序为底层的程序,而应用程序为系统层面或应用层面的程序。一般而言,在控制器运行过程中,其上运行的称为应用程序,本步骤中,当控制器接收到更新指令后,控制器响应更新指令,将当前正在运行的程序由应用程序切换至启动程序,即,将当前正在运行的应用程序停止,并且运行启动程序。
步骤130,在所述启动程序中,接收所述上位机的文件传输请求。
具体地,文件传输请求由上位机发送,该文件传输请求携带更新包的文件信息,该文件信息包含更新包的数据量和更新的应用程序的序号。该数据量记录了更新的应用程序的文件大小,该更新的应用程序的序号对应控制器的其中一个 CPU(central processingunit,中央处理器),比如CPU1或者CPU2。
本步骤中,由于当前运行程序为启动程序,在此程序下,能够接收上位机的文件传输请求,并且对此上位机的文件传输请求做出响应。
步骤140,响应于所述文件传输请求,将存储器中的所述应用程序擦除。
具体地,当控制器接收到文件传输请求时,表明存在需要更新的应用程序。因此,本步骤中,控制器响应文件传输请求,将存储器中的所述应用程序擦除。应该理解的是,由于应用程序被停止了,因此,本步骤中可对应用程序进行擦除。由于存储器中的应用程序被擦除,使得更新后的应用程序能够写入,此外,应该理解的是,应用程序和启动程序可以是存储在同一存储器中,比如,应用程序和启动程序均存储在FLASH(闪存)中,但应用程序和启动程序存储在存储器中的不同地址中,因此,将存储器中的应用程序,而不会对启动程序造成影响。
步骤150,接收所述上位机的更新包,将所述更新包写入所述存储器中,其中,所述更新包携带更新后的应用程序。
具体地,该更新包内的携带的数据即为待更新的应用程序或者说是更新后的应用程序。本步骤中,由于原有的存储在存储器中的应用程序被擦除,因此,控制器在接收到上位机的更新包后,能够将更新包中携带的应用程序写入至存储器中擦除后的地址中,使得应用程序得到更新。
上述实施例中,上位机通过CAN向控制器发送更新指令,使得控制器将当前运行的应用程序停止,并运行启动程序,使得控制器在接收到上位机的文件传输请求后,能够将存储器中的应用程序擦除,进而在接收到更新包后,能够将更新包吸入至存储器中,使得应用程序得到更新,无需仿真器进行应用程序的更新,有效提高了更新效率,且提高了安全性。实现了多节点控制器的应用程序远程更新,无需拆开机箱连接仿真器刷新底层BOOT程序,提升了产品的维护效率。
为了在应用程序出现异常或者错误时,仍然能够高效地应用程序的更新,在一个实施例中,如图1B所示,在所述接收上位机的更新指令的步骤之前还包括:
步骤101,检测是否接收到所述上位机的拦截模式指令。
步骤102,当检测到所述上位机的所述拦截模式指令时,维持当前的运行程序为所述启动程序。
值得一提的是,当控制器上的应用程序存在异常时,控制器是无法从当前的运行的应用程序跳转至启动程序的。具体地,在没有拦截模式的情况下,控制器每次上电先运行启动程序,启动程序检测控制器内是否有应用程序,若有应用程序,则跳转到应用程序并开始执行应用程序;应用程序正常运行时如果收到程序更新指令则跳转到启动程序并进行应用程序的更新;如果应用程序异常,则可能导致应用程序无法跳转到启动程序,则不能进行应用程序更新,此时需要拆开机箱用仿真器将应用程序擦除,后续才能正常更新应用程序。这样无疑需要耗费较大的时间成本,效率较低。
本实施例中,控制器在接收到上位机的拦截模式指令,将继续当前运行的启动程序,而不会跳转至应用程序。具体地,上位机通过向控制器发送拦截模式指令,使得控制器工作在拦截模式下,也就是维持当前运行的程序为启动程序,使得控制器当前运行的程序停留在启动程序,进而避免了控制器默认跳转至应用程序。由于控制器在拦截模式下停留在启动程序,而没有进入应用程序,即使应用程序出现异常或者错误,依然能够将存储器中的应用程序擦除,并且进行应用程序的更新。
上述实施例中,不仅实现了多节点控制器的应用程序远程更新,并且在刷错应用程序的情况下无需拆开机箱连接仿真器刷新底层BOOT程序,提升了产品的维护效率。
为了在进行应用程序更新时,使得控制器能够及时进入拦截模式,在一个实施例中,步骤101为在上电后,运行所述启动程序,并在上电后的的预设时间内,检测是否接收到所述上位机的拦截模式指令。
步骤102为:当在上电后的的预设时间内检测到所述上位机的所述拦截模式指令时,维持当前的运行程序为所述启动程序。
应该理解的是,在没有接收到拦截模式指令时,控制器在上电的预设时间后,将由启动程序跳转至应用程序,这样,当应用程序存在异常或者错误时,将无法跳转至启动程序进行更新,因此,本实施例中,当需要对应用程序更新时,在控制器上电前,上位机首先启动拦截模式,在控制器上电工作时,向控制器发送拦截模式指令,由于控制器在上电后的预设时间内,将持续运行启动程序,且在预设时间内,不会跳转至应用程序,这样,控制器在预设时间内接收到拦截模式指令后,将维持运行启动程序,在预设时间后,仍停留在启动程序,而不会跳转至应用程序,从而实现即使应用程序出现异常或者错误,依然能够将存储器中的应用程序擦除,并且进行应用程序的更新。应该理解的是,本实施例中,通过将控制器配置为在上电后的预设时间内运行启动程序,通过预留预设时间,使得控制器能够在跳转应用程序前能够及时接收到拦截模式指令,从而在需要进行应用程序更新时,有效避免控制器运行应用程序。
在一个实施例中,所述接收所述上位机的更新包,将所述更新包写入所述存储器中的步骤包括:接收所述上位机的更新包和校验信息;按照预设规则计算得到所述更新包的校验值,检测所述校验值与所述校验信息是否一致;当所述校验值与所述校验信息一致时,将所述更新包写入所述存储器中。
本实施例中,通过校验值和校验信息的对比,进而检测上位机发送的更新包与控制器接收的更新包是否一致,从而校验出控制器接收的更新包是否有误,当校验的更新包无误后,将更新包写入存储器中,实现应用程序的更新。
本实施例中,上位机的校验信息根据更新包生成,比如,上位机按照预设规则计算得到更新包的校验信息。一个实施例中,预设规则为对更新包中的各字节的值进行累加,比如,上位机将更新包中的各字节的值累加,得到校验信息,控制器将接收到的更新包的各字节的值进行累加,得到校验值,检测校验值和校验信息的值是否一直,当两者一致时,表明控制器接收到的更新包是完整的、没有差错的。
应该理解的是,应用程序包括多个数据包,每一数据包即为一更新包,每一数据包包括512个字节,应该理解的是,多个数据包中的最后一个数据包有可能不足512个字节。每个数据包中的其中一个字节为包序号,该包需要用于记录当前传输的数据包的序号,以使得控制器能够确认当前接收到的数据包是第几个数据包。
在一个实施例中,将所述更新包写入所述存储器中的步骤还包括:接收所述上位机的更新包;解析所述更新包得到包序号,根据所述包序号将所述更新包依次写入所述存储器中。比如,根据包序号检测是否丢失更新包,当检测到更新包丢失时,向上位机发送重发请求,所述重发请求携带丢失的更新包的包序号。这样,控制器能够根据包序号,依序将更新包写入存储器中,此外,还能够检测是否丢失更新包,比如,当两个包序号之间存在一个包序号未被接收到,表明该更新包丢失,则控制器请求上位机重发丢失的更新包,从而使得应用程序能够被控制器完整地下载。
在一个实施例中,将所述更新包写入所述存储器中的步骤包括:接收所述上位机的更新包和校验信息;计算接收到的全部所述更新包的校验和,检测所述校验值与所述校验信息是否一致;当所述校验值与所述校验信息一致时,将所述更新包写入所述存储器中。
本实施例中,校验信息为上位机将全部更新包的各字节累加得到的值,而校验和为控制器将接收到的全部的更新包的各字节累加得到的值,通过两者的对比,从而使得在更新包全部发送完成后,对全部更新包进行校验,从而检测控制器是否完整、无差错地接收了全部更新包。
在一个实施例中,所述接收上位机的更新指令的步骤之前还包括:接收所述上位机的请求指令,响应于所述请求指令,向所述上位机发送响应信息。
本实施例中,上位机对控制器的应用程序的更新采用应答模式。本实施例中,上位机向控制器发送请求指令,该请求指令用于检测控制器与上位机的通信是否通常。当上位机接收到控制器响应于请求指令而发送的响应信息,表明控制器能够及时做出响应,两者的通信稳定,能够进行应用程序的更新。
比如,上位机发送请求指令,当接收到控制器给出的响应后再发送下一帧指令,若1s内未收到响应,上位机间隔1s后再发送该指令,若1s内还是未收到响应,则再间隔2s后再发送该指令,若1s内还是未收到响应,上位机则报错。
在一个实施例中,提供一种基于CAN的软件升级方法,本实施例中的基于 CAN的软件升级方法适用于上位机,如图2所示,其包括:
步骤210,向控制器发送更新指令。
本实施例中,上位机通过CAN向控制器发送更新指令。该更新指令用于使得控制器将当前运行的应用程序切换至启动程序。
本实施例中,在一节车厢内最多布置32个机箱,每一机箱内设置一控制器, 32个控制器相当于CAN通信网络里面的32个节点,而上位机与这32个控制器通过CAN连接,使得32个控制器与上位机之间能够通信。
步骤220,在控制器将当前的运行程序由应用程序跳转至启动程序时,向所述控制器发送文件传输请求。
本实施例中,当控制器接收到更新指令后,将响应更新指令将当前的运行程序由应用程序跳转至启动程序,控制器此时运行启动程序,此时,上位机向控制器发送文件传输请求。该文件传输请求携带更新包的文件信息,该文件信息包含更新包的数据量和更新的应用程序的序号。控制器在接收到文件传输请求后,将控制器的存储器中的所述应用程序擦除。
步骤230,向所述控制器发送更新包,其中,所述更新包携带更新后的应用程序。
本实施例中,在控制器将其存储器中的所述应用程序擦除后,向控制器发送更新包,以使得控制器将更新包携带更新后的应用程序写入至存储器中,使得控制器的应用程序得到更新。
为了在应用程序出现异常或者错误时,仍然能够高效地应用程序的更新,在一个实施例中,在所述向控制器发送更新指令的步骤之前还包括:向所述控制器发送拦截模式指令。
值得一提的是,当控制器上的应用程序存在异常时,控制器是无法从当前的运行的应用程序跳转至启动程序的。本实施例中,拦截模式指令用于使得控制器将当前运行的程序维持在启动程序,这样,当控制器接收到拦截模式指令时,能够停留在启动程序,而不会跳转至应用程序。由于控制器在拦截模式下停留在启动程序,而没有进入应用程序,即使应用程序出现异常或者错误,依然能够将存储器中的应用程序擦除,并且进行应用程序的更新。
在一个实施例中,所述向所述控制器发送拦截模式指令的步骤包括:在所述控制器上电后的预设时间内,向所述控制器发送拦截模式指令。
应该理解的是,在没有接收到拦截模式指令时,控制器在上电的预设时间后,将由启动程序跳转至应用程序,这样,当应用程序存在异常或者错误时,将无法跳转至启动程序进行更新,因此,本实施例中,当需要对应用程序更新时,在控制器上电前,上位机首先启动拦截模式,在控制器上电工作时,向控制器发送拦截模式指令,由于控制器在上电后的预设时间内,将持续运行启动程序,且在预设时间内,不会跳转至应用程序,这样,控制器在预设时间内接收到拦截模式指令后,将维持运行启动程序,在预设时间后,仍停留在启动程序,而不会跳转至应用程序,从而实现即使应用程序出现异常或者错误,依然能够将存储器中的应用程序擦除,并且进行应用程序的更新。应该理解的是,本实施例中,通过将控制器配置为在上电后的预设时间内运行启动程序,通过预留预设时间,使得控制器能够在跳转应用程序前能够及时接收到拦截模式指令,从而在需要进行应用程序更新时,有效避免控制器运行应用程序。
在一个实施例中,步骤230包括向所述控制器发送更新包和校验信息。本实施例中,上位机的校验信息根据更新包生成,比如,上位机按照预设规则计算得到更新包的校验信息。一个实施例中,预设规则为对更新包中的各字节的值进行累加,比如,上位机将更新包中的各字节的值累加,得到校验信息,这样,控制器能够得到校验信息后,能够对接收的更新包进行校验,检测控制器接收到的更新包是完整的、没有差错的。
应该理解的是,虽然图1A-图1B的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。比如,图1B的步骤可以在图1A中的任一步骤前执行,也可以在图1A 中的任一步骤后执行,同理,图1B的步骤可以在图1A中的任一步骤前执行,也可以在图1A中的任一步骤后执行。而且,图1A-图1B中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图3所示,提供一种基于CAN的软件升级方法,包括:
步骤310,上位机向控制器发送更新指令;
步骤320,所述控制器响应于所述更新指令,将当前的运行程序由应用程序跳转至启动程序;
步骤330,所述上位机向所述控制器发送文件传输请求;
步骤340,所述控制器在所述启动程序中,接收所述上位机的文件传输请求,响应于所述文件传输请求,将存储器中的所述应用程序擦除;
步骤350,所述上位机向所述控制器发送更新包,其中,所述更新包携带更新后的应用程序;
步骤360,所述控制器接收所述上位机的更新包,将所述更新包写入所述存储器中。
上述实施例中,上位机通过CAN向控制器发送更新指令,使得控制器将当前运行的应用程序停止,并运行启动程序,使得控制器在接收到上位机的文件传输请求后,能够将存储器中的应用程序擦除,进而在接收到更新包后,能够将更新包吸入至存储器中,使得应用程序得到更新,无需仿真器进行应用程序的更新,有效提高了更新效率,且提高了安全性。实现了多节点控制器的应用程序远程更新,无需拆开机箱连接仿真器刷新底层BOOT程序,提升了产品的维护效率。
在一个实施例中,在所述上位机向控制器发送更新指令的步骤之前还包括步骤:所述上位机向所述控制器发送拦截模式指令;所述控制器在上电后的预设时间内,当检测到所述上位机的所述拦截模式指令时,维持当前的运行程序为所述启动程序。
本实施例中,如果控制器上的应用程序存在异常或者错误,则无法从应用程序跳转至启动程序。因此,控制器在上电的预设时间内将运行启动程序,在此期间内,上位机向控制器发送拦截模式指令,以使得控制器能够停留在启动程序,进行应用程序的更新。
下面是一个具体的实施例:
本实施例基于CAN通信实现磁浮列车组网多控制器系统中双核MCU(Microcontroller Unit,微控制单元)的软件在线升级。
在一节车厢内最多布置32个机箱,每一机箱内设置一控制器,32个控制器相当于CAN通信网络里面的32个节点。上位机与这32个节点进行数据交互,因此,需要为32个节点分别分配ID(Identity document,身份标识),以便实现单个节点和所有节点的程序更新。CAN通信标准帧ID长度为11位,将其低6 位(bit0~bit5)标识32个节点的地址,即低6位为设备标识位,用于标识节点的地址,各节点的地址相互不同。通信标准帧的剩余5位用来区分功能,CAN通信帧的结构如表1所示:
表1 CAN通信帧ID分配
表1中,单点程序下载指的是,接收到该帧的节点进行应用程序更新,而所有节点程序下载指的是,所有的接收到该帧的节点进行应用程序更新。拦截模式单点程序下载指的是,接收到该帧的节点进入拦截模式,维持当前运行的启动程序,而不会跳转至应用程序;拦截模式所有节点程序下载指的是,接收到该帧的所有的节点进入拦截模式,维持当前运行的启动程序,而不会跳转至应用程序。
上位机对控制器更新程序采用应答模式,即上位机发送请求指令,当接收到控制器给出的响应后再发送下一帧指令,若1s内未收到响应,上位机间隔1s后再发送该指令,若1s内还是未收到响应,则再间隔2s后再发送该指令,若1s内还是未收到响应,上位机则报错。程序更新具体步骤如下:
1、下载使能:上位机告知控制器即将进行程序更新,控制器执行程序由应用程序跳转到BOOT程序,准备进行程序更新。
2、文件传输请求:上位机把程序文件大小以及下载程序序号(CPU1或者 CPU2)发送给设备,设备收到该命令后,把对应Flash中的应用程序擦除。
3、文件下载:上位机把程序文件中的内容分包发送给设备。需将512个字节整包发送(除去最后不足512字节)。上位机发送时用一个字节的包序号(变化范围为0~255,超出255后,从0开始。)标识当前传输的是第几包,设备端需要对包序号进行校验。
4、校验和:上位机读取程序文件内容后,计算出校验和发送给设备,设备根据接收到的校验和,确认上位机传输的程序内容是否正确。校验和的计算方式:把所有的程序内容,按照字节累加求和,最终的结果为一个无符号32位的值。
在没有拦截模式的情况下,每次控制器上电先运行BOOT程序,BOOT程序检测控制器内是否有应用程序,若有应用程序,则跳转到应用程序并开始执行应用程序;应用程序正常运行时如果收到程序更新指令则跳转到BOOT程序进行应用程序的更新;如果应用程序异常,则可能导致应用程序无法跳转到BOOT程序,则不能进行应用程序更新,此时需要拆开机箱用仿真器将应用程序擦除,后续才能正常更新应用程序。
为了解决该问题,本实施例中,增加了拦截模式,在控制器上电前,上位机先启动拦截模式,对控制器发送拦截模式指令;控制器上电后会在BOOT程序里面停留1s中,在此时间断内如果接收到拦截模式指令,则控制器就会一直停留在 BOOT程序里面,以便完成应用程序的更新。
在一个实施例中,如图4所示,提供了一种基于CAN的软件升级装置,其应用于与上位机通信的控制器,包括:
更新指令接收模块410,用于接收上位机的更新指令;
程序跳转模块420,用于响应于所述更新指令,将当前的运行程序由应用程序跳转至启动程序;
文件传输请求接收模块430,用于在所述启动程序中,接收所述上位机的文件传输请求;
程序擦除模块440,用于响应于所述文件传输请求,将存储器中的所述应用程序擦除;
更新包写入模块450,用于接收所述上位机的更新包,将所述更新包写入所述存储器中,其中,所述更新包携带更新后的应用程序。
在一个实施例中,基于CAN的软件升级装置还包括:
拦截模式指令检测模块,用于检测是否接收到所述上位机的拦截模式指令;
当前程序维持模块,用于当检测到所述上位机的所述拦截模式指令时,维持当前的运行程序为所述启动程序。
在一个实施例中,拦截模式指令检测模块用于在上电后,运行所述启动程序,并在上电后的的预设时间内,检测是否接收到所述上位机的拦截模式指令。
在一个实施例中,更新包写入模块包括:
校验信息接收单元,用于接收所述上位机的更新包和校验信息;
校验信息检测单元,用于按照预设规则计算得到所述更新包的校验值,检测所述校验值与所述校验信息是否一致;
更新包写入单元,用于当所述校验值与所述校验信息一致时,将所述更新包写入所述存储器中。
在一个实施例中,基于CAN的软件升级装置还包括:
应答模块,用于接收所述上位机的请求指令,响应于所述请求指令,向所述上位机发送响应信息。
在一个实施例中,提供一种基于CAN的软件升级装置,其应用于与控制器通信的上位机,包括:
更新指令发送模块,用于向控制器发送更新指令;
文件传输请求发送模块,用于向所述控制器发送文件传输请求;
更新包发送模块,用于向所述控制器发送更新包,其中,所述更新包携带更新后的应用程序。
在一个实施例中,基于CAN的软件升级装置还包括拦截模式指令发送模块,用于向所述控制器发送拦截模式指令。
在一个实施例中,拦截模式指令发送模块,用于在所述控制器上电后的预设时间内,向所述控制器发送拦截模式指令。
关于基于CAN的软件升级装置的具体限定可以参见上文中对于基于CAN的软件升级方法的限定,在此不再赘述。上述基于CAN的软件升级装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了计算机设备,该计算机设备为磁悬浮列车上的控制器。其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与上位机通过CAN连接通信。该计算机程序被处理器执行时以实现一种基于 CAN的软件升级方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
接收上位机的更新指令;
响应于所述更新指令,将当前的运行程序由应用程序跳转至启动程序;
在所述启动程序中,接收所述上位机的文件传输请求;
响应于所述文件传输请求,将存储器中的所述应用程序擦除;
接收所述上位机的更新包,将所述更新包写入所述存储器中,其中,所述更新包携带更新后的应用程序。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
检测是否接收到所述上位机的拦截模式指令;
当检测到所述上位机的所述拦截模式指令时,维持当前的运行程序为所述启动程序。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
在上电后,运行所述启动程序,并在上电后的的预设时间内,检测是否接收到所述上位机的拦截模式指令。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
接收所述上位机的更新包和校验信息;
按照预设规则计算得到所述更新包的校验值,检测所述校验值与所述校验信息是否一致;
当所述校验值与所述校验信息一致时,将所述更新包写入所述存储器中。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
接收所述上位机的请求指令,响应于所述请求指令,向所述上位机发送响应信息。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
向控制器发送更新指令;
向所述控制器发送文件传输请求;
向所述控制器发送更新包,其中,所述更新包携带更新后的应用程序。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
向所述控制器发送拦截模式指令。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
在所述控制器上电后的预设时间内,向所述控制器发送拦截模式指令。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
接收上位机的更新指令;
响应于所述更新指令,将当前的运行程序由应用程序跳转至启动程序;
在所述启动程序中,接收所述上位机的文件传输请求;
响应于所述文件传输请求,将存储器中的所述应用程序擦除;
接收所述上位机的更新包,将所述更新包写入所述存储器中,其中,所述更新包携带更新后的应用程序。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
检测是否接收到所述上位机的拦截模式指令;
当检测到所述上位机的所述拦截模式指令时,维持当前的运行程序为所述启动程序。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
在上电后,运行所述启动程序,并在上电后的的预设时间内,检测是否接收到所述上位机的拦截模式指令。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
接收所述上位机的更新包和校验信息;
按照预设规则计算得到所述更新包的校验值,检测所述校验值与所述校验信息是否一致;
当所述校验值与所述校验信息一致时,将所述更新包写入所述存储器中。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
接收所述上位机的请求指令,响应于所述请求指令,向所述上位机发送响应信息。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
向控制器发送更新指令;
向所述控制器发送文件传输请求;
向所述控制器发送更新包,其中,所述更新包携带更新后的应用程序。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
向所述控制器发送拦截模式指令。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
在所述控制器上电后的预设时间内,向所述控制器发送拦截模式指令。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM (EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM 以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM (SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态 RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (14)
1.一种基于CAN的软件升级方法,其特征在于,包括:
接收上位机的更新指令;
响应于所述更新指令,将当前的运行程序由应用程序跳转至启动程序;
在所述启动程序中,接收所述上位机的文件传输请求;
响应于所述文件传输请求,将存储器中的所述应用程序擦除;
接收所述上位机的更新包,将所述更新包写入所述存储器中,其中,所述更新包携带更新后的应用程序。
2.根据权利要求1所述的方法,其特征在于,在所述接收上位机的更新指令的步骤之前还包括:
检测是否接收到所述上位机的拦截模式指令;
当检测到所述上位机的所述拦截模式指令时,维持当前的运行程序为所述启动程序。
3.根据权利要求2所述的方法,其特征在于,所述检测是否接收到所述上位机的拦截模式指令的步骤包括:
在上电后,运行所述启动程序,并在上电后的的预设时间内,检测是否接收到所述上位机的拦截模式指令。
4.根据权利要求1所述的方法,其特征在于,所述接收所述上位机的更新包,将所述更新包写入所述存储器中的步骤包括:
接收所述上位机的更新包和校验信息;
按照预设规则计算得到所述更新包的校验值,检测所述校验值与所述校验信息是否一致;
当所述校验值与所述校验信息一致时,将所述更新包写入所述存储器中。
5.根据权利要求1至4任一项中所述的方法,其特征在于,所述接收上位机的更新指令的步骤之前还包括:
接收所述上位机的请求指令,响应于所述请求指令,向所述上位机发送响应信息。
6.一种基于CAN的软件升级方法,其特征在于,包括:
向控制器发送更新指令;
向所述控制器发送文件传输请求;
向所述控制器发送更新包,其中,所述更新包携带更新后的应用程序。
7.根据权利要求6所述的方法,其特征在于,在所述向控制器发送更新指令的步骤之前还包括:
向所述控制器发送拦截模式指令。
8.根据权利要求7所述的方法,其特征在于,所述向所述控制器发送拦截模式指令的步骤包括:
在所述控制器上电后的预设时间内,向所述控制器发送拦截模式指令。
9.一种基于CAN的软件升级方法,其特征在于,包括:
上位机向控制器发送更新指令;
所述控制器响应于所述更新指令,将当前的运行程序由应用程序跳转至启动程序;
所述上位机向所述控制器发送文件传输请求;
所述控制器在所述启动程序中,接收所述上位机的文件传输请求,响应于所述文件传输请求,将存储器中的所述应用程序擦除;
所述上位机向所述控制器发送更新包,其中,所述更新包携带更新后的应用程序;
所述控制器接收所述上位机的更新包,将所述更新包写入所述存储器中。
10.根据权利要求9所述的方法,其特征在于,在所述上位机向控制器发送更新指令的步骤之前还包括步骤:
所述上位机向所述控制器发送拦截模式指令;
所述控制器在上电后的预设时间内,当检测到所述上位机的所述拦截模式指令时,维持当前的运行程序为所述启动程序。
11.一种基于CAN的软件升级装置,其特征在于,包括:
更新指令接收模块,用于接收上位机的更新指令;
程序跳转模块,用于响应于所述更新指令,将当前的运行程序由应用程序跳转至启动程序;
文件传输请求接收模块,用于在所述启动程序中,接收所述上位机的文件传输请求;
程序擦除模块,用于响应于所述文件传输请求,将存储器中的所述应用程序擦除;
更新包写入模块,用于接收所述上位机的更新包,将所述更新包写入所述存储器中,其中,所述更新包携带更新后的应用程序。
12.一种基于CAN的软件升级装置,其特征在于,包括:
更新指令发送模块,用于向控制器发送更新指令;
文件传输请求发送模块,用于向所述控制器发送文件传输请求;
更新包发送模块,用于向所述控制器发送更新包,其中,所述更新包携带更新后的应用程序。
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010350275.3A CN113568629A (zh) | 2020-04-28 | 2020-04-28 | 基于can的软件升级方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010350275.3A CN113568629A (zh) | 2020-04-28 | 2020-04-28 | 基于can的软件升级方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113568629A true CN113568629A (zh) | 2021-10-29 |
Family
ID=78158052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010350275.3A Pending CN113568629A (zh) | 2020-04-28 | 2020-04-28 | 基于can的软件升级方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113568629A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114661326A (zh) * | 2022-03-22 | 2022-06-24 | 中国北方车辆研究所 | 一种多处理器嵌入式系统软件快速更新方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140282978A1 (en) * | 2013-03-15 | 2014-09-18 | Sergio Demian LERNER | Method and apparatus for secure interaction with a computer service provider |
WO2016000493A1 (zh) * | 2014-06-30 | 2016-01-07 | 飞天诚信科技股份有限公司 | 一种安全终端的双芯片方案的固件更新方法 |
CN106372538A (zh) * | 2016-08-30 | 2017-02-01 | 苏州国芯科技有限公司 | 一种基于SoC芯片的固件保护方法 |
WO2018054060A1 (zh) * | 2016-09-26 | 2018-03-29 | 深圳市中兴微电子技术有限公司 | 一种处理器及BootLoader程序的更新方法、存储介质 |
CN107957881A (zh) * | 2017-12-06 | 2018-04-24 | 广东嘉腾机器人自动化有限公司 | 单片机程序更新方法、系统以及计算机可读存储介质 |
CN109885331A (zh) * | 2019-03-01 | 2019-06-14 | 湖南汇博电子科技股份有限公司 | 软件升级方法、控制方法、系统、存储介质及电子设备 |
CN110780910A (zh) * | 2019-10-29 | 2020-02-11 | 苏州长光华医生物医学工程有限公司 | 下位机软件更新方法及系统、计算机可读存储介质 |
-
2020
- 2020-04-28 CN CN202010350275.3A patent/CN113568629A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140282978A1 (en) * | 2013-03-15 | 2014-09-18 | Sergio Demian LERNER | Method and apparatus for secure interaction with a computer service provider |
WO2016000493A1 (zh) * | 2014-06-30 | 2016-01-07 | 飞天诚信科技股份有限公司 | 一种安全终端的双芯片方案的固件更新方法 |
US20170115984A1 (en) * | 2014-06-30 | 2017-04-27 | Feitian Technologies Co., Ltd. | Firmware update method in two-chip solution for secure terminal |
CN106372538A (zh) * | 2016-08-30 | 2017-02-01 | 苏州国芯科技有限公司 | 一种基于SoC芯片的固件保护方法 |
WO2018054060A1 (zh) * | 2016-09-26 | 2018-03-29 | 深圳市中兴微电子技术有限公司 | 一种处理器及BootLoader程序的更新方法、存储介质 |
CN107957881A (zh) * | 2017-12-06 | 2018-04-24 | 广东嘉腾机器人自动化有限公司 | 单片机程序更新方法、系统以及计算机可读存储介质 |
CN109885331A (zh) * | 2019-03-01 | 2019-06-14 | 湖南汇博电子科技股份有限公司 | 软件升级方法、控制方法、系统、存储介质及电子设备 |
CN110780910A (zh) * | 2019-10-29 | 2020-02-11 | 苏州长光华医生物医学工程有限公司 | 下位机软件更新方法及系统、计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
郭洁;张一飞;李春芳;黄建民;: "基于CAN总线的分布式飞机客舱模拟器控制系统", 自动化与仪表, no. 12 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114661326A (zh) * | 2022-03-22 | 2022-06-24 | 中国北方车辆研究所 | 一种多处理器嵌入式系统软件快速更新方法 |
CN114661326B (zh) * | 2022-03-22 | 2024-04-30 | 中国北方车辆研究所 | 一种多处理器嵌入式系统软件快速更新方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106569847B (zh) | 一种用于车载系统基于移动网络实现iap远程升级的方法 | |
CN106250192B (zh) | 上位机的软件升级方法及系统 | |
CN109189445B (zh) | 一种物联网设备程序升级的方法 | |
CN111813428A (zh) | 终端固件的升级方法、装置、电子设备及存储介质 | |
CN111124440A (zh) | 芯片软件烧录方法、芯片软件烧录数据处理方法和装置 | |
CN108509215B (zh) | 一种系统软件的更换方法、装置、终端设备及存储介质 | |
CN111240720A (zh) | 引导程序升级方法、装置及存储介质 | |
CN104679672A (zh) | 数据储存装置以及快闪存储器控制方法 | |
CN112181459B (zh) | 一种cpld升级优化方法及系统 | |
CN111950014A (zh) | 服务器系统启动的安全度量方法、安全度量装置及服务器 | |
CN110932891A (zh) | 防出错ota升级方法、装置、计算机设备及存储介质 | |
CN112035144A (zh) | 区块链系统的升级方法、装置、计算机设备及存储介质 | |
CN113672270A (zh) | 升级方法,计算机系统和远端升级设备 | |
CN108984200A (zh) | 一种定时更新固件的方法及装置 | |
CN113568629A (zh) | 基于can的软件升级方法、装置、计算机设备和存储介质 | |
CN114489732A (zh) | 一种更新设备的fpga固件的方法、装置及电子设备 | |
CN112433769A (zh) | 一种bmc启动方法、装置、计算机设备及存储介质 | |
CN111966461A (zh) | 虚拟机集群节点守护方法、装置、设备及存储介质 | |
CN111198832A (zh) | 一种处理方法和电子设备 | |
CN115827069A (zh) | 服务器主板的启动控制方法、系统及装置 | |
CN113778485A (zh) | 电子芯片的系统运行方法、装置、电子芯片和存储介质 | |
CN112947337A (zh) | 组态同步方法、装置及电子设备 | |
CN113114730A (zh) | 升级方法、装置、终端设备及存储介质 | |
JP6946027B2 (ja) | Icカード、携帯可能電子装置、プログラム、処理装置及び処理システム | |
KR101660180B1 (ko) | Ic 카드, 휴대 가능 전자 장치 및 ic 카드 처리 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |