System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种通过usb升级固件的方法技术_技高网

一种通过usb升级固件的方法技术

技术编号:40310164 阅读:4 留言:0更新日期:2024-02-07 20:53
一种通过usb升级固件的方法,包括:芯片上电后关闭看门狗计时模块并初始化计时器时钟;检测寄存器标志是否进入USB升级;加载预启动控制模块Pre‑Boot程序,并继续检测USB连接,根据检测USB连接结果确定立即重启进入USB升级或检测所有前置操作,所有前置操作都处理完后进入启动加载控制模块Bootloader控制程序运行;在Bootloader控制程序中执行片上系统应用程序启动前的前置操作,检测USB是否连接,根据检测结果确定立即重启进入USB升级或检测所有前置操作是否已处理完,在全部前置操作处理完之后,运行片上系统中的应用程序。本发明专利技术固化在RomCode中,也可以固化在Pre‑Boot中,宕机后将因看门狗自动重启从而在重启后能自动进入USB升级,有效避免USB连接检测时间对于开机速度的影响。

【技术实现步骤摘要】

本专利技术涉及设备固件升级,尤其涉及一种通过usb升级固件的方法


技术介绍

1、大多soc主控芯片厂家,为了追求成本的最优,在soc内部固化的romcode仅支持低速通信协议,并不支持usb高速通讯信协议;亦或者有些soc在设计之初并没有考虑支持usb等高速通信协议;亦或者虽然有usb升级功能,但某些特殊情况下仍然会发生无法升级或升级不方便的情况。然而,在开发过程中需要频繁的升级固件,或者在售后维修,工厂维修时需要非常便携的快速的固件升级方式。

2、另有部分现有技术选择u盘升级方式,该方式需要用户先将固件拷贝到u盘,然后再将u盘中的固件升级到系统的非易失性存储器。

3、为了能够让设备支持固件升级或者正常开机,现有技术一般有几种做法:

4、(1)在soc上电启动时,首先检测是否需要进入升级模式,比如,通常通过检测特定按键是否按下,来判断是否进入升级模式。如果有该特定按键有按下,则启动时直接进入升级模式,否则按正常开机启动。

5、(2)在soc上电启动时,检测固件的合法性。如果固件检测合法,则正常开机,否则,进入升级模式。通常为了让系统能够快速开机,不能对固件进行非常完整的检测,因为对固件进行非常完整的检测需要将整个固件进行读取和校验,这个过程会严重影响开机速度。通常的做法是检测固件的特定数据区域是否符合预先定义的特定格式即可快速判定固件的合法性。固件合法则进入正常启动。

6、(3)在soc上电启动时,在规定的时间内,通过某通信协议,比如串口通信协议,检测是否收到指定的数据,如果收到指定的数据,则进入升级模式;如果在规定的时间内没有检测到指定的数据,则正常开机。

7、(4)u盘升级方式,一般u盘是以具体某种文件系统格式形式存在的,一般是fat文件系统。soc上电时检测u盘中的特定文件内容,一旦检测特定文件存在并合法,则进入固件升级模式,否则,正常启动。

8、参考文献cn104123153a用于使用usb升级固件的装置与方法:该专利技术需要首先将标志1设置在安装在设备上的非易失存储器中以后重启设备。而设置该标志需要通过usb缆线接收来自所述计算机的固件升级信号。该方法是先启动系统固件,通过系统固件与计算机进行usb通信发送固件升级信号。该方法没有解决设备本身启动失败而无法通过usb缆线接收来自所述计算机的固件升级信号时,如何进入固件升级的问题。

9、cn116560687a基于usbmsc传输协议的固件升级方法及系统:该专利技术基于usb msc协议,并将设备模拟成一个磁盘。该实现方法需要较多的代码才能实现。如果将该方法固化在引导程序中,将导致引导程序变大,同时引导程序本身可能因为其他复杂的功能导致无法运行的情况,从而导致无法进行升级;如果将该方法固化在芯片的romcode中将增加芯片成本。该专利技术的另一个关键是引导程序读取升级标志位。该专利技术没有解决该标志位如何设置以及具体设置的方法。

