CN109992289A - 传感器固件升级方法、装置及设备 - Google Patents

传感器固件升级方法、装置及设备 Download PDF

Info

Publication number
CN109992289A
CN109992289A CN201711484395.7A CN201711484395A CN109992289A CN 109992289 A CN109992289 A CN 109992289A CN 201711484395 A CN201711484395 A CN 201711484395A CN 109992289 A CN109992289 A CN 109992289A
Authority
CN
China
Prior art keywords
sensor
application
area
application program
firmware
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
Application number
CN201711484395.7A
Other languages
English (en)
Inventor
熊友军
曾祥安
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Ubtech Technology Co ltd
Original Assignee
Shenzhen Ubtech Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Ubtech Technology Co ltd filed Critical Shenzhen Ubtech Technology Co ltd
Priority to CN201711484395.7A priority Critical patent/CN109992289A/zh
Publication of CN109992289A publication Critical patent/CN109992289A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明适用于嵌入式固件技术领域,提供了传感器固件升级方法、装置、设备及计算机可读存储介质,包括:获取应用程序区值,所述应用程序区值指向位于闪存中的两个应用程序区中的一个;从与所述应用程序区值对应的第一所述应用程序区启动传感器;升级第二所述应用程序区中的固件数据;设置所述应用程序区值对应第二所述应用程序区。本发明通过设置两个应用程序区进行交替固件升级,并建立了对应流程,提高了传感器固件升级过程的效率和安全性。

Description

