芯片IAP数据更新控制方法及系统与流程

文档序号:19976590发布日期:2020-02-21 18:58阅读:316来源:国知局
芯片IAP数据更新控制方法及系统与流程

本发明涉及芯片领域,尤其涉及一种芯片iap数据更新控制方法及系统。



背景技术:

在实际应用中,可重复编程的芯片中内置有可编程存储器,可编程存储器通常为flash闪存。在对芯片进行编程操作时,将芯片放置于专用编程器的芯片底座,使用专用编程器烧录程序至芯片内部的flash闪存。然而,上述烧录方法的缺陷是一旦已经烧录程序的芯片焊接到系统板上,后续无法再次对芯片进行编程,或者专门设置一个可拔插芯片的底座。

为便于用户对芯片内部的程序进行更新,出现了一种在系统可编程(in-systemprogramming,isp)技术,使用双线串口或单线串口对芯片进行编程。然而,isp技术仍需要技术工程师现场对芯片进行编程,在对系统软件进行更新时,费时耗力。

现有技术中,出现了iap技术,可以远程对系统软件进行更新,从而无线技术工程师现场对芯片进行编程。iap编程技术的应用场景较为广泛,在某些应用场景下,在通过iap编程技术对系统软件进行更新时,可能会存在芯片的内部电压不稳定或受到强干扰的情况。而在实际应用中可知,当flash闪存的电压需要高于一定值时,才可对flash闪存进行编程或擦除操作。当flash闪存的工作电压不稳定时,可能会出现编程或擦除操作失败等情况,导致iap数据更新失败,进而导致系统崩溃。



技术实现要素:

本发明解决的是如何避免系统内部电压不稳定导致系统软件更新失败的问题。

为解决上述技术问题,本发明实施例提供一种芯片iap数据更新控制方法,包括:判断是否接收到第一lvd中断信号,所述第一lvd中断信号为所述芯片的lvd电路在检测到所述芯片的内部电压低于第一预设电压值时生成;当接收到所述第一lvd中断信号时,禁止iap数据更新;当未接收到所述第一lvd中断信号时,执行iap数据更新。

可选的,所述芯片iap数据更新控制方法还包括:判断是否接收到第二lvd中断信号,所述第二lvd中断信号为所述lvd电路在检测到所述芯片的内部电压低于第二预设电压值时生成,且所述第二预设电压值大于所述第一预设电压值;当接收到所述第二lvd中断信号时,将所述lvd电路的电压检测阈值修改为所述第一预设电压值;所述第二预设电压值大于所述第一预设电压值,且所述第一预设电压值不小于所述芯片内部适于存储所述iap数据的flash闪存的最低工作电压;所述第二预设电压值不小于所述芯片的最低工作电压。

可选的,在将所述lvd电路的电压检测阈值修改为所述第一预设电压值之后,还包括:当未接收到所述第一lvd中断信号时,保存所述芯片内部的数据后,执行iap数据更新。

可选的,在执行iap数据更新时,包括:当接收到iap中断信号时,获取所述iap中断信号对应的iap中断类型;停止iap数据更新,并根据所述iap中断类型执行相应的中断处理。

可选的,所述根据所述iap中断类型执行相应的中断处理,包括以下至少一种:当所述iap中断类型为地址写入出错时,重新写入所述地址;当所述iap中断类型为数据写入出错时,重新写入所述数据;当所述iap中断类型为启动项出错时,重新写入正确的启动码;当所述iap中断类型为更新时长超出预设的iap数据更新持续时长时,停止iap数据更新。

