在线升级方法和在线升级系统的制作方法

文档序号:6509438阅读:180来源:国知局
在线升级方法和在线升级系统的制作方法
【专利摘要】本发明提出一种在线升级系统和在线升级方法,其中在线升级方法包括以下步骤:获取在线升级程序;将在线升级程序写入至存储器的启动引导程序区中;ISP控制器通过主控制器接收在线升级指令,并执行启动引导程序区中的在线升级程序;主控制器从上位机获取在线升级命令或数据,并将在线升级命令或数据写入至ISP控制器;ISP控制器暂停主控制器,并根据在线升级命令或数据对存储器进行相应操作;当ISP控制器对存储器进行在线升级操作完成之后,ISP控制器释放对主控制器的暂停。本发明的在线升级方法可以由用户自己定义在线升级的端口和软件,并且通过主控制器CPU执行程序来控制MCU中用户程序的在线升级过程,该方法兼容性好,可靠性高,用户使用方便。
【专利说明】在线升级方法和在线升级系统

【技术领域】
[0001]本发明涉及软件【技术领域】,特别涉及一种在线升级方法以及一种在线升级系统。

【背景技术】
[0002]目前,现有的MCU(Micro Control Unit,微控制单元)中用户程序的在线升级方法通常利用特定通信端口 IIC/SPI等和专用的命令(例如,通过通信端口发送Oxbb,表示切换进入在线升级模式等,这些命令与内部在线升级逻辑电路相匹配,一经确定不可修改)来进行在线升级。也就是说,通过这些通信端口发送专用的命令,以进入在线编程。然后发送相应的操作命令,以判断是否进入在线编程,在判断进入在线编程后,根据通信端口和内部设计电路以及按照Flash读写数据的格式对Flash进行在线升级。在完成在线编程后,发送结束在线编程的命令,并且判断是否退出在线编程,从而完成一次在线升级过程。
[0003]但是,现有技术是通过特定通信端口、专用命令和对应的内部设计电路来对MCU中的用户程序进行在线升级,这种硬件逻辑控制升级的方式,局限于在线升级只能通过芯片定义的特定方式,不能作为通用的在线升级技术,这将导致在线升级端口和在线升级软件不能由用户自己定义,而且在线升级过程完全不需要主控制器CPU的参与,因此开发在线升级软件十分局限,极不方便用户的使用。


【发明内容】

[0004]本发明的目的旨在至少从一定程度上解决上述的技术缺陷。
[0005]为此,本发明的一个目的在于提出一种在线升级方法,该方法可以由用户自己定义在线升级的端口和软件,并且通过主控制器执行程序来控制MCU中用户程序的在线升级过程,因此兼容性好,可靠性高,便于需要自己定义在线升级软件以及对MCU通信端口使用数量要求严格的用户使用。
[0006]本发明的另一个目的在于提出一种在线升级系统。
[0007]为达到上述目的,根据本发明的一个方面,提供了一种在线升级方法,包括以下步骤:获取在线升级程序;将所述在线升级程序写入至存储器的启动引导程序区中,其中,主控制器分别通过存储控制器和ISP控制器与所述存储器相连;所述ISP控制器通过所述主控制器接收在线升级指令,并执行所述启动引导程序区中的在线升级程序;所述主控制器从上位机获取在线升级命令或数据,并将所述在线升级命令或数据写入至所述ISP控制器;所述ISP控制器暂停所述主控制器,并根据所述在线升级命令或数据对所述存储器进行相应操作;以及当所述ISP控制器对所述存储器进行在线升级操作完成之后,所述ISP控制器释放对所述主控制器的暂停。
[0008]根据本发明实施例的在线升级方法,主控制器CPU与上位机之间的通信协议是由用户的启动引导程序来指定的,因此用户可以自己定义在线升级的端口和在线升级的软件以匹配上位机,并且,该方法通过CPU从上位机获取在线升级的命令或数据以及控制ISP控制器来控制在线升级过程,以实现对MCU中存储器的在线升级,因此该方法兼容性好,可靠性高,灵活方便,可以作为通用的在线升级技术,便于需要自己定义在线升级软件以及对MCU通信端口使用数量要求严格的用户使用。
[0009]为达到上述目的,根据本发明的另一个方面,提供了一种在线升级系统,该系统包括:存储器,设置有启动引导程序区;存储控制器和ISP控制器;上位机,用于获取在线升级程序,并将所述在线升级程序写入至存储器的启动引导程序区中;主控制器,所述主控制器分别通过存储控制器和ISP控制器与所述存储器相连,所述主控制器与所述上位机进行通信,用于从所述上位机获取在线升级指令,并根据所述在线升级指令执行所述启动引导程序区中的在线升级程序,以及从所述上位机获取在线升级命令或数据,并将所述在线升级命令或数据写入至所述ISP控制器,其中,所述ISP控制器,用于暂停所述主控制器,并根据所述在线升级命令或数据对所述存储器进行操作存储器进行相应操作,以及当所述ISP控制器对所述存储器进行在线升级操作完成之后,所述ISP控制器释放对所述主控制器的暂停。
[0010]根据本发明实施例的在线升级系统,主控制器CPU与上位机之间的通信协议是由用户的启动引导程序来指定的,因此用户可以自己定义在线升级的端口和在线升级的软件以匹配上位机,同时,CPU从上位机获取在线升级命令或数据以及控制ISP控制器来控制在线升级过程,以实现对MCU中存储器的在线升级,因此该系统兼容性好,可靠性高,便于需要自己定义在线升级软件以及对MCU通信端口使用数量要求严格的用户使用。
[0011]本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