传感器固件升级方法、装置及设备
技术领域
本发明属于嵌入式固件技术领域,尤其涉及传感器固件升级方法、装置、设备及计算机可读存储介质。
背景技术
随着技术发展和人们对自动化的需求,机器人已成为近年来的研究热点,不断更新换代,从最初单一的工业机器人延伸到了教育、安防和娱乐等其他领域,极大地方便了生活。如今在机器人上,一般添加了可扩展的嵌入式部件,用于实现额外的功能,比如红外线传感器、超声波传感器等。固件是传感器内担任最基础底层工作的软件,用于支持传感器的硬件运行,根据机器人应用场景的变化,常常需要对机器人传感器内的固件进行升级。
在现有的方法中,用户往往通过远程升级的方法对传感器固件进行升级,在升级过程中,可能会因为不可预料的因素,出现各种问题,比如在固件升级到一半时,用户因为通信故障导致远程升级中断,导致传感器内的固件不完整,无法通过其执行传感器内的应用程序;再比如一个机器人上可能具备多个传感器,对这些传感器进行固件升级时,发生异常情况的概率会增大,可能会有多个固件出现升级故障。在固件升级出现问题后,用户预制的应用程序无法运行,用户只能重新刷新传感器内的固件,使得固件升级的安全性和效率较低,耗费的时间成本高。
发明内容
有鉴于此,本发明实施例提供了传感器固件升级方法、装置、设备及计算机可读存储介质,以解决现有技术中对传感器固件进行升级时,效率和可靠性较低的问题。
本发明实施例的第一方面提供了一种传感器固件升级方法,包括:
获取应用程序区值,所述应用程序区值指向位于闪存中的两个应用程序区中的一个;
从与所述应用程序区值对应的第一所述应用程序区启动传感器;
升级第二所述应用程序区中的固件数据;
设置所述应用程序区值对应第二所述应用程序区。
本发明实施例的第二方面提供了一种传感器固件升级装置,包括:
获取单元,用于获取应用程序区值,所述应用程序区值指向位于闪存中的两个应用程序区中的一个;
启动单元,用于从与所述应用程序区值对应的第一所述应用程序区启动传感器;
升级单元,用于升级第二所述应用程序区中的固件数据;
设置单元,用于设置所述应用程序区值对应第二所述应用程序区。
本发明实施例的第三方面提供了一种传感器固件升级设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述传感器固件升级方法的步骤。
本发明实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述传感器固件升级方法的步骤。
本发明实施例与现有技术相比存在的有益效果是:本发明通过获取用于指向位于闪存中的两个应用程序区中的一个的应用程序区值,从应用程序区值对应的第一应用程序区启动传感器,并升级空闲的第二应用程序区中的固件数据,升级完成后,设置应用程序区值对应第二应用程序区,规范了传感器固件升级的流程,提高了固件升级过程的效率和安全性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的传感器固件升级方法的实现流程图;
图2是本发明实施例二提供的传感器固件升级方法的实现流程图;
图3是本发明实施例三提供的传感器固件升级方法的实现流程图;
图4是本发明实施例四提供的传感器固件升级方法的实现流程图;
图5是本发明实施例五提供的传感器固件升级方法的实现流程图;
图6是本发明实施例六提供的传感器固件升级装置的结构框图;
图7是本发明实施例七提供的传感器固件升级设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
本发明的说明书和权利要求书及附图中的术语“第一”和“第二”是用于区别不同对象,而不是用于描述特定顺序。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
图1示出了本发明实施例一提供的传感器固件升级方法的实现流程,详述如下:
在S101中,获取应用程序区值,所述应用程序区值指向位于闪存中的两个应用程序区中的一个。
随着技术的发展,某些机器人需要探知周边环境,并根据周边环境的变化来自动做出应对措施,举例来说,扫地机器人需要获取与周边障碍物的距离,并将含有距离的数据传输至中央处理器,并由中央处理器处理后发出对应指令,以防扫地机器人与物品发生碰撞;再比如用于烟雾报警的机器人需要检测烟雾浓度,并将含有烟雾浓度的数据传输至中央处理器,当烟雾浓雾超过预设阈值时,中央处理器发出报警指令,控制机器人进行报警。但是,机器人不是人类,本身并不具备获取周边环境状况的能力,故要实现自动适应的功能,须在机器人上增设传感器。其中,传感器最初的定义是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。在机器人本体上设置的传感器基于最初的定义进行了延伸,其实质上是包含传感器在内的小型嵌入式系统,可以根据获取到的环境信息专门实现特定应用。
在实际情况中,为了精简结构,机器人的传感器并不需要外扩其他存储器件,如电可擦可编程只读存储器(Electrically Erasable Programmable Read Only Memory,EEPROM)等,而是在内部的闪存(Flash Memory)中划分闪存信息区来存放传感器系统的基本信息。其中,闪存是一种长寿命的非易失性存储器,在断电情况下仍能保持所存储的数据信息,适合机器人传感器的用途和特性。除了在闪存中划分闪存信息区外,闪存中还包括引导程序区和应用程序区。引导程序区中的引导程序用于引导加载系统的某个应用程序区,应用程序区内存放有控制传感器进行某种动作或进行数据获取处理的应用程序,而要执行应用程序,必须要有固件的支持。其中,固件位于应用程序区,担任传感器系统最基础底层的工作,拥有完整的固件数据是硬件正常使用和应用程序成功运行的前提条件。
在本发明实施例中,在闪存中划分出两个应用程序区,以使在某一个应用程序区加载应用程序,启动传感器时,另一个应用程序区可以进行固件覆盖更新,实现交替升级,可以使传感器在正常运行中完成固件升级,而不必长时间待机。在固件升级过程中,首先需要对传感器进行上电,在上电之后,进入到引导程序区,由引导程序区中的引导程序获取应用程序区值,不同的应用程序区值与两个应用程序区存在预先设置好的对应关系。应用程序区值可以随机生成,也可以从闪存信息区内专门存放应用程序区值的数据结构中直接读取。获取完毕后,根据应用程序区值,指向位于闪存中的两个应用程序区中的一个。举例来说,比如第一应用程序区对应的应用程序区值为1,第二应用程序区对应的应用程序区值为2,在传感器上电后,如果引导程序获取到的应用程序区值为1,那么该应用程序区值就指向第一应用程序区。此外,应用程序区值有可能因为设置错误,或者随机生成的方式错误,导致获取的应用程序区值超出与两个应用程序区的对应关系范围,比如说在上述例子中,获取到的应用程序区值为3。针对这种情况,可以根据实际项目采用不同方案,如可以使应用程序区值默认指向第一应用程序区或第二应用程序区,也可以随机指向,或者直接停止升级,提示用户进行数值重设。
在S102中,从与所述应用程序区值对应的第一所述应用程序区启动传感器。
当引导程序知道应用程序区值的指向对象,如第一应用程序区时,跳转到第一应用程序区,并执行第一应用程序区内的应用程序,启动传感器。这里的启动传感器指的并非将传感器上电,而是指通过应用程序控制传感器做出对应的操作,如获取光信号或获取超声波信号等等。当然,应用程序也可以为空,在这种情况下,传感器虽然没有进行任何操作,但传感器系统内部仍可获知到传感器正处于执行应用程序的过程中,属于启动正常。
在S103中,升级第二所述应用程序区中的固件数据。
传感器的闪存中,从引导程序区跳转至第一应用程序区后,由于第一应用程序区正在执行应用程序,所以将固件升级工作放在第二应用程序区中,升级过程在后文进行具体阐述。如此,固件升级过程就能和传感器正常启动过程实现并行,用户可以不用等待固件升级完毕后才能启动传感器,提升固件升级效率。
在S104中,设置所述应用程序区值对应第二所述应用程序区。
第二应用程序区中的固件数据升级完毕后,考量到传感器可能正在使用当中,故不立即进行重新上电,而是设置闪存信息区内的应用程序区值指向第二应用程序区,或者改变随机生成应用程序区值的机制,使其定向生成与第二应用程序区对应的应用程序区值。这样,在传感器下次上电后,引导程序就能根据应用程序区值跳转到固件升级完毕的第二应用程序区,在从第二应用程序区启动传感器后,对还未升级的第一应用程序区进行固件升级,使两个应用程序区都含有相同的固件数据。
通过图1所示实施例可知,在本发明实施例中,通过在传感器上电后,引导程序获取指向两个应用程序区中的一个的应用程序区值,并跳转到对应的第一应用程序区启动传感器,再对空闲的第二应用程序区内的固件数据进行升级,最后设置应用程序区值指向第二应用程序区,提升了固件升级的效率,并且在某一个应用程序区固件升级出现故障时,仍能从另一个应用程序区启动传感器,提高了升级过程的可靠性。
图2所示,在本发明实施例一的基础上,对某个应用程序区内固件升级的过程进行了细化。根据提供的传感器固件升级方法的实现流程图,该传感器固件升级方法可以包括以下步骤:
在S201中,获取新版本固件数据。
在第二应用程序区进行固件升级时,首先需要获取新版本固件数据,新版本固件数据可由用户远程写入,具体可类似于手机固件升级的过程,即手机先通过联网下载好新的固件数据,再进行后续的更新操作,只是在本发明实施例中,机器人上的传感器属于小型嵌入式系统,一般不具备连接互联网的功能,所以用户需要使用无线通信手段,如WIFI通信手段等向传感器发送新版本固件数据。
在S202中,通过所述新版本固件数据对第二所述应用程序区中的所述固件数据进行覆盖更新。
获取到新版本固件数据后,对第二应用程序区内原有的固件数据进行覆盖更新,在覆盖更新过程中,需要保持传感器不断电,防止覆盖更新中断。其中,可以在用户写入新版本固件数据的过程中,进行在线覆盖更新,也可以在用户写入新版本固件数据完毕后,使用完整的新版本固件数据进行覆盖更新,前一种方法效率较高,后一种方法不容易出错,实际应用时,需要根据项目情况选择合适的覆盖更新方法。
在S203中,从第二所述应用程序区中读取出覆盖更新后的固件数据。
覆盖更新完毕后,从第二应用程序区中读取出覆盖更新后的固件数据。由于在实际应用中,机器人本体上可能有设置有多个传感器,在同时对多个传感器中第二应用程序区内的固件数据进行覆盖更新时,出现差错的可能性较高,所以在本发明实施例中,对覆盖更新后的固件数据进行检验。若是覆盖更新的过程没有出现差错,那么覆盖更新后的固件数据应和新版本固件数据完全一致。
在S204中,对所述覆盖更新后的固件数据进行循环冗余校验,得到校验值。
检验覆盖更新后的固件数据,可以是将其读取后,与新版本固件数据进行逐个比对,直到数据内的每一个值都比对完毕,中途无报错,才能认为覆盖更新成功,但这样效率过低,并且不适用于机器人传感器的应用场景。故在本发明实施例中,采用更优选的方案,即使用循环冗余校验(Cyclic Redundancy Check,CRC)方法对覆盖更新后的固件数据进行校验,为了提高校验的准确性,优先采用CRC32方法。对应的,在用户发送新版本固件数据时,需对新版本固件数据进行计算,并在新版本固件数据的末尾添加计算出的结果,即8位(32比特)校验码,并作为完整的新版本固件数据。
在S205中,若所述校验值为零,则执行所述设置所述应用程序区值对应第二所述应用程序区的操作。
通过CRC32方法对覆盖更新后的固件数据进行校验后,如果得到的校验值为零,则证明覆盖更新后的固件数据与用户写入的新版本固件数据相同,覆盖更新的过程中并没有出现数据差错,固件升级成功,则可以继续执行后续的设置应用程序区值对应第二应用程序区的操作。
在S206中,若所述校验值不为零,则停止升级。
在另一种可能出现的结果中,得到的校验值不为零,则证明覆盖更新后的固件数据与用户写入的新版本固件数据有部分存在不同,固件升级失败,传感器系统获知到此结果后,放弃升级,并将校验错误的结果发送至机器人本体,或者如果传感器系统中存在类似于发光二极管(Light Emitting Diode,LED)一类的通知模块,则直接发出指令,使通知模块执行通知动作,如使LED灯间歇性发光等,其他能使用户获知到校验结果的方法,也应包含在本发明实施例中。
通过图2所示实施例可知,在本发明实施例中,通过获取用户写入的新版本固件数据,并将新版本固件数据对第二应用程序区内原有的固件数据进行覆盖更新,完毕后从第二应用程序区读取覆盖更新后的固件数据进行循环冗余校验,并进行判断,如果得到的校验值为零,则执行后续的设置应用程序区值对应第二应用程序区的操作;如果校验值不为零,则放弃升级,体现了对应用程序区进行固件升级的具体过程,通过校验防止固件升级中出现错误,增强了固件数据的正确性。
图3所示,在本发明实施例一的基础上,在固件升级完成后,从已更新固件数据的应用程序区启动传感器,并增添对启动的状态判定,根据启动的状态执行不同方案。根据提供的传感器固件升级方法的实现流程图,该传感器固件升级方法可以包括以下步骤:
在S301中,设置闪存信息区中的升级标志位为第一数值,所述第一数值用于表示第二所述应用程序区正在升级。
除了在闪存信息区中设置应用程序区值外,还可以在应用程序区值所在的数据结构增加升级标志位,用于标志升级的状态。在第二应用程序区的固件升级校验完毕后,将闪存信息区中的升级标志位置为第一数值,第一数值用于表示第二所述应用程序区在固件升级之后,正在进行升级的后续处理,可选地,第一数值可以设置为“1”。
在S302中,从第二所述应用程序区启动所述传感器。
在设置完升级标志位后,从第一应用程序区跳转到第二应用程序区,并执行第二应用程序区内的应用程序,启动传感器。这里的启动传感器与本发明实施例一中的启动传感器含义相同,即应用程序控制传感器做出对应的操作。
在S303中,若从第二所述应用程序区正常启动所述传感器,则设置所述升级标志位为第二数值,所述第二数值用于表示第二所述程序区升级完成。
从第二应用程序区启动传感器后,传感器系统内部可以获知到启动是否正常,比如说传感器按照第二应用程序区内的应用程序,如预期一样获取到周边的环境信息,那么启动就是正常的。判定启动正常后,设置升级标志位为第二数值,用于表示第二应用程序区升级完成,可选地,第二数值可以设置为“0”。由于第二应用程序区内已经含有完整的覆盖更新后的固件数据,而下次升级要从第二应用程序区启动传感器,即传感器在下次启动时就会以覆盖更新后的固件数据为基础运行,所以可以直接将传感器的固件版本号更新为覆盖更新后的固件数据的版本号,以标记更新完成。在接下来的交替升级,即从第二应用程序区启动传感器,并升级第一应用程序区中的固件数据时,待固件数据升级并校验完毕后,需要再设置闪存信息区中的升级标志位为第一数值,此时第一数值表示第一应用程序区正在进行升级,等到后续能够从第一应用程序区正常启动传感器后,再重新设置升级标志位为第二数值,用于表示第一程序区升级完成。
在S304中,若从第二所述应用程序区未正常启动所述传感器,则等待预设的超时时限后对所述传感器进行重新上电。
如果从第二应用程序区无法正常启动传感器,即无法基于第二应用程序区内覆盖更新后的固件数据执行第二应用程序区内的应用程序,虽然覆盖更新后的固件数据完整,但是在第二应用程序区中进行的固件升级过程中仍存在不可预料的问题,此时,传感器未进行操作,处于故障状态。在本发明实施例中,预置故障机制,在经过预设的超时时限,如果传感器仍处于故障状态,则直接将传感器重新商上电。由于此时应用程序区值还未改变,仍指向第一应用程序区,所以在传感器再次上电后,引导程序可以跳转至第一应用程序区,从第一应用程序区启动传感器,并可以再次对第二应用程序区进行固件升级。
通过图3所示实施例可知,在本发明实施例中,通过将闪存信息区中的升级标志位置为第一数值,标志未在执行应用程序的空闲应用程序区正在进行升级的后续处理,并从第一应用程序区跳转至第二应用程序区,从第二应用程序区启动传感器,如果启动正常,则设置升级标志位为第二数值,标志第二程序区已完成升级的全部工序;如果启动不正常,则等待预设的超时时限后将传感器重新上电,通过设置升级标志位验证升级过程是否已全部完成,并提供故障机制,在第二程序区启动传感器异常时,传感器重新上电后,能从正常的第一程序区启动,增强固件升级的可靠性。
图4所示,在本发明实施例一的基础上,考虑到不同情况,对获取应用程序区值方法的细化。根据提供的传感器固件升级方法的实现流程图,该传感器固件升级方法可以包括以下步骤:
在S401中,检测闪存信息区是否损坏。
在本发明实施例中,传感器的含义为小型嵌入式系统,其一般不外接存储设备,而是在系统内部的闪存中划分出闪存信息区,存放重要的系统数据。在传感器上电后,首先执行引导程序区中的引导程序,引导程序读取闪存信息区中预先设置的数据结构内存储的应用程序区值,并跳转至与应用程序区值对应的应用程序区。但在实际情况中,闪存信息区可能受到损坏,这里的损坏,是指闪存信息区的应用程序区值相关数据遭到破坏,导致引导程序无法读取到应用程序区值,或者读取到的应用程序区值超出了预设的范围,变成了非法数据,这样引导程序就无法获知应跳转至哪个应用程序区。故先对闪存信息区进行检测,根据检测的结果来决定获取应用程序区值的具体方式。
在S402中,若所述闪存信息区未损坏,则从所述闪存信息区获取所述应用程序区值。
如果检测到闪存信息区未损坏,存储的应用程序区值数据并未丢失或为非法数据,则引导程序直接从闪存信息区获取到应用程序区值,并跳转至应用程序区值对应的应用程序区,进行后续的固件升级操作。
在S403中,若所述闪存信息区已损坏,则随机设置所述应用程序区值指向位于所述闪存中的两个所述应用程序区中的任一个。
若检测到闪存信息区丢失了存储的应用程序区值或者应用程序区值变为了非法数据,则不能采用传统的获取方式。在传感器系统中,可以编写预置的默认跳转机制,在发生上述情况时,从引导程序区默认跳转至第一应用程序区或者第二应用程序区。但是,在实际情况中,并不能预知第一应用程序区和第二应用程序区是否也损坏,如果第一应用程序区损坏,第二应用程序区未损坏,而默认跳转机制设置引导程序默认跳转至第一应用程序区,那么传感器就会每次都启动失败,丧失了系统的可恢复性,导致用户只能将传感器返厂进行维修。故在本发明实施例中,可以利用传感器系统内部的随机数生成模块生成随机数,并将随机数作为应用程序区值。其中,随机数生成公式根据实际情况中应用程序区值的范围来确定,比如应用程序区值只有两个取值,为0或1,那么根据随机数生成公式生成的随机数就只可能有0或1这两种结果。将生成的随机数作为应用程序区值(此时闪存信息区中存储的应用程序区值未进行更新)后,那么引导程序根据具体的应用程序区值跳转至两个应用程序区中的某一个。当然,其他随机设置应用程序区值,使应用程序区值保持在原有数值范围的方法,也应包含在本发明实施例中。
通过图4所示实施例可知,在本发明实施例中,通过先检测闪存信息区中的应用程序区值是否丢失或变为非法数据,如果是,则从闪存信息区中获取应用程序区值;如果不是,则随机设置应用程序区值,设置的应用程序区值指向两个应用程序中的任一个,增加了对闪存信息区的判断,防止引导程序无法进行跳转,并通过随机设置应用程序区值的方法,防止一直跳转到可能已损坏的应用程序区,从而提高了传感器系统的自我恢复能力。
图5所示,是在本发明实施例四的基础上,对随机设置应用程序区值并进行跳转后可能发生的不同情况进行的具体步骤分析。根据提供的传感器固件升级方法的实现流程图,该传感器固件升级方法可以包括以下步骤:
在S501中,检测从与所述应用程序区值对应的所述应用程序区是否能启动所述传感器。
由于用户无法预知闪存内的两个应用程序区是否遭到破坏,即两个应用程序区可能都完整,可能其中一个损坏,可能两个都损坏。所以在随机设置应用程序区值指向两个应用程序区值中的某一个后,需要对应用程序区值对应的应用程序区进行检测,其中,通过检测从该应用程序区是否能启动传感器,来判断该应用程序区是否损坏。
在S502中,若从与所述应用程序区值对应的所述应用程序区能够正常启动所述传感器,则将所述应用程序区值写入至所述闪存信息区中。
如果从与应用程序区值对应的应用程序区能够正常启动传感器,即传感器能够执行该应用程序区内的应用程序,则该应用程序区内的固件数据和应用程序以及其他支持传感器运行的部分都是完好的,并未遭到破坏。也即是说,引导程序根据该应用程序区值能够跳转到完整的应用程序区,故可将该应用程序区值写入到闪存信息区内用于存放应用程序区值的数据结构中,这样在传感器下次上电后,不用再经过随机设置应用程序区值的步骤,而是可以直接读取闪存信息区内的有效应用程序区值,进行后续操作。
在S503中,若从与所述应用程序区值对应的所述应用程序区不能正常启动所述传感器,则对所述传感器进行重新上电,并执行所述随机设置所述应用程序区值指向位于所述闪存中的两个所述应用程序区中的任一个的操作。
如果从应用程序区值对应的应用程序区不能正常启动传感器,则证明该应用程序区存在问题,但用户并不知道另一个应用程序区是否也遭到破坏,所以不能直接将对应另一个应用程序区的应用程序区值写入到闪存信息区中。在本发明实施例中,出现上述情况时,将传感器重新上电,继续执行随机设置应用程序区值指向两个应用程序区中的任一个的操作,直到从某个应用程序区能正常启动传感器为止。
通过图5所示实施例可知,在本发明实施例中,首先检测从随机设置的应用程序区值对应的应用程序区是否能正常启动传感器,如果能正常启动,则将该应用程序区值写入至闪存信息区中;如果不能正常启动,则将传感器重新上电,并重新执行随机设置应用程序区值的操作,直到能够正常启动为止,具体阐述了随机设置应用程序区值后的操作,如果存在数据完整的应用程序区,在经过多次上电后,最终能从该应用程序区启动传感器,进一步提升了传感器受到损坏后恢复的能力,增强传感器的可靠性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
对应于上文实施例所述的传感器固件升级方法,图6示出了本发明实施例提供的传感器固件升级装置的结构框图,所述传感器固件升级装置可以应用在传感器中,参照图6,该装置包括:
获取单元61,用于获取应用程序区值,所述应用程序区值指向位于闪存中的两个应用程序区中的一个;
启动单元62,用于从与所述应用程序区值对应的第一所述应用程序区启动传感器;
升级单元63,用于升级第二所述应用程序区中的固件数据;
设置单元64,用于设置所述应用程序区值对应第二所述应用程序区。
可选的,所述升级单元63,包括:
固件获取单元,用于获取新版本固件数据;
覆盖更新单元,用于通过所述新版本固件数据对第二所述应用程序区中的所述固件数据进行覆盖更新;
读取单元,用于从第二所述应用程序区中读取出覆盖更新后的固件数据;
校验单元,用于对所述覆盖更新后的固件数据进行循环冗余校验,得到校验值;
继续执行单元,用于若所述校验值为零,则执行所述设置所述应用程序区值对应第二所述应用程序区的操作;
停止单元,用于若所述校验值不为零,则停止升级。
可选的,所述升级单元63,还包括:
第一设置单元,用于设置闪存信息区中的升级标志位为第一数值,所述第一数值用于表示第二所述应用程序区正在升级;
传感启动单元,用于从第二所述应用程序区启动所述传感器;
第二设置单元,用于若从第二所述应用程序区正常启动所述传感器,则设置所述升级标志位为第二数值,所述第二数值用于表示第二所述程序区升级完成;
重新上电单元,用于若从第二所述应用程序区未正常启动所述传感器,则等待预设的超时时限后对所述传感器进行重新上电。
图7是本发明实施例提供的传感器固件升级设备的示意图。如图7所示,该实施例的传感器固件升级设备7包括:处理器70、存储器71以及存储在所述存储器71中并可在所述处理器70上运行的计算机程序72。所述处理器70执行所述计算机程序72时实现上述各个传感器固件升级方法实施例中的步骤,例如图1所示的步骤S101至S104。或者,所述处理器70执行所述计算机程序72时实现上述各装置实施例中各模块/单元的功能,例如图6所示单元61至64的功能。
示例性的,所述计算机程序72可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器71中,并由所述处理器70执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序72在所述传感器固件升级设备7中的执行过程。例如,所述计算机程序72可以被分割成获取单元、启动单元、升级单元和设置单元,各模块具体功能如下:
获取单元,用于获取应用程序区值,所述应用程序区值指向位于闪存中的两个应用程序区中的一个;
启动单元,用于从与所述应用程序区值对应的第一所述应用程序区启动传感器;
升级单元,用于升级第二所述应用程序区中的固件数据;
设置单元,用于设置所述应用程序区值对应第二所述应用程序区。
所述传感器固件升级设备7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述传感器固件升级设备7可包括,但不仅限于,处理器70、存储器71。本领域技术人员可以理解,图7仅仅是传感器固件升级设备7的示例,并不构成对传感器固件升级设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述传感器固件升级设备7还可以包括输入输出设备、网络接入设备、总线等。
所称处理器70可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器71可以是所述传感器固件升级设备7的内部存储单元,例如传感器固件升级设备7的硬盘或内存。所述存储器71也可以是所述传感器固件升级设备7的外部存储设备,例如所述传感器固件升级设备7上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器71还可以既包括所述传感器固件升级设备7的内部存储单元也包括外部存储设备。所述存储器71用于存储所述计算机程序以及所述传感器固件升级设备7所需的其他程序和数据。所述存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