本发明实施例还提供了一种芯片iap数据更新控制系统,包括:控制器、flash闪存、iap状态机、中断信号处理器、lvd电路以及sram,其中:所述控制器与所述flash闪存、所述iap状态机、所述中断信号处理器、所述lvd电路以及所述sram均耦接;所述flash闪存,与所述iap状态机以及所述控制器耦接,适于存储iap程序数据以及中断服务程序数据;所述控制器,适于在上电时,将所述iap程序数据以及所述中断服务程序数据写入至所述sram并执行;以及在接收到第一lvd中断信号时,向所述iap状态机发送所述iap数据更新停止指令;所述iap状态机,与所述flash闪存、所述sram以及所述控制器耦接,适于在接收到所述控制器发送的iap数据更新指令时,对所述flash闪存进行操作;以及,在接收到所述控制器发送的iap数据更新停止指令时,停止对所述flash闪存的操作;所述lvd电路,与所述中断信号处理器以及所述控制器耦接,适于当检测到芯片的内部电压低于第一预设电压值时生成第一lvd中断信号,并发送至所述中断信号处理器;所述中断信号处理器,与所述iap状态机、所述lvd电路以及所述控制器耦接,适于对接收到的所述第一lvd中断信号进行处理并发送至所述控制器;所述sram,与所述iap状态机以及所述控制器耦接,适于存储所述iap程序数据以及所述中断服务程序数据。

可选的,所述lvd电路,还适于当检测到所述芯片的内部电压低于第二预设电压值时生成第二lvd中断信号,并将所述第二lvd中断信号发送至所述中断信号处理器;所述第二预设电压值大于所述第一预设电压值;所述中断信号处理器,还适于对接收到的所述第二lvd中断信号进行处理并发送至所述控制器;所述控制器,还适于在接收到经过处理后的所述第二lvd中断信号时,向所述iap状态机发送iap数据保存指令,并将所述lvd电路的电压检测阈值修改为所述第一预设电压值;以及在接收到所述iap状态机反馈的所述flash闪存的操作停止信号时,控制所述flash闪存保存已写入数据;所述iap状态机,还适于在接收到所述iap数据保存指令时,停止对所述flash闪存的操作,并向所述控制器反馈所述flash闪存的操作停止信号。

可选的,所述第一预设电压值不小于所述flash闪存的最低工作电压;所述第二预设电压值不小于所述芯片的最低工作电压。

可选的,所述控制器,还适于在将所述lvd电路的电压检测阈值修改为所述第一预设电压值之后,在未接收到所述lvd电路发送的第一lvd中断信号时,向所述iap状态机发送所述iap数据更新指令,执行iap数据更新。

可选的,所述iap状态机,还适于在执行iap数据更新时,将生成的iap中断信号发送至所述中断信号处理器;以及接收到所述控制器发送的iap数据更新停止指令时,停止iap数据更新;所述中断信号处理器,还适于对所述iap中断信号进行处理,并将经过处理后的iap中断信号发送至所述控制器;所述控制器,还适于向所述iap状态机发送iap数据更新停止指令,并根据所述经过处理后的iap中断信号对应的iap中断类型,执行相应的中断处理。

可选的,所述控制器,适于根据所述经过处理后的iap中断信号对应的iap中断类型,执行如下至少一种中断处理操作:当所述iap中断类型为地址写入出错时,控制所述iap状态机重新向所述flash闪存写入地址;当所述iap中断类型为数据写入出错时,控制所述iap状态机重新向所述flash闪存写入数据;当所述iap中断类型为启动项出错时,控制所述iap状态机重新向所述flash闪存写入正确的启动码;当所述iap中断类型为更新时长超出预设的iap数据更新持续时长时,向所述iap状态机发送iap数据更新停止指令。

与现有技术相比,本发明实施例的技术方案具有以下有益效果:

当接收到第一lvd中断信号时,判定当前芯片的内部电压较低,无法正常工作,禁止iap数据更新,从而可以避免系统内部电压不稳定导致系统软件更新失败。

进一步,当接收到第二lvd中断信号时,保存芯片内部的现场数据,从而防止芯片的内部电压较低而导致的现场数据丢失。

此外,通过对lvd电路的电压检测阈值进行修改,使得lvd电路可以在不同的时刻来分别检测芯片的内部电压是否低于第二预设电压值以及是否低于第一预设电压值,而无需设置两个lvd电路来分别检测芯片的内部电压是否低于第二预设电压值以及是否低于第一预设电压值,从而可以降低芯片的电路面积,减少芯片的成本。

附图说明

图1是本发明实施例中的一种iap数据更新控制方法的流程图;

图2是现有的一种lvd电路的结构示意图;

图3是本发明实施例中的另一种iap数据更新控制方法的流程图;

图4是本发明实施例中的又一种iap数据更新控制方法的流程图;