10、cn109857434a基于usb的软件升级方法:该专利技术将设备配置成usb hid和usb大容量存储设备的复合设备。该实现方法需要较多的代码才能实现。如果将该方法固化在引导程序中,将导致引导程序变大;如果将该方法固化在芯片的romcode中将增加芯片成本。

11、cn107783769a一种通过usb升级电子设备的方法、装置及电子设备:该专利技术首先需要设备运行一套软件并接收升级指令。该专利技术没有解决假如设备因程序设计错误而启动失败,从而无法接收升级指令时,如何进行升级的问题。该专利技术同样也没有解决在不影响正常开机速度的前提下如何去接收升级指令的问题。

12、现有技术的固件升级方法有如下缺点:

13、(1)在soc上电时,通过按键检测的方式进入升级模式,需要在设备上保留特定按键。有时设备的设计本身就没有特定的按键,又或者soc的io资源不够,没有足够的io来设计该按键。另外,通过按键检测的方式,需要操作者按键开机,操作手法多了一个动作。对于软件开发过程中需要非常频繁的升级固件进行软件调试的情况,这个多余的按键动作非常不友好,影响开发效率。

14、(2)在soc上电时,检测固件的合法性,从而判断是否进入升级模式的方式。由于方案一般为了快速开机,无法对固件进行完整的合法性检测,而且,固件的大小未知,有可能方案的固件非常大,从而使固件的合法性检测通常限定为仅仅检测部分数据是否符合特定格式。这种方式有可能会遇到在检测固件时,其被检测的数据符合特定格式,但其他数据部分可能发生错误,从而导致上电启动时,误认为固件合法,但实际启动固件后即发生无法继续启动而宕机的情况。对于此种发生宕机的情况,通常的做法是,在soc上电时人为的使读到的固件发生错误,比如,短接非易失性存储器的特定数据线pin脚,或者结合前面第一种按键检测的方式,使系统进入升级模式。这种方法的缺点是,一旦固件检测合法,但实际又不能成功启动时,系统宕机,无法再进入升级模式。只能通过其他辅助手动使系统进入升级模式。然而,在软件的开发过程中,经常会发生软件不成熟而导致系统启动后死机的情况。因此,此种方法也是有缺点的。

15、(3)在soc上电时,在规定的时间内,通过某通信协议检测是否收到指定的数据。该方式会因为这个检测而影响开机速度。

16、(4)在soc上电时,检测u盘中是否存在特定格式的文件的方式,往往需要支持文件系统访问以及u盘读写。这种方式需要较大的代码实现才能完成,增加了成本。同时,检测u盘中的文件需要对u盘进行读取及挂载文件系统,影响开机速度。而且u盘存在各种兼容性的问题,容易在读u盘时发生异常情况而影响功能的稳定性。

17、本专利技术旨在仅通过公对公usb线将soc终端设备与pc主机连接即可完成固件升级,而当设备没有与pc进行usb连接时则能正常开机。


技术实现思路

1、本专利技术的目的是旨在不影响开机速度,不需要特定按键检测,即使在bootloader启动宕机的情况下,仍然能够通过一根公对公usb连接线连接电脑即可完成固件升级。操作简单,需要的设备也非常简单,仅需一根usb连接线连接电脑,效率非常高。本专利技术采用usb通信,数据传输速度优于串口等其他低速通信协议。

2、为达到上述目的,本专利技术的技术方案是,一种通过usb升级固件的方法,包括:

3、步骤1:片上系统初始化步骤,芯片上电后关闭看门狗计时模块并初始化计时器时钟;

4、步骤2:寄存器标志判断步骤,根据寄存器标志检测结果,确定进入usb升级或加载预启动控制模块;

5、步骤3:加载预启动控制模块,判断预启动控制程序是否合法,如果不合法,则直接重启,在重启后直接进入usb升级模式;如果合法,则根据检测usb连接结果确定后续处理为立即重启进入usb升级模式或进入预启动控制模块pre-boot程序运行,如果启动时间没有超过usb检测的预定超时时间,则在预启动控制模块pre-boot程序中继续检测usb连接;