1.一种传感器固件升级方法,其特征在于,包括:
获取应用程序区值,所述应用程序区值指向位于闪存中的两个应用程序区中的一个;
从与所述应用程序区值对应的第一所述应用程序区启动传感器;
升级第二所述应用程序区中的固件数据;
设置所述应用程序区值对应第二所述应用程序区。
2.如权利要求1所述的传感器固件升级方法,其特征在于,所述升级第二所述应用程序区中的固件数据,包括:
获取新版本固件数据;
通过所述新版本固件数据对第二所述应用程序区中的所述固件数据进行覆盖更新;
从第二所述应用程序区中读取出覆盖更新后的固件数据;
对所述覆盖更新后的固件数据进行循环冗余校验,得到校验值;
若所述校验值为零,则执行所述设置所述应用程序区值对应第二所述应用程序区的操作;
若所述校验值不为零,则停止升级。
3.如权利要求1所述的传感器固件升级方法,其特征在于,在所述升级第二所述应用程序区中的固件数据的过程中,还包括:
设置闪存信息区中的升级标志位为第一数值,所述第一数值用于表示第二所述应用程序区正在升级;
从第二所述应用程序区启动所述传感器;
若从第二所述应用程序区正常启动所述传感器,则设置所述升级标志位为第二数值,所述第二数值用于表示第二所述程序区升级完成;
若从第二所述应用程序区未正常启动所述传感器,则等待预设的超时时限后对所述传感器进行重新上电。
4.如权利要求1所述的传感器固件升级方法,其特征在于,所述获取应用程序区值,包括:
检测闪存信息区是否损坏;
若所述闪存信息区未损坏,则从所述闪存信息区获取所述应用程序区值;
若所述闪存信息区已损坏,则随机设置所述应用程序区值指向位于所述闪存中的两个所述应用程序区中的任一个。
5.如权利要求4所述的传感器固件升级方法,其特征在于,所述随机设置所述应用程序区值指向位于所述闪存中的两个所述应用程序区中的任一个之后,还包括:
检测从与所述应用程序区值对应的所述应用程序区是否能启动所述传感器;
若从与所述应用程序区值对应的所述应用程序区能够正常启动所述传感器,则将所述应用程序区值写入至所述闪存信息区中;
若从与所述应用程序区值对应的所述应用程序区不能正常启动所述传感器,则对所述传感器进行重新上电,并执行所述随机设置所述应用程序区值指向位于所述闪存中的两个所述应用程序区中的任一个的操作。
6.一种传感器固件升级装置,其特征在于,包括:
获取单元,用于获取应用程序区值,所述应用程序区值指向位于闪存中的两个应用程序区中的一个;
启动单元,用于从与所述应用程序区值对应的第一所述应用程序区启动传感器;
升级单元,用于升级第二所述应用程序区中的固件数据;
设置单元,用于设置所述应用程序区值对应第二所述应用程序区。
7.如权利要求6所述的传感器固件升级装置,其特征在于,所述升级单元,包括:
固件获取单元,用于获取新版本固件数据;
覆盖更新单元,用于通过所述新版本固件数据对第二所述应用程序区中的所述固件数据进行覆盖更新;
读取单元,用于从第二所述应用程序区中读取出覆盖更新后的固件数据;
校验单元,用于对所述覆盖更新后的固件数据进行循环冗余校验,得到校验值;
继续执行单元,用于若所述校验值为零,则执行所述设置所述应用程序区值对应第二所述应用程序区的操作;
停止单元,用于若所述校验值不为零,则停止升级。
8.如权利要求6所述的传感器固件升级装置,其特征在于,所述升级单元,还包括:
第一设置单元,用于设置闪存信息区中的升级标志位为第一数值,所述第一数值用于表示第二所述应用程序区正在升级;
传感启动单元,用于从第二所述应用程序区启动所述传感器;
第二设置单元,用于若从第二所述应用程序区正常启动所述传感器,则设置所述升级标志位为第二数值,所述第二数值用于表示第二所述程序区升级完成;
重新上电单元,用于若从第二所述应用程序区未正常启动所述传感器,则等待预设的超时时限后对所述传感器进行重新上电。
9.一种传感器固件升级设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述传感器固件升级方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述传感器固件升级方法的步骤。
CN201711484395.7A 2017-12-29 2017-12-29 传感器固件升级方法、装置及设备 Pending CN109992289A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711484395.7A CN109992289A (zh) 2017-12-29 2017-12-29 传感器固件升级方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711484395.7A CN109992289A (zh) 2017-12-29 2017-12-29 传感器固件升级方法、装置及设备