图5是本发明实施例中的一种iap数据更新控制系统的结构示意图。

具体实施方式

在应用可编程(in-applicationprogramming,iap)编程技术,是指在微控制器(microcontrollerunit,mcu)中的应用程序保持运行的同时,从任意通信端口(如通用异步收发传输器、通用串行总线、蓝牙等)接收程序更新数据并对存储器进行重新编程的技术。通过iap编程技术可以实现远程更新系统软件,无需技术工程师到现场进行更新,从而节省系统更新成本,并可对一些恶劣环境下设备的系统软件进行更新。

然而,在某些应用场景下,在使用iap编程技术对系统软件进行更新时,若系统内部的电压不稳定,则可能会导致系统软件更新失败,进而导致系统崩溃。

在本发明实施例中,当接收到第一lvd中断信号时,判定当前芯片的内部电压较低,无法正常工作,停止iap数据更新,从而可以避免系统内部电压不稳定导致系统软件更新失败。

为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。

本发明实施例提供了一种芯片iap数据更新控制方法,参照图1,以下通过具体步骤进行详细说明。

步骤s101,判断是否接收到第一lvd中断信号。

在具体实施中,在芯片内部设置有低压检测(lowvoltagedetection,lvd)电路。在芯片上电后,可以先使能lvd电路,使得lvd电路开始工作。lvd电路在工作时,可以实时检测芯片的内部电压。当lvd电路检测到芯片的内部电压低于第一预设电压值时,生成第一lvd中断信号。在芯片内部可以设置有控制器,lvd电路在生成第一lvd中断信号后,可以将第一lvd中断信号发送至控制器。

在本发明实施例中,当控制器接收到第一lvd中断信号时,执行步骤s102;当控制器未接收到第一lvd中断信号时,可以执行步骤s103。

在具体实施中,第一预设电压值可以为flash闪存的最低工作电压,也即确保flash闪存能够正常工作的最低电压。需要说明的是,针对不同规格不同型号的flash闪存,对应的能够正常工作的最低电压可能不同。在实际应用中,可以针对芯片内部所采用的flash闪存进行多次测试,以获知芯片内部应用的flash闪存的最低工作电压。

在本发明实施例中,第一预设电压值不小于flash闪存的最低工作电压。例如,经过多次实验可知当前flash闪存的最低工作电压为1.35v,则将第一预设电压值设定为1.35v。第一预设电压值也可以略高于flash闪存的最低工作电压。例如,flash闪存的最低工作电压为1.35v,可将第一预设电压值设定为1.5v。

在实际应用中,lvd电路通常用于检测芯片的内部电压。当检测到芯片的内部电压低于设定的电压检测阈值时,lvd电路可以生成中断信号。控制器根据接收到的lvd中断信号判定芯片的内部电压较低,芯片可能无法正常工作。

参照图2,给出了现有的一种lvd电路的结构示意图。图2中,lvd电路包括比较器201、传输门202、传输门203、反相器204、电阻r1、电阻r0以及可变电阻rhys。下面对图2中的lvd电路的工作原理进行简要说明。

比较器201的正端输入芯片内部比较参考电压vref,用户可以根据实际需要来设置vref。比较器201的负端输入被检测电压。被检测电压与电源电压vdd相关,当对可变电阻rhys的阻值进行调整时,被检测电压随之发生改变。

将被检测电压设置为芯片的内部电压,当芯片的内部电压低于vref时,lvd输出端(lvd_int)输出高电平信号。lvd_int输出的高电平信号经过反相器204取反,得到lvdb,反馈给传输门202和传输门203。

在vdd逐渐上升的过程中,当vdd2×(r0/(r0+r1+rhys))>vref时,lvd_int输出低电平信号,表示电源电压vdd高于设定值,vdd2表示为处于下降状态的vdd。当lvd_int输出低电平信号时,传输门202导通,传输门203关断。

在vdd逐渐下降的过程中,当vdd1×(r0/(r0+r1+rhys))<vref时,lvd_int输出高电平信号,表示电源电压vdd低于设定值,vdd1表示为处于上升状态的vdd。当lvd_int输出高电平信号时,传输门202关断,传输门203导通。

步骤s102,禁止iap数据更新。

在具体实施中,当控制器接收到第一lvd中断信号时,可以判定当前进行iap数据更新的flash闪存无法正常工作,对flash闪存进行的擦除或编程等操作可能会出错。因此,禁止iap数据更新,以避免对flash闪存的擦除或编程操作出错。

在本发明实施例中,若在对flash闪存进行iap数据更新的过程中,接收到第一lvd中断信号,则停止iap数据更新,并将已经更新的iap数据清除。若尚未对flash闪存进行iap数据更新时,接收到第一lvd中断信号,则在接收到iap数据更新指令时,禁止响应iap数据更新指令,也即禁止iap数据更新。

由此可见,当接收到第一lvd中断信号时,判定当前芯片的内部电压较低,无法正常工作,停止iap数据更新,从而可以避免系统内部电压不稳定导致系统软件更新失败。

步骤s103,执行iap数据更新。

在具体实施中,当控制器未接收到第一lvd中断信号时,则可以判定flash闪存能够正常工作。若当前正在进行iap数据更新,则可以继续执行iap数据更新。若当前还没有开始执行iap数据更新,则在接收地到iap数据更新指令时,可以执行iap数据更新。

在实际应用中,通常通过iap状态机执行iap数据更新。在执行iap数据更新时,可以先解锁iap状态机,之后使能iap状态机,也即使得iap状态机能够对flash闪存进行编程与擦除等操作。

在具体实施中,iap状态机在对flash闪存进行编程与擦除等操作时,可能会生成iap中断信号。在生成iap中断信号后,iap状态机将iap中断信号发送至控制器。当控制器接收到iap中断信号时,运行中断服务程序,以获知iap中断信号对应的中断类型。在获知iap中断信号对应的中断类型后,可以根据iap中断信号的类型,执行相应的中断处理。

在本发明实施例中,iap中断信号的类型可以包括地址写入出错、数据写入出错、启动项出错等任一种或多种。当iap中断信号的类型为地址写入出错时,可以重新写入地址。当iap中断信号的类型为数据写入出错时,可以重新写入数据。当iap中断类型为启动项出错时,可以重新写入正确的启动码。

在具体实施中,在执行iap数据更新时,可能会出现flash闪存擦除或编程操作异常的情况,可能会导致iap状态机死锁。为避免iap状态机死锁的情况出现,在执行iap数据更新之前,用户可以预先配置iap数据更新的持续时长(timeout),也即预先配置本次iap数据更新要持续多久。在执行iap数据更新的过程中,若检测到iap数据更新的时长超过持续时长,则可以生成iap中断信号。当控制器接收到iap中断信号,获知iap中断信号的中断类型为更新时长超出持续时长时,停止iap数据更新并退出,从而可以有效避免iap死锁的情况发生。

下面对本发明实施例中提供的芯片iap数据更新控制方法进行详细说明参照图3,本发明实施例提供了另一种芯片iap数据更新控制方法。

步骤s301,使能iap状态机以及lvd电路。

在本发明实施例中,在执行iap数据更新之前,可以先使能iap状态机以及lvd电路,使得iap状态机以及lvd电路均能够正常工作。

步骤s302,判断是否接收到第一lvd中断信号。

在本发明实施例中,flash闪存的最低工作电压为1.35v。lvd电路检测到芯片的内部电压小于1.5v时,生成第一lvd中断信号,并将第一lvd中断信号发送至控制器。控制器判断是否接收到第一lvd中断信号,当接收到第一中断信号时,执行步骤s303;当未接收到第一中断信号时,可以执行步骤s304。

步骤s303,禁止iap数据更新。

在本发明实施例中,当控制器接收到第一lvd中断信号时,若当前正在进行iap数据更新,则停止执行iap数据更新,并将本次iap数据更新过程中已经更新的iap数据清除;若当前还没有开始进行iap数据更新,则禁止执行iap数据更新。通过禁止iap数据更新,避免因芯片的内部电压过低导致对flash闪存的编程或擦除操作出错的情况发生。

步骤s304,执行iap数据更新。

在具体实施中,当控制器没有接收到lvd电路发送的第一lvd中断信号时,若接收到iap数据更新指令,即可开始执行iap数据更新。若当前正在进行iap数据更新,则可以继续执行iap数据更新。

