技术领域
[0001] 本申请涉及在线升级技术领域,特别涉及一种支持在线升级的电路。
相关背景技术
[0002] 本部分旨在为权利要求书中陈述的本申请的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是已被公开的现有技术。
[0003] 目前,现有的MCU(Micro Control Unit,微控制器)中用户程序的在线升级方法(OTA,On‑the‑Air)通常利用特定通信端口IIC/SPI等和专用的命令(例如,通过通信端口发送0xbb,表示切换进入在线升级模式等,这些命令与内部在线升级逻辑电路相匹配,一经确定不可修改)来进行在线升级。也就是说,通过这些通信端口发送专用的命令,以进入在线编程。然后发送相应的操作命令,以判断是否进入在线编程,在判断进入在线编程后,根据通信端口和内部设计电路以及按照Flash读写数据的格式对Flash进行在线升级。在完成在线编程后,发送结束在线编程的命令,并且判断是否退出在线编程,从而完成一次在线升级过程。
[0004] 在线升级技术用于对微控制器可执行代码进行升级,在现代MCU系统中的应用越来越广泛。最常见的MCU OTA方案如下:中央处理器从主代码区0地址开始执行;中央处理器从云端下载OTA代码,并存入内部存储器SRAM;下载结束后,将内部存储器SRAM中的OTA代码拷贝到内部非易失性存储器flash,并覆盖主代码区;实现在线升级。执行从云端下载OTA代码时,需要中央处理器停止响应较长时间,并且不能被打断。
具体实施方式
[0020] 在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
[0021] 为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
[0022] 本申请的第一实施方式涉及一种支持在线升级的电路,其结构如图1所示,所述电路包括:微控制器(MCU)101,以及位于微控制器101外部的第一闪存块(BANK)105和第二闪存块106,微控制器101具有中央处理器(CPU)102、内部存储器(SRAM)103和闪存控制器104。第一闪存块105和第二闪存块106各自耦合到闪存控制器104,其中第一闪存块105和第二闪存块106分别用于存储主代码和在线升级代码。
[0023] 在一个实施例中,第一闪存块105和第二闪存块106的容量和接口均相同。例如,第一闪存块105和第二闪存块106的容量可以为512kb至32Mb。例如,第一闪存块105和第二闪存块106的接口均支持4线QSPI、8线Qcto‑SPI等。
[0024] 本申请的第一实施方式还涉及一种支持在线升级的方法,其流程如图2所示,结合图1和图2所示,该方法包括以下步骤:步骤S101,中央处理器102根据主代码区0地址通过闪存控制器104从第一闪存块
105中读取并开始执行存储的主代码。
[0025] 步骤S102,中央处理器102从云端107下载在线升级代码并存储到内部存储器103。
[0026] 步骤S103,中央处理器102通过闪存控制器104将在线升级代码拷贝到第二闪存块106,并将在线升级代码区0地址链接到第二闪存块106。
[0027] 步骤S104,中央处理器102执行内存回收操作,将主代码区0地址从第一闪存块105切换到第二闪存块106,并将在线升级代码区0地址从第二闪存块106切换到第一闪存块105。
[0028] 步骤S105,中央处理器102执行软件复位操作。
[0029] 步骤S106,中央处理器102根据切换后的主代码区0地址通过闪存控制器104从第二闪存块106中读取并开始执行存储的在线升级代码。
[0030] 本实施方式中,通过两个MCU外部的闪存块,可以执行在线升级时无需长时间中央处理器停止响应,并且可以节省MCU的成本。
[0031] 在第一实施方式中,第一闪存块和第二闪存块位于微控制器的外部,为了防止存储其中的代码被获取,本申请中采用加密的主代码和在线升级代码。当主代码和在线升级代码采用加密的代码时,第一闪存块和第二闪存块可以相应的采用解密电路各自地对主代码和在线升级代码进行解密。在微控制器中增加两个解密电路会额外增加芯片开销,对此本申请提出了第二实施方式中改进的电路。
[0032] 本申请的第二实施方式涉及一种支持在线升级的电路,其结构如图3(a)、图3(b)所示,所述电路包括:微控制器201,以及位于微控制器201外部的第一闪存块205和第二闪存块206。第一闪存块205和第二闪存块206各自耦合到微控制器201。微控制器201具有中央处理器202、内部存储器203、闪存控制器204和在线解密电路208,在线解密电路208分时耦合在闪存控制器与第一闪存块205或第二闪存块206之间。具体的,通过闪存控制器204控制在线解密电路208分时耦合到第一闪存块205或第二闪存块206之间,从而仅采用单个在线解密电路分时服务于第一闪存块205和第二闪存块206,无需第一闪存块和第二闪存块都具有对应连接的解密电路。图3(a)中在线解密电路208服务于第一闪存块205,图3(b)中在线解密电路208服务于第二闪存块206。其中第一闪存块205和第二闪存块206分别用于存储主代码和在线升级代码。其中,主代码和在线升级代码均为加密的代码。在一个实施例中,主代码和在线升级代码采用相同的加密算法进行加密,例如,加密算法选择下组中的一种或多种:消息摘要算法、对称加密算法、非对称加密算法和国密算法。
[0033] 在一个实施例中,电路还包括第一选择开关S1和第二选择开关S2,第一选择开关S1耦合在在线解密电路208与第一闪存块205之间,第二选择开关S2耦合在在线解密电路208与第二闪存块206之间,其中闪存控制器204包括选择模块209,选择模块209包括寄存器
210和反相器211,寄存器210的输入耦合到中央处理器202,寄存器210的输出耦合到反相器
211的输入以及第一选择开关S1,反相器211的输出耦合到第二选择开关S2,其中选择模块
209输出第一主代码选择信号(主代码区选择信号1)到第一选择开关S1,选择模块209输出第二主代码选择信号(主代码区选择信号2)到第二选择开关S2。
[0034] 本申请的第二实施方式还涉及一种支持在线升级的方法,其流程如图4所示,结合图3(a)、图3(b)和图4所示,该方法包括以下步骤:步骤S201,中央处理器202根据主代码区0地址通过闪存控制器204从第一闪存块
205读取加密的主代码,并通过在线解密电路208解密加密的主代码后开始执行解密的主代码。此时,如图3(a)所示,在线解密电路208服务于第一闪存块205。应当理解,此时第二闪存块作为备份代码区,仅允许进行写入操作,不需要在线解密,所以和在线解密电路是断开连接的。
[0035] 步骤S202,中央处理器202从云端207下载加密的在线升级代码并存储到内部存储器203。
[0036] 步骤S203,中央处理器202通过闪存控制器204将加密的在线升级代码拷贝到第二闪存块206,并将在线升级代码区0地址链接到第二闪存块206。
[0037] 步骤S204,中央处理器202执行内存回收操作,将主代码区0地址从第一闪存块205切换到第二闪存块206,并将在线升级代码区0地址从第二闪存块206切换到第一闪存块205。
[0038] 步骤S205,中央处理器202执行软件复位操作。此后,闪存控制器204使得在线解密电路208断开与第一闪存块205之间的连接,并将在线解密电路208耦合到第二闪存块206。如图3(b)所示,在线解密电路208服务于第二闪存块206。应当理解,此时第一闪存块作为备份代码区,仅允许进行写入操作,不需要在线解密,所以和在线解密电路是断开连接的。
[0039] 例如,在一个实施例中,中央处理器202在寄存器210中写入“1”,通过主代码选择信号1控制第一选择开关导通,通过主代码选择信号2控制第二选择开关断开,此时中央处理器202获取并执行第一闪存块205中的主代码。而中央处理器202执行软件复位操作后,中央处理器202在寄存器210中写入“0”,选择模块209通过主代码选择信号1控制第一选择开关断开,通过主代码选择信号2控制第二选择开关导通,此时中央处理器202获取并执行第二闪存块206中的在线升级代码。
[0040] 步骤S206,中央处理器202根据切换后的主代码区0地址开始读取加密的在线升级代码,并通过在线解密电路208解密加密的在线升级代码后开始执行解密的在线升级代码。
[0041] 本实施方式中,存放在闪存块中的主代码和在线升级代码均是经过加密的密文,并且读取和写入闪存块过程中传输的代码也是密文,可以避免被盗取。本申请仅采用单个在线解密电路,可以分时复用,实现主代码和在线升级代码的解密。
[0042] 综上所述,本申请中,通过两个闪存块增加了设计冗余度,来增强系统的鲁棒性和安全性,避免了传统的只有一个闪存块时必须执行的“代码覆盖”和出现意外情况下的“代码恢复”操作,大大减少系统复杂度,因此增强了系统鲁棒性和安全性。此外,两个闪存块分时复用同一个在线解密模块,可以达到节省芯片资源的目的。同时,随着外部闪存块的成本逐渐下降,利用两个外部闪存块来实现在线升级也可以大幅度降低系统成本。
[0043] 需要说明的是,在本专利的申请文件中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本专利的申请文件中,如果提到根据某要素执行某行为,则是指至少根据该要素执行该行为的意思,其中包括了两种情况:仅根据该要素执行该行为、和根据该要素和其它要素执行该行为。多个、多次、多种等表达包括2个、2次、2种以及2个以上、2次以上、2种以上。
[0044] 在本说明书提及的所有文献都被认为是整体性地包括在本申请的公开内容中,以便在必要时可以作为修改的依据。此外应理解,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。
[0045] 在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。