Publications (1)

Publication Number Publication Date
CN109992289A true CN109992289A (zh) 2019-07-09

Family

ID=67110312

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711484395.7A Pending CN109992289A (zh) 2017-12-29 2017-12-29 传感器固件升级方法、装置及设备

Country Status (1)

Country Link
CN (1) CN109992289A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023071384A1 (zh) * 2021-10-28 2023-05-04 青岛海信宽带多媒体技术有限公司 光模块及其升级方法
CN117972731A (zh) * 2024-04-02 2024-05-03 深流微智能科技(深圳)有限公司 一种固件加载方法、启动方法、嵌入式设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103455354A (zh) * 2013-09-06 2013-12-18 南京南自信息技术有限公司 一种防止固件升级失败的方法和设备
CN105094903A (zh) * 2015-07-16 2015-11-25 广州飞米电子科技有限公司 对固件进行升级的方法及装置
CN105740034A (zh) * 2016-04-13 2016-07-06 深圳市高巨创新科技开发有限公司 Mcu在线升级固件的系统及方法
CN106095480A (zh) * 2016-05-31 2016-11-09 青岛海信宽带多媒体技术有限公司 一种光模块固件升级的方法及装置
CN106383692A (zh) * 2016-08-25 2017-02-08 中山市天启智能科技有限公司 一种单片机嵌入式设备ota升级方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103455354A (zh) * 2013-09-06 2013-12-18 南京南自信息技术有限公司 一种防止固件升级失败的方法和设备
CN105094903A (zh) * 2015-07-16 2015-11-25 广州飞米电子科技有限公司 对固件进行升级的方法及装置
CN105740034A (zh) * 2016-04-13 2016-07-06 深圳市高巨创新科技开发有限公司 Mcu在线升级固件的系统及方法
CN106095480A (zh) * 2016-05-31 2016-11-09 青岛海信宽带多媒体技术有限公司 一种光模块固件升级的方法及装置
CN106383692A (zh) * 2016-08-25 2017-02-08 中山市天启智能科技有限公司 一种单片机嵌入式设备ota升级方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023071384A1 (zh) * 2021-10-28 2023-05-04 青岛海信宽带多媒体技术有限公司 光模块及其升级方法
CN117972731A (zh) * 2024-04-02 2024-05-03 深流微智能科技(深圳)有限公司 一种固件加载方法、启动方法、嵌入式设备及存储介质
CN117972731B (zh) * 2024-04-02 2024-06-04 深流微智能科技(深圳)有限公司 一种固件加载方法、启动方法、嵌入式设备及存储介质