在本发明实施例中,在控制执行iap数据更新时,可以先对iap进行解锁,使能iap中断,并配置本次iap数据更新的持续时长。若存在地址写入操作,则执行地址写入操作;若存在数据写入操作,则执行数据写入操作。之后,对flash闪存进行编程或擦除操作,直至编程或擦除操作结束。

步骤s305,判断是否接收到iap中断信号。

在本发明实施例中,通过控制器控制iap状态机,来执行iap数据更新。在iap数据更新的过程中,可能会出现iap数据更新错误的情况发生。当出现iap数据更新错误的情况时,iap状态机可以生成iap中断信号并发送至控制器。

当控制器接收到iap中断信号时,执行步骤s306;当控制器没有接收到iap中断信号时,重新执行步骤s305。

步骤s306,停止iap数据更新,并根据所述中断类型执行相应的中断处理。

在本发明实施例中,当控制器接收到iap中断信号时,即可停止iap数据更新。在实际应用中,控制器可以向iap状态机发送iap数据更新停止指令。iap状态机在接收到iap数据更新停止指令后,停止iap数据更新,也即停止对flash闪存的编程或擦除操作。

当iap中断信号对应的iap中断类型为地址写入出错时,重新写入地址;当iap中断类型为数据写入出错时,重新写入数据;当iap中断类型为启动项出错时,重新写入正确的启动码;当iap中断类型为更新时长超出预先配置的iap数据更新的持续时长时,停止iap数据更新;当iap中断类型为更新时长超出预设的iap数据更新持续时长时,停止iap数据更新。

需要说明的是,在本发明实施例中,步骤s305~步骤s306是在步骤s304的执行过程中执行的。也就是说,在执行iap数据更新时,实时地判断是否接收到iap中断信号,并在接收到iap中断信号时,停止执行iap数据更新。

在本发明实施例中,在步骤s301执行完成后,步骤s302~步骤s303始终在执行,直至iap数据更新结束。也就是说,在执行步骤s304~步骤s306的过程中,若控制器接收到lvd电路发送的第一lvd中断信号,则无论当前正在执行哪一个步骤,都立即停止执行。

在实际应用中,受自身内部因素以及外部环境的影响,芯片的内部电压可能会发生变化。在某些情况下,芯片的内部电压可能会低于芯片的最低工作电压,此时,芯片无法正常工作,导致芯片正在进行处理的现场数据丢失。

在具体实施中,为避免因芯片的内部电压较低而导致芯片的现场数据丢失,可以对lvd电路中的可变电阻rhys的阻值进行调整,使得lvd电路在不同的时间段内的电压检测阈值不同。

在本发明实施例中,可以先将lvd电路的电压检测阈值设置为第二预设电压值,第二预设电压值不小于芯片的最低工作电压,芯片的最低工作电压为能够满足芯片正常工作需求的电压。

例如,芯片的最低工作电压为4v,则可以将第二预设电压值设置为4v,也可以将第二预设电压值设置为4.2v。

在将lvd电路的电压检测阈值设置为第二预设电压值之后,lvd电路可以实时检测芯片的内部电压是否低于第二预设电压值。当lvd电路检测到芯片的内部电压低于第二预设电压值时,可以生成第二lvd中断信号,并发送至控制器。

当控制器接收到第二lvd中断信号时,可以对lvd电路的电压检测阈值进行调整,将lvd电路的电压检测阈值调整为第一预设电压值。在将lvd电路的电压检测阈值调整位第一预设电压值之后,若控制器没有接收到lvd电路发送的第一lvd中断信号,也即芯片的内部电压大于flash闪存的最低工作电压时,将芯片内部的现场数据保存,从而避免芯片内部的现场数据因芯片的内部电压较低而丢失。

参照图4,给出了本发明实施例中的另一种iap数据更新控制方法,下面通过具体步骤进行详细说明。

步骤s401,使能lvd电路。

在本发明实施例中,首先使能lvd电路,使得lvd电路能够正常工作。

步骤s402,判断是否接收到第二lvd中断信号。

在本发明实施例中,首先将lvd电路的电压检测阈值设置为第二预设电压值。当lvd电路检测到芯片的内部电压小于第二预设电压值时,生成第二lvd中断信号并发送至控制器。