【专利附图】

【附图说明】
[0012]本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0013]图1为根据本发明实施例的在线升级系统的结构框图;
[0014]图2为根据本发明一个实施例的存储器的结构示意图;
[0015]图3A为根据本发明一个实施例的存储器的用户程序区空白时的在线升级模式示意图;
[0016]图3B为根据本发明另一个实施例的检测到ISP命令时的在线升级模式示意图;
[0017]图4A为根据本发明一个实施例的CPU从BLROM启动时的启动地址映射示意图;
[0018]图4B为根据本发明另一个实施例的CPU从APPROM启动时的启动地址映射示意图;
[0019]图5为根据本发明一个实施例的在线升级系统的硬件原理框图;
[0020]图6为根据本发明一个实施例的ISP控制器对存储器的操作过程控制时序图;
[0021]图7为根据本发明实施例的在线升级方法的流程图;
[0022]图8为根据本发明一个具体实施例的在线升级方法的流程图;以及
[0023]图9为根据本发明一个实施例的CPU控制ISP控制器以对FLASH进行读、擦除、写操作的具体控制流程图。

【具体实施方式】
[0024]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0025]下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本发明。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。此夕卜,本发明提供了的各种特定的工艺和材料的例子,但是本领域普通技术人员可以意识到其他工艺的可应用于性和/或其他材料的使用。另外,以下描述的第一特征在第二特征之“上”的结构可以包括第一和第二特征形成为直接接触的实施例,也可以包括另外的特征形成在第一和第二特征之间的实施例,这样第一和第二特征可能不是直接接触。
[0026]在本发明的描述中,需要说明的是,除非另有规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
[0027]参照下面的描述和附图,将清楚本发明的实施例的这些和其他方面。在这些描述和附图中,具体公开了本发明的实施例中的一些特定实施方式,来表示实施本发明的实施例的原理的一些方式,但是应当理解,本发明的实施例的范围不受此限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
[0028]下面参照附图来描述根据本发明实施例提出的在线升级方法和在线升级系统。
[0029]如图1所示,本发明实施例提出的在线升级系统包括:存储器10、存储控制器20和ISP控制器201、上位机30、主控制器40,其中,存储器10设置有启动引导程序区,上位机30用于获取在线升级程序,并将在线升级程序写入至存储器10的启动引导程序区101中;主控制器40分别通过存储控制器20和ISP控制器201与存储器10相连,主控制器40与上位机30进行通信,主控制器40用于从上位机30获取在线升级指令,并根据在线升级指令执行启动引导程序区101中的在线升级程序,以及从上位机30获取在线升级命令或数据,并将在线升级命令或数据写入至ISP控制器201。其中,ISP控制器201用于暂停主控制器40,并根据在线升级命令或数据对存储器10进行操作,以及当ISP控制器201对存储器10操作完成之后,ISP控制器201释放对主控制器40的暂停。
[0030]在本发明的一个实施例中,如图1所示,存储控制器20中集成有ISP控制器201,这是由于ISP控制器201是对存储器10进行在线升级,也就是对存储器10进行擦除和读写操作,该功能与存储控制器20的功能类似,故在存储控制器20中集成ISP控制器201可以共用存储控制器20的部分操作功能,兼容性更好。
[0031]在本发明的一个实施例中,如图2所示,存储器10包括启动引导程序区(BLR0M,Bootloader ROM) 101 以及用户程序区(APPROM,Applicat1n R0M)102。可选地,存储器 10还可以包括RAM (Random Access Memory,随机存储器)。其中,BLROM可以为4KB,APPROM可以为60KB,RAM可以为4KB。
[0032]在本发明的一个实施例中,如图2所示,在存储器10的用户程序区102中设置有标志位区1021,标志位区1021中的标志位用于标志从启动引导程序区101或用户程序区102启动。标志位区1021可以设置在APPROM的末端。
[0033]其中,BLROM用于存储启动引导程序(Boot Program)以及在线升级程序(ISPProgram) ,APPROM用于存储用户程序(Applicat1n Program)、ISP检测程序(ISP DetectorProgram)以及标志位,启动引导程序可用BOOT表示,在线升级程序可用ISP表示。
[0034]可选地,在本发明的一个实施例中,主控制器40与上位机30间的通信端口可以为UART通信端口或CAN通信端口,也可以为其它通信端口,例如,调试接口 JTAG (Joint TestAct1n Group)。
[0035]可选地,在本发明的一个实施例中,标志位区1021中的标志位可以为CBF(ChipBoot Flag,芯片启动标志位)和ISP升级标志位(ISPS),其中CBF标志位用于标志在线升级系统上电复位以及系统复位以后的启动方式,并且当CBF=I时,在线升级系统在上电复位以及系统复位后将从BLROM启动;当CBF=O时,在线升级系统在上电复位以及系统复位后将从APPROM启动。
[0036]ISPS标志位用于标志在线升级系统当前是否需要升级以及升级是否完成等状态,可选地,ISPS可用2个二进制位来表示,其中:
[0037]当BOOT程序检测到ISPS=Il时,标志系统的APPROM当前空白,当前需要ISP程序下载用户程序到APPROM中,其在线升级模式如图3A所示;
[0038]当BOOT程序检测到ISPS=Ol时,标志系统上次的在线升级未完成,当前需要升级,即需要ISP程序更新用户程序,CPU调用ISP程序来更新APPROM中的用户程序和ISP检测程序,其在线升级模式如图3B所示;
[0039]当BOOT程序检测到ISPS=1时,标志系统当前无需在线升级;
[0040]当BOOT程序检测到ISPS=OO时,标志状态错误,CPU将向主程序报错,并且由用户程序处理,系统当前无需在线升级。
[0041]也就是说,在ISPS=Il或ISPS=Ol时,系统当前需要在线升级,以及在ISPS=1或ISPS=OO时,系统当前无需在线升级,并且当系统有在线升级需求时,需要在更新用户程序前将标志位ISPS置为01,以确保当系统出现异常情况而不能完成当前在线升级过程时,下一次系统上电复位或者系统复位后仍然能够正常进入在线升级过程,例如,如果在更新用户程序的过程中意外断电,由于在更新用户程序前已将标志位ISPS置为01,因此在系统重上电后仍然能够重新进入在线升级过程,从而再次进行用户程序更新;同时,在系统通过通信端口(例如JTAG)完成在线升级后,需要将标志位ISPS置为10以及标志位CBF置为0,以防止系统重上电后从BLROM启动和再次在线更新用户程序。
[0042]进一步地,在本发明的一个实施例中,在线升级系统还设置升级标志保护位以防止升级标志位被误操作,而且,当升级标志保护位有效时,不能对升级标志位进行擦除和写入等操作。
[0043]此外,在本发明的一个实施例中,在线升级系统还包括BF (Boot Flag,启动标志位)标志位,用于标志软件复位SRST (Software Reset,即除上电复位和系统复位以外的其它复位)后的启动方式,其中,BF标志位在BF寄存器中,并且,当BF=I时,在线升级系统在软件复位后从APPROM启动;当BF=O时,在线升级系统在软件复位后从BLROM启动。
[0044]具体地,在本发明的一个实施例中,在线升级系统上电复位以及系统复位后,将清除BF寄存器,存储控制器20将CBF位读出,进行取反之后写入至BF寄存器中以标志系统从BLROM启动或从APPROM启动,系统在在线升级系统进行软件复位后,软件写入的BF标志位用于标志系统从BLROM启动或从APPROM启动,并且此时的BF标志位不能根据CBF取反之后的值来改变,因此,可以说,整个在线升级系统都是通过BF标志位来标志系统从BLROM启动或从APPROM启动。
[0045]进一步地,在线升级系统通过将0x0000_0000地址映射到BLROM或APPROM的起始地址,并且,系统从0x0000_0000开始启动,其中,当BF=0,CPU从BLROM启动时,其地址映射如图4A所示,当BF=1,CPU从APPROM启动时,其地址映射如图4B所示。
[0046]在本发明的一个实施例中,如图5所示,ISP控制器201包括ISP控制寄存器(ISP_CTRL Register) 2011、ISP 地址寄存器(ISP_ADDR Register) 2012、ISP 数据寄存器(ISP_DATA Register) 2013、ISP 命令寄存器(ISP_CMD Register) 2014 和 ISP 触发寄存器(ISP_TRIG Register) 2015,其中,ISP控制寄存器2011用于使能ISP控制器201,ISP地址寄存器2012用于写入操作地址,ISP数据寄存器2013用于写入操作数据,ISP命令寄存器2014用于写入操作命令,ISP触发寄存器2015用于触发ISP控制器201对存储器10进行在线升级操作。ISP控制器201通过ISP触发寄存器2015控制主控制器40暂停,在对存储器10进行在线升级操作完成之后,清空ISP触发寄存器2015。
[0047]优选地,在本发明的一个实施例中,如图5所示,ISP控制器201还包括处理器2016,用于处理ISP控制器201各寄存器中数据的读、写以及擦除。
[0048]具体地,如图5所示,当ISP控制器201开始操作存储器10的时候,CPU向ISP触发寄存器2015中的GO位写1,从而强制性拉低主控制器40的管脚HREADY的电位以暂停主控制器40,此时主控制器40停止所有的取指、响应中断(包括匪I中断)等操作,以防止主控制器40从存储器10中取不到指令而产生严重的错误,同时在在线升级程序中插入ISB指令;以及
[0049]当ISP命令寄存器2014在对存储器10的操作完成后,将对GO硬件清零,即清空ISP触发寄存器2015使G0=0,并执行ISB指令清空流水线以恢复主控制器40暂停前的进程,以上操作过程如图6所示。
[0050]进一步地,在本发明的实施例中,存储器10可以为FLASH存储器。可选地,主控制器40可以为Cortex M系列心片。
[0051]本发明实施例的在线升级系统,与传统技术不同的是,用户可以完全根据需要的在线升级端口,自己编写在线升级软件以定义CPU与上位机之间的通信协议,从而匹配上位机,而不是固定的通信端口和专用的命令,并且,通过CPU执行在线升级程序以及与上位机进行通信以获取在线升级的命令或数据以控制ISP控制器来控制在线升级的过程,同时在在线升级过程中的每一步都设置相应的标志位,以确保正确执行每个步骤,提高在线升级的可靠性,即便是在更新用户程序的过程中意外断电的情况下,也能够保证系统在重新上电后,仍然能够再次进入在线升级过程,以保证系统的正常运行,因此该系统兼容性好,可靠性高,便于需要自己定义在线升级软件以及对MCU通信端口使用数量要求严格的用户使用。
[0052]此外,如图7所示,本发明的实施例提出一种在线升级方法,包括如下步骤:
[0053]SI,获取在线升级程序。
[0054]S2,将在线升级程序写入至存储器的启动引导程序区中,其中,主控制器分别通过存储控制器和系统编程ISP控制器与存储器相连。
[0055]S3,ISP控制器通过主控制器接收在线升级指令,并执行启动引导程序区中的在线升级程序。
[0056]S4,主控制器从上位机获取在线升级命令或数据,并将在线升级命令或数据写入至ISP控制器。
[0057]S5,ISP控制器暂停主控制器,并根据在线升级命令或数据对存储器进行相应操作。
[0058]S6,当ISP控制器对存储器进行在线升级操作完成之后,ISP控制器释放对主控制器的暂停。
[0059]在本发明的一个实施例中,根据二次开发用户需要升级的通信端口和需要升级的软件生成启动引导程序BOOT以及ISP在线升级程序,即完成步骤SI。
[0060]在进入步骤S2后,将以上启动引导程序BOOT以及ISP在线升级程序通过通信端口写入存储器的启动引导程序区BLROM中,完成步骤S2。
[0061]在进入步骤S3后,主控制器CPU根据标志位CBF和BF进行地址映射以从BLROM启动或从APPROM启动,若需要在线升级,CPU将调用ISP在线升级程序,从而进入步骤S4。
[0062]在进入步骤S4后,CPU将与上位机进行通信以获取在线升级命令或数据,并且将在线升级命令或数据写入至ISP控制器中。
[0063]在进入步骤S5后,CPU向ISP触发寄存器中的GO位写I以暂停CPU对存储器的操作,同时添加ISB指令,并且触发ISP控制器以根据在线升级命令或数据对存储器进行相应操作,当操作完成后,硬件清零GO信号并执行ISB指令,以释放对CPU的暂停,恢复CPU暂停前的进程。
[0064]此外,在本发明的一个实施例中,存储控制器中集成有ISP控制器,这是由于ISP控制器是对存储器进行在线升级,也就是对存储器进行擦除和读写操作,该功能与存储控制器的功能类似,故在存储控制器中集成ISP控制器可以共用存储控制器的部分操作功能,兼容性更好。
[0065]在本发明的一个实施例中,存储器包括启动引导程序区(BLR0M,Bootloader ROM)以及用户程序区(APPROM, Applicat1n ROM)。可选地,存储器还可以包括RAM (RandomAccess Memory,随机存储器)。其中,BLROM可以为4KB,APPROM可以为60KB,RAM可以为4KB。
[0066]在本发明的一个实施例中,在存储器的用户程序区中设置有标志位区,标志位区中的标志位用于标志从启动引导程序区或用户程序区启动。标志位区可以设置在APPROM的末端。
[0067]其中,BLROM用于存储启动引导程序(Boot Program)以及在线升级程序(ISPProgram) ,APPROM用于存储用户程序(Applicat1n Program)、ISP检测程序(ISP DetectorProgram)以及标志位,启动引导程序可用BOOT表示,在线升级程序可用ISP表示。
[0068]可选地,在本发明的一个实施例中,主控制器与上位机间的通信端口可以为UART通信端口或CAN通信端口,也可以为其它通信端口,例如,调试接口 JTAG (Joint TestAct1n Group)。
[0069]可选地,在本发明的一个实施例中,标志位区中的标志位可以为CBF(Chip BootFlag,芯片启动标志位)标志位和ISP升级标志位(ISPS),其中CBF标志位用于标志在线升级系统上电复位以及系统复位以后的启动方式,并且当CBF=I时,在线升级系统在上电复位以及系统复位后将从BLROM启动;当CBF=O时,在线升级系统在上电复位以及系统复位后将从APPROM启动。
[0070]ISPS标志位用于标志在线升级系统当前是否需要升级以及升级是否完成等状态,可选地,ISPS可用2个二进制位来表示,其中:
[0071]当BOOT程序检测到ISPS=Il时,标志系统的APPROM当前空白,当前需要ISP程序下载用户程序到APPROM中,其在线升级模式如图3 (I)所示;
[0072]当BOOT程序检测到ISPS=Ol时,标志系统的上次的在线升级未完成,当前需要升级,即需要ISP程序更新用户程序,CPU调用ISP程序来更新APPROM中的用户程序和ISP检测程序,其在线升级模式如图3 (2)所示;
[0073]当BOOT程序检测到ISPS=1时,标志系统当前无需在线升级;
[0074]当BOOT程序检测到ISPS=OO时,标志状态错误,CPU将向主程序报错,并且由用户程序处理,系统当前无需在线升级。
[0075]也就是说,在ISPS=Il或ISPS=Ol时,系统当前需要在线升级,以及
[0076]在ISPS=1或ISPS=OO时,系统当前无需在线升级,并且当系统有在线升级需求时,需要在更新用户程序前将标志位ISPS置为01,以确保当系统出现异常情况而不能完成当前在线升级过程时,下一次系统上电复位或者系统复位后仍然能够正常进入在线升级过程,例如,如果在更新用户程序的过程中意外断电,由于在更新用户程序前已将标志位ISPS置为01,因此在系统重上电后仍然能够重新进入在线升级过程,从而再次进行用户程序更新;同时,在系统通过通信端口(例如JTAG)完成在线升级后,需要将标志位ISPS置为10以及标志位CBF置为O,以防止系统重上电后从BLROM启动和再次在线更新用户程序。
[0077]进一步地,在本发明的一个实施例中,在线升级系统还设置升级标志保护位以防止升级标志位被误操作,而且,当升级标志保护位有效时,不能对升级标志位进行擦除和写入等操作。
[0078]此外,在本发明的一个实施例中,在线升级系统还包括BF (Boot Flag,启动标志位)标志位,用于标志软件复位SRST (Software Reset,即除上电复位和系统复位以外的其它复位)后的启动方式,其中,BF标志位在BF寄存器中,并且,当BF=I时,在线升级系统在软件复位后从APPROM启动;当BF=O时,在线升级系统在软件复位后从BLROM启动。
[0079]具体地,在本发明的一个实施例中,在线升级系统上电复位以及系统复位后,将清除BF寄存器,存储控制器将CBF位读出,进行取反之后写入至BF寄存器中以标志系统从BLROM启动或从APPROM启动,系统在在线升级系统进行软件复位后,软件写入的BF标志位用于标志系统从BLROM启动或从APPROM启动,并且此时的BF标志位不能根据CBF取反之后的值来改变,因此,可以说,整个在线升级系统都是通过BF标志位来标志系统从BLROM启动或从APPROM启动。
[0080]进一步地,在线升级系统通过将0x0000_0000地址映射到BLROM或APPROM的起始地址,并且,系统从0x0000_0000开始启动。
[0081]在本发明的一个实施例中,ISP控制器包括ISP控制寄存器(ISP_CTRLRegister)、ISP 地址寄存器(ISP_ADDR Register)、ISP 数据寄存器(ISP_DATA Register)、ISP 命令寄存器(ISP_CMD Register)和 ISP 触发寄存器(ISP_TRIG Register),其中,ISP控制寄存器用于使能ISP控制器,ISP地址寄存器用于写入操作地址,ISP数据寄存器用于写入操作数据,ISP命令寄存器用于写入操作命令,ISP触发寄存器用于触发ISP控制器对存储器进行在线升级操作,ISP控制器通过ISP触发寄存器控制主控制器暂停,在对存储器进行在线升级操作完成之后,清空ISP触发寄存器。
[0082]优选地,在本发明的一个实施例中,ISP控制器还包括处理器,用于处理ISP控制器各寄存器中数据的读、写以及擦除。
[0083]具体地,当ISP控制器开始操作存储器的时候,CPU向ISP触发寄存器中的GO位写I,从而强制性拉低CPU的管脚HREADY的电位以暂停CPU,此时CPU停止所有的取指、响应中断(包括WI中断)等操作,以防止CPU从存储器中取不到指令而产生严重的错误,同时在在线升级程序中插入ISB指令;以及
[0084]当ISP命令寄存器在对存储器的操作完成后,将对GO硬件清零,即清空ISP触发寄存器使G0=0,并执行ISB指令以恢复CPU暂停前的进程。
[0085]进一步地,在本发明的实施例中,存储器可以为FLASH存储器。可选地,主控制器CPU可以为Cortex M系列芯片。
[0086]如图8所示,根据本发明实施例的在线升级方法的具体过程包括如下步骤:
[0087]S801,上电复位。在上电复位结束后,在线升级系统的硬件将自动从FLASH中将CBF启动标志位读出,并且,取反后写入BF寄存器;
[0088]S802:判断BF标志位。如果BF=0,则执行步骤S803,如果BF=1,则执行步骤S814 ;
[0089]S803, CPU从BLROM启动,并且运行BLROM里面的BOOT程序以及读取升级标志位ISPS,进入下一步骤S804。
[0090]S804,判断升级标志位ISPS,如果升级标志位ISPS=1或00,表示本次不需要升级APPR0M,进入步骤S805。如果升级标志位ISPS=Il或01,表示本次需要升级APPR0M,进入步骤 S806。
[0091]S805,设置 BF=I,写 SRST=I,软件复位。
[0092]S806,执行BLROM中的ISP在线升级程序,初始化通信端口,进入下一步骤S807。
[0093]S807,与上位机通信,从通信端口 CAN/UART接收命令或数据,接收到的命令或数据存放在RAM中,进入下一步骤S808。
[0094]S808, CPU控制ISP控制器,对FLASH进行读、擦除、写操作。
[0095]S809,判断失败标志位FF,如果FF=0,则进入步骤S810,如果FF=1,则进入步骤S814。
[0096]S810,判断升级是否完成,如果是,则进入步骤S811,如果否,则进入步骤S807。
[0097]S811,CPU控制ISP控制器,置升级标志位ISPS为完成状态和从APPROM启动(ISPS=1 和 CBF=O),进入下一步骤 S812。
[0098]S812,设置 BF=1,进入下一步骤 S813。
[0099]S813,写 SRST=I,软件复位。
[0100]S814,报告上位机,进入步骤S813。
[0101]S815, CPU 从 APPROM 启动,进入下一步骤 S815。
[0102]S816,运行用户程序,进入下一步骤S816。
[0103]S817,检测是否需要在线升级。如果是,则进入步骤S818,如果否,则进入步骤S817。
[0104]S818,CPU操控ISP控制器,置升级标志位ISPS为完成状态和从APPROM启动(ISPS=Ol 和 CBF=I),进入下一步骤 S819。
[0105]S819,设置 BF=I,写 SRST=I,软件复位。
[0106]具体地,在本发明的一个实施例中,如图9所示,步骤S808中,CPU控制ISP控制器以对FLASH进行读、擦除、写操作,具体控制流程如下:
[0107]S90LCPU向ISP控制器中的ISP控制寄存器中的ISPEN写1,使能ISP控制器,进入下一步骤S902。
[0108]S902,CPU分别向ISP地址寄存器中写入操作地址,向ISP数据寄存器中写入操作数据,向ISP命令寄存器中写入操作命令,以及向ISP触发寄存器的GO位写I以暂停CPU并添加ISB指令,进入下一步骤S903。
[0109]S903,ISP控制器根据命令对FLASH存储体执行擦除、读写等相关操作,如果当前在线升级失败,硬件置ISP状态寄存器中的升级失败标志位FF(Failed Flag,失败标志位)为1,进入下一步骤S904。
[0110]S904,判断GO信号。如果G0=0,则进入步骤S905,如果GO=I,则进入步骤S903。
[0111]S905,对 FLASH 操作完成。
[0112]S906,读取ISP数据寄存器的数据和失败标志位FF。
[0113]S907,判断ISP控制器的操作是否完成。如果是,则进入步骤S908,如果否,则进入步骤S902。
[0114]S908,ISP控制器的操作完成。
[0115]综上所述,本发明实施例提出的在线升级方法,可以由用户自己定义在线升级的端口和软件,并且通过CPU执行程序来控制MCU中用户程序的在线升级过程,同时设置相应的标志位以确保正确执行每个步骤,因此兼容性好,可靠性高,便于需要自己定义在线升级软件以及对MCU通信端口使用数量要求严格的用户使用。
[0116]根据本发明实施例的在线升级方法,用户可以完全根据需要的在线升级端口和在线升级软件定义CPU与上位机之间的通信协议,以匹配现有的上位机,从而进行在线升级,并且该升级方法通过CPU接收上位机的在线升级指令或数据以及控制ISP控制器来控制MCU中用户程序的在线升级过程,同时在用户程序区设置有标志位区以标志升级过程中的每个状态,可以确保在线升级的每个步骤得以正确执行,提高在线升级的可靠性,因此该方法兼容性好,可靠性高,便于需要自己定义在线升级软件以及对MCU通信端口使用数量要求严格的用户使用。
[0117]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0118]尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
【权利要求】
1.一种在线升级方法,其特征在于,包括以下步骤: 获取在线升级程序; 将所述在线升级程序写入至存储器的启动引导程序区中,其中,主控制器分别通过存储控制器和ISP (In System Program,在系统编程)控制器与所述存储器相连; 所述ISP控制器通过所述主控制器接收在线升级指令,并执行所述启动引导程序区中的在线升级程序; 所述主控制器从上位机获取在线升级命令或数据,并将所述在线升级命令或数据写入至所述ISP控制器; 所述ISP控制器暂停所述主控制器,并根据所述在线升级命令或数据对所述存储器进行相应操作;以及 当所述ISP控制器对所述存储器进行在线升级操作完成之后,所述ISP控制器释放对所述主控制器的暂停。
2.如权利要求1所述的方法,其特征在于,所述存储控制器中集成有所述ISP控制器。
3.如权利要求1所述的方法,其特征在于,在所述存储器的用户程序区中设置有标志位区,所述标志位区中的标志位用于标志从所述启动引导程序区或所述用户程序区启动。
4.如权利要求1所述的方法,其特征在于,所述ISP控制器包括ISP控制寄存器、ISP地址寄存器、ISP数据寄存器、ISP命令寄存器和ISP触发寄存器,其中,所述ISP控制寄存器用于使能所述ISP控制器,所述ISP地址寄存器用于写入操作地址,所述ISP数据寄存器用于写入操作数据,所述ISP命令寄存器用于写入操作命令,所述ISP触发寄存器用于触发所述ISP控制器对所述存储器进行在线升级操作。
5.如权利要求4所述的方法,其特征在于,所述ISP控制器通过所述ISP触发寄存器控制所述主控制器暂停,在对所述存储器进行在线升级操作完成之后,清空所述ISP触发寄存器。
6.如权利要求1所述的方法,其特征在于,所述存储器为FLASH存储器。
7.—种在线升级系统,其特征在于,包括: 存储器,设置有启动引导程序区; 存储控制器和ISP控制器; 上位机,用于获取在线升级程序,并将所述在线升级程序写入至存储器的启动引导程序区中; 主控制器,所述主控制器分别通过存储控制器和ISP控制器与所述存储器相连,所述主控制器与所述上位机进行通信,用于从所述上位机获取在线升级指令,并根据所述在线升级指令执行所述启动引导程序区中的在线升级程序,以及从所述上位机获取在线升级命令或数据,并将所述在线升级命令或数据写入至所述ISP控制器, 其中,所述ISP控制器,用于暂停所述主控制器,并根据所述在线升级命令或数据对所述存储器进行操作存储器进行相应操作,以及当所述ISP控制器对所述存储器进行在线升级操作完成之后,所述ISP控制器释放对所述主控制器的暂停。
8.如权利要求7所述的系统,其特征在于,所述存储控制器中集成有所述ISP控制器。
9.如权利要求7所述的系统,其特征在于,在所述存储器的用户程序区中设置有标志位区,所述标志位区中的标志位用于标志从所述启动引导程序区或所述用户程序区启动。
10.如权利要求7所述的系统,其特征在于,所述ISP控制器包括ISP控制寄存器、ISP地址寄存器、ISP数据寄存器、ISP命令寄存器和ISP触发寄存器,其中,所述ISP控制寄存器用于使能所述ISP控制器,所述ISP地址寄存器用于写入操作地址,所述ISP数据寄存器用于写入操作数据,所述ISP命令寄存器用于写入操作命令,所述ISP触发寄存器用于触发所述ISP控制器对所述存储器进行在线升级操作,所述ISP控制器通过所述ISP触发寄存器控制所述主控制器暂停,在对所述存储器进行在线升级操作完成之后,清空所述ISP触发寄存器。
【文档编号】G06F9/445GK104423984SQ201310386007
【公开日】2015年3月18日 申请日期:2013年8月29日 优先权日:2013年8月29日
【发明者】陆青, 郭平日, 杨云 申请人:比亚迪股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1