Similar Documents

Publication Publication Date Title
CN110134415A (zh) 一种控制器及其软件升级方法和装置
US7107482B2 (en) Program update apparatus and method
CN109117168A (zh) 无人机固件更新方法、装置、无人机及存储介质
CN108563445B (zh) 应用程序代码检测方法及服务器
CN102474443A (zh) 在不受控制数据处理设备上容纳安全关键应用程序的方法和制品
US10823439B2 (en) Systems and methods for reliability control of information handling system
CN106462480A (zh) 用于处理持久存储器中的错误的技术
CN109582325A (zh) 机器人的软件升级方法、机器人及计算机可读存储介质
CN103942061A (zh) 电池固件更新方法、便携式电子装置及充电电池模块
CN109753391A (zh) 处理器的一个或多个结构的功能测试的系统、装置和方法
CN109002310A (zh) 固件升级方法
CN107832065A (zh) 固件升级方法、净水器、升级系统及可读存储介质
CN109992289A (zh) 传感器固件升级方法、装置及设备
KR20110064971A (ko) 추적점 기반의 고장 진단/복구 시스템 및 그 방법
CN201361240Y (zh) 一种用于医疗机构药品分发的辅助装置
CN111563075A (zh) 一种业务校验系统、方法及设备和存储介质
CN107844374A (zh) 终端设备的任务执行方法、装置、电子设备、存储介质
CN105677409B (zh) 一种系统升级方法及装置
CN103825649A (zh) 光模块信息的修复方法和装置
KR101173633B1 (ko) 조명등의 고장 진단 시스템
CN113888838A (zh) 一种睡姿监测告警方法、装置及存储介质
CN109254920A (zh) 接口测试用例生成方法、装置、电子设备、存储介质
CN109791593A (zh) 基于配置数据修改对服务的访问
CN106462478B (zh) 数据恢复方法、装置以及终端
US9604326B2 (en) Autonomous device employed in a system for facilitating the assembly of a product

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190709