当控制器接收到第二lvd中断信号时,执行步骤s403;当控制器没有接收到第二lvd中断信号时,则可以判定芯片能够正常工作。若当前存在iap数据更新需求,则执行步骤s406。

步骤s403,将lvd电路的电压检测阈值修改为第一预设电压值。

在本发明实施例中,控制器在接收到第二lvd中断信号后,可以执行lvd中断服务程序,将lvd电路的电压检测阈值从第二预设电压值修改为第一预设电压值。

结合图2,可以对lvd电路中的可调电阻rhys的阻值进行调整,从而将lvd电路的电压检测阈值从第二预设电压值修改为第一预设电压值。也就是说,在本发明实施例中,只需要采用同一个lvd电路,即可实现在不同的时刻,根据检测到的芯片的内部电压,生成不同的lvd中断信号。

通常情况下,芯片的最低工作电压要高于芯片内部的flash闪存的工作电压。因此,在本发明实施例中,在设置第一预设电压值以及第二预设电压值时,设置第一预设电压值小于第二预设电压值。

步骤s404,判断是否接收到第一lvd中断信号。

在本发明实施例中,当lvd电路检测到芯片的内部电压低于第一预设电压值时,生成第一lvd中断信号并发送至控制器。当控制器接收到第一lvd中断信号时,执行步骤s410;当控制器没有接收到第一lvd中断信号时,执行步骤s405。

步骤s405,保存芯片内部的现场数据。

在本发明实施例中,在芯片的内部电压低于第二预设电压值时,可以将芯片的内部正在执行的现场数据进行保存,从而可以避免因芯片的内部电压较低而导致的现场数据丢失的情况发生。

步骤s406,执行iap数据更新。

在本发明实施例中,执行iap数据更新的过程可以参照本发明上述实施例中提供的步骤s103以及步骤s304所述的内容,此处不做赘述。

步骤s407,判断是否接收到iap中断信号。

在执行iap数据更新的过程中,实时执行步骤s407。当控制器接收到iap中断信号时,执行步骤s408;当控制器没有接收到iap中断信号时,重新执行步骤s407。

步骤s408,停止iap数据更新,并根据所述iap中断类型执行相应的中断处理。

在本发明实施例中,步骤s408可以参照步骤s306,此处不做赘述。

需要说明的是,步骤s407~步骤s408是在步骤s406的执行过程中实时执行的。也就是说,在执行iap数据更新的过程中,控制器可以实时判断是否接收到iap中断信号。当接收到iap中断信号时,即可停止iap数据更新,并根据iap中断类型执行相应的中断处理。

步骤s409,判断iap数据更新是否完成。

当iap数据更新完成时,执行步骤s410;否则,执行步骤s406。

步骤s410,iap数据更新结束。

参照图5,本发明实施例还提供了一种芯片iap数据更新控制系统,包括:flash闪存501、iap状态机502、控制器503、中断信号处理器504、lvd电路505以及sram506,中:

flash闪存501,与iap状态机502以及控制器503耦接,适于存储iap程序数据以及中断服务程序数据;

控制器503,适于在上电时,将flash闪存501中的iap程序数据以及中断服务程序数据写入至sram506并执行;以及在接收到第一lvd中断信号时,向iap状态机502发送iap数据更新停止指令;

iap状态机502,与flash闪存、sram506以及控制器503耦接,适于在接收到控制器503发送的iap数据更新指令时,对flash闪存501进行操作;以及,在接收到控制器503发送的iap数据更新停止指令时,停止对flash闪存501的操作;

lvd电路505,与中断信号处理器504以及控制器503耦接,适于当检测到芯片的内部电压低于预设第一预设电压值时生成第一lvd中断信号,并发送至中断信号处理器504;

中断信号处理器504,与iap状态机502、lvd电路505以及控制器503耦接,适于对接收到的第一lvd中断信号进行处理并发送至控制器503;

sram506,与iap状态机502以及控制器503耦接,适于存储iap程序数据以及中断服务程序数据。

在具体实施中,第一预设电压值不小于flash闪存501的最低工作电压。

下面对本发明上述实施例中提供的iap数据更新控制系统的工作流程进行说明。

