一种基于EtherCat耦合器的IO模块固件更新方法与流程
- 国知局
- 2024-07-31 23:02:57
本发明涉及设备软件升级,尤其涉及一种基于ethercat耦合器的io模块固件更新方法。
背景技术:
1、插片式io产品是一种在工业自动化领域广泛使用的输入输出设备。它通常由总线耦合器和功能丰富的io模块组成,这些模块可以通过插片的方式连接到总线耦合器上,从而实现信号的输入和输出。随着插片式io产品的功能扩展和技术更新时就需要进行系统升级。例如在专利号202210606748.0的发明专利《一种基于ethercat通讯驱动器的固件升级方法及装置》中公开了一种基于ethercat通讯驱动器的固件升级方法及装置,使仅支持coe协议的待升级固件同时支持coe协议和foe协议,该方法在原协议栈中添加foe协议内容,由引导程序添加flash读写函数接口,将foe协议数据通过flash读写函数接口写入flash内存;修改待升级驱动器通讯配置xml文件使支持foe协议;通过仿真器软件将引导程序和固件程序合并生成烧录文件;烧录完成引导程序和固件程序下载,解决了现有技术中通过串口进行固件升级在设备现场无法操作或很难操作,需要携带额外的工具和接口,产品上需要预留空间,并为此付出成本,同时传输过程不可中断,无纠错机制的问题。
2、实际上,由该专利可以看到,插片式io产品的传统升级方法主要包括外挂eeprom或专门从mcu内部存储单元划分空间来存取数据两种方案。然而,这两种方法都存在一定的不足:传统外挂eeprom的方式通常需要将产品从产线拆下后,拆除壳体,使用烧录器烧录新的固件,这样不仅增加了mcu与eeprom之间的读写接口,加重了mcu的管脚负担,还降低了数据的读写速度并增加了功耗。而专门为运行数据划分内部存储单元则会大量减少程序代码的存储空间,同时对于存储空间的读写、擦除等操作相对复杂,且需要特别小心以避免误操作导致有用程序代码的丢失。更重要的是以上两种方式,无论是那种方式,都需要升级专用的烧录器和烧录软件,即上述现有技术中提到的仿真器软件,如此一来整体操作难度大,必须要由专业人员操作,更新效率低。
技术实现思路
1、针对现有技术的缺点,本发明的目的是提出一种基于ethercat耦合器的io模块固件更新方法,简化了固件升级时工作人员的操作,节省了硬件成本。而且还引入了更安全的机制避免了升级过程中可能带来的风险。
2、为了达到所述的目的,本发明一种基于ethercat耦合器的io模块固件更新方法,用于升级通过背板总线连接在ethercat耦合器上的插片式io,依照以下步骤运行,
3、s1:产线的主站将新固件文件下发到ethercat耦合器;
4、s2:ethercat耦合器收到文件后进行重新打包并制作出固件升级请求文件,ethercat耦合器通过背板总线连接插片式io发出固件升级请求文件;
5、s3:插片式io中的mcu模块获取固件升级请求后选定固件升级的具体时间,并根据固件升级请求划分出对应空间;
6、s4:在预定的升级时间,ethercat耦合器通过背板总线发送完整的固件升级包;
7、s5:mcu模块接受到接收固件升级包的请求后进行校验,校验无误后将固件升级包存放于划分出的空间内进行解压升级;
8、s6:升级完毕后修改执行区域标记,重启后运行更新后的固件程序;
9、s7:判断升级成功,否则重新解压固件升级包再次执行s6;如依然更新失败,则记录更新失败并重新将原有的固件程序标记为执行区域。
10、优选的,所述s1中主站通过foe向ethercat耦合器传输完整升级文件组和升级代码。完整升级文件组包含固件、应用程序或其他软件组件的新版本数据,以及相关的元数据和说明。这些文件定义了升级的内容和目的。而升级代码则是用于实现本次升级过程的辅助脚本。由于升级通过ethercat耦合器,但是ethercat耦合器自身的固件或程序也需要升级,在不能及时更新ethercat耦合器内置程序的情况下,可以通过它升级代码读取升级文件组中的信息,并按照预定的逻辑和步骤执行升级操作。升级代码能够辅助确保完整升级文件组传输的完整性和准确性,特别适用于本发明这样对可靠性要求较高的场景。
11、优选的,所述s2中的固件升级请求中包括硬件配置需求、校验信息、基于硬件配置需求的升级总时长以及可接受的升级起始时间,所述硬件配置需求中包括了对应升级的硬件型号类别以及升级文件大小。本发明将固件升级请求和固件升级包分别发送,可以确保固件适宜于更新,而不会在下载完固件升级包后发现无法更新。
12、优选的,所述校验信息包括本次固件升级请求中包含的第一验证码和发送固件升级包时的第二验证码,以及基于第一验证码和第二验证码计算所得的校验码。形成新的校验码的方式在现有技术中已经较为常见,例如奇偶校验(parity check)、模运算校验、循环冗余校验(crc)等。mcu在进行校验时也会随时进行调整,从而变化最终校验码的信息。这样即便他人获取到第一验证码和第二验证码也无法直接推出最终采用的校验码。
13、优选的,所述插片式io的存储区划分为三个区域,其具体为用于存放引导程序的第一区域,用于存放升级配置以及相关记录的第二区域以及作为工作区域的第三区域;在收到固件升级请求文件后并判定剩余空间充足的情况下,在第三区域划分出临时区域。虽然分为三个区域,但是三个区域大小是不同的,第一区域基本基于引导程序的大小设置,并具有一定的冗余。第二区域非常小,在本发明中通常只占用两个页,而剩余的空间就是第三区域,第三区域的起始位置有程序升级标志位。
14、优选的, mcu执行临时区域的划分,mcu获取到固件升级请求文件后,首先编译出本次更新中bootloader程序对应的固件,记录该固件的大小;在确保bootloader程序所占空间充足的情况下,mcu从第二区域保存的配置信息中获取此插片式io的 flash的总体剩余容量,各个区域的分区容量,分区中各个分页的标准容量以及bootloader固件信息,结合固件升级请求文件中记载的升级包体积信息,自动进行flash的分区配置;将此配置信息存放于第二区域中,并根据此信息在第三区域中标注临时区域的起始位置。这样的操作过程中途的判定均由mcu完成,因此即便是非专业的操作人员也能实现这样的更新。
15、优选的,所述临时区域的空间大小满足同时存放固件升级包和从固件升级包中解压出来的升级程序代码;对这两部分内容分别设置有起始地址指针。这样有足够的空间,在更新完毕后无需删除更新压缩包,这样一旦解压过程中出现异常时,可以通过再次解压的方式来进行再次尝试,提高了更新的成功率。设置起始地址指针是为了便于在其它动作中找到指定的位置。
16、优选的,其中 mcu模块接收到固件升级包后,根据配置信息定位栈顶地址,并基于所述栈顶地址判定后续的起始地址是否合法;确认起始地址合法后引导程序将固件升级包下载、解压并配置完成,然后跳转程序到程序复位地址。这样可以更有效利用flash中的存储空间。
17、优选的,在判定后续的起始地址是否合法的过程中没有找到对应地址时,对栈顶地址进行偏移后进行重新寻址;再次无法找到合法的起始地址时报错并中止本次更新。因为在更新之前区域的位置还是有可能发生变化,但是这样的地址变化均会被记录在第二区域的运行记录中,mcu可以根据运行记录中的内容重新寻址。但是如果这样依然无法找到合法的起始地址则只能中止本次更新。
18、优选的,在s7确认更新成功后,将实际运行的固件程序所占区域标记为第一区域,并删除旧版固件程序所在的分区标志。这样也可以省略擦除原有程序的步骤。去掉分区标志,则后期如要使用,新的内容可以直接覆盖这部分空间。
19、本发明选择在基于ethercat耦合器的插片式io更新,是因为ethercat耦合器支持foe,这使得在更新过程中的文件传输具有很大的灵活性,而且传输可靠。
20、通过本发明所记载的技术方案,本发明所带来的技术效果主要是:
21、1、整个升级过程中无需额外的外挂存储器,同时采用了临时存储空间更换的方式,而不是现有技术中常见的固定替换空间的方式,使得更新所占用的存储空间更灵活。
22、2、升级过程中不仅对固件的传输进行一个校验,在引导程序中还增加了对升级固件整体校验的一个过程,可以有效避免因传输或文件存储带来的升级固件失效,从而导致升级不仅失败原有的固件也不可恢复的灾难性后果。
23、3、升级固件做了加密处理,在引导程序中解密并更新到应用程序区域。此操作有效保证了固件所有方的知识产权。第三方即使拿到升级固件,没有正确的校验码也不能使用。
24、通过本发明所述的技术方案,唯一缺点在于对插片式io的自备的flash存储总量有要求,否则无法使用本发明所记载的方式。
本文地址:https://www.jishuxx.com/zhuanli/20240730/195778.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表