<本文档来自技高网...

【技术保护点】

1.一种通过usb升级固件的方法,包括:

2.如权利要求1所述的方法,其中步骤2中,所述根据寄存器标志检测结果,确定进入USB升级或加载预启动控制模块具体为:检测寄存器标志是否是“直接进入升级模式”,如果是,则初始化片上系统的USB端口,将USB端口配置为Device模式,进入USB升级;如果否,则设置寄存器标志为“直接进入升级模式”,同时启动看门狗计时模块,初始化片上系统的USB端口,将USB端口配置为Device模式。

3.如权利要求1所述的方法,其中步骤3、步骤4、步骤5中所述根据检测USB连接结果确定后续处理依据的信息为:所述是否检测到USB连接、是否收到PC通过USB发来的握手信息、是否启动时间超过USB检测的预定超时时间。

4.如权利要求3所述的方法,其中,步骤4、步骤5中所述检测寄存器标志和USB连接进一步包括:

5.如权利要求4所述的方法,其中所述根据检测USB连接结果确定后续处理具体为:如果检测到发生USB连接,则检查是否收到PC通过USB发过来的握手信息,检测到握手信息,则立即重启进入USB升级模式;如果没有检测到握手信息,则判断没有PC端的升级工具与芯片通信,将寄存器标志设置为“无需进行升级”,关闭USB端口和看门狗计时模块,进入下一阶段控制程序运行,后续程序运行中跳过USB连接的检测;

6.如权利要求1所述的方法,其中步骤4中,如果启动时间没有超过USB检测的预定超时时间,则保持USB和看门狗计时模块的启动状态,判断是否有下一项前置操作处理,如果有则在处理所述下一项前置操作之后检测寄存器标志和USB连接,否则进入启动加载控制模块Bootloader处理;如果启动时间没有超过USB检测的预定超时时间,则在启动加载控制模块Bootloader控制程序中继续检测USB连接。

7.如权利要求1所述的方法,其中步骤5中,所述在全部前置操作处理完之后,运行片上系统中的应用程序,进一步包括进行启动时间是否超过USB检测的预定超时时间的第二次判断,如果不超时,则继续检测寄存器标志和USB连接;如果超时,则设置寄存器标志为“无需进行升级”,并关闭USB端口和看门狗计时模块,运行片上系统中的应用程序。

8.如权利要求7所述的方法,其中步骤5中,所述进行启动时间是否超过USB检测的预定超时时间的第二次判断可以循环进行,或设置在应用程序中进行。

...

【技术特征摘要】

1.一种通过usb升级固件的方法,包括:

2.如权利要求1所述的方法,其中步骤2中,所述根据寄存器标志检测结果,确定进入usb升级或加载预启动控制模块具体为:检测寄存器标志是否是“直接进入升级模式”,如果是,则初始化片上系统的usb端口,将usb端口配置为device模式,进入usb升级;如果否,则设置寄存器标志为“直接进入升级模式”,同时启动看门狗计时模块,初始化片上系统的usb端口,将usb端口配置为device模式。

3.如权利要求1所述的方法,其中步骤3、步骤4、步骤5中所述根据检测usb连接结果确定后续处理依据的信息为:所述是否检测到usb连接、是否收到pc通过usb发来的握手信息、是否启动时间超过usb检测的预定超时时间。

4.如权利要求3所述的方法,其中,步骤4、步骤5中所述检测寄存器标志和usb连接进一步包括:

5.如权利要求4所述的方法,其中所述根据检测usb连接结果确定后续处理具体为:如果检测到发生usb连接,则检查是否收到pc通过usb发过来的握手信息,检测到握手信息,则立即重启进入usb升级模式;如果没有检测到握手信息,则判断没有pc端的升级工具...

【专利技术属性】
技术研发人员:夏双林丁锐王祥苏俊杰
申请(专利权)人:珠海海奇半导体有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1