在具体实施中,在flash闪存501中,存储有iap数据更新所需要的iap程序数据以及中断服务程序数据。由于flash闪存501在擦写过程中无法被读取,为保证控制器503能够正常读取指令,在芯片上电后,在执行iap数据更新之前,控制器503可以从flash闪存501中读取iap程序数据以及中断服务程序数据,并将iap程序数据以及中断服务程序数据写入至sram506中。在进行iap数据更新时,控制器503可以从sram506中读取iap程序数据并执行,以实现iap数据更新。

在进行iap数据更新时,通过控制器503控制iap状态机502对flash闪存501进行擦除和写入等操作。在进行iap数据更新时,控制器503可以向iap状态机502发送iap数据更新指令。iap状态机502在接收到iap数据更新指令后,对flash闪存501进行擦除和写入等操作。

iap状态机502在对flash闪存501进行擦除和写入等操作的过程中,可能会出现擦除出错或者写入出错等情况。此时,flash闪存501可以向iap状态机502发送busy信号。iap状态机502在接收到busy信号后,对busy信号进行处理,生成iap中断信号并发送至中断信号处理器504。

中断信号处理器504对接收到的iap中断信号进行处理,并发送至控制器503。控制器503在接收到经过处理后的iap中断信号后,运行iap中断服务程序,以获知iap中断信号对应的中断类型,并执行相应的中断处理。

在具体实施中,当iap中断信号对应的中断类型为地址写入出错时,控制器503可以控制iap状态机502重新向flash闪存501写入地址;当iap中断信号对应的中断类型为数据写入出错时,控制器503控制iap状态机502重新向flash闪存501写入数据;当中断类型为启动项出错时,控制器503控制iap状态机502重新向flash闪存501写入正确的启动码。

在具体实施中,在进行iap数据更新之前,还可以预先配置iap数据更新的持续时长。在进行iap数据更新的过程中,iap状态机502可以检测当前进行的iap数据更新的时长是否超出持续时长。当iap状态机502检测到当前进行的iap数据更新的时长超出持续时长时,可以生成iap中断信号并发送至中断信号处理器504。中断信号处理器504在接收到iap中断信号后,对iap中断信号进行处理,并将处理后iap中断信号发送至控制器503。

控制器503在接收到经过中断信号处理器504处理之后的iap中断信号后,执行中断服务程序,来获知iap中断信号对应的中断类型。当控制器503获知当前接收到的iap中断信号的中断类型为iap数据更新的更新时长超出持续时长时,向iap状态机502发送iap数据更新停止指令,以跳出iap数据更新。iap状态机502在接收到iap数据更新停止后,停止对flash闪存501的写入和擦除操作。

在具体实施中,在进行iap数据更新之前,控制器503可以先将lvd电路505的电压检测阈值设置为预设第二预设电压值。lvd电路505在检测到芯片的内部电压低于第二预设电压值时,生成第二lvd中断信号,并发送至中断信号处理器504。在本发明实施例中,第二预设电压值不小于芯片的最低工作电压,且第二预设电压值大于第一预设电压值。

中断信号处理器504在接收到第二lvd中断信号后,对第二lvd中断信号进行处理,并将经过处理后的第二lvd中断信号发送至控制器503。控制器503在接收到经过处理后的第二lvd中断信号时,向iap状态机502发送iap数据保存指令,并将lvd电路505的电压检测阈值从第二预设电压值调整为第一预设电压值。在将lvd电路505的电压检测阈值从第二预设电压值调整为第一预设电压值之后,再进行iap数据更新。

iap状态机502在接收到iap数据保存指令后,停止对flash闪存501的擦除和写入操作,并向控制器503反馈所述flash闪存501的操作停止信号。

控制器503在将lvd电路505的电压检测阈值修改为第一预设电压值之后,若没有接收到lvd电路505发送的第一lvd中断信号,则可以向iap状态机502发送iap数据更新指令。iap状态机502在接收到数据更新指令时,即可对flash闪存501进行擦除和写入操作。在接收到iap状态机502反馈的flash闪存501的操作停止信号时,控制flash闪存501保存已写入数据。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指示相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:rom、ram、磁盘或光盘等。

虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1