CN110888653A - 存储器中固件读写的控制方法、***、电子设备、芯片 - Google Patents
存储器中固件读写的控制方法、***、电子设备、芯片 Download PDFInfo
- Publication number
- CN110888653A CN110888653A CN201911059949.8A CN201911059949A CN110888653A CN 110888653 A CN110888653 A CN 110888653A CN 201911059949 A CN201911059949 A CN 201911059949A CN 110888653 A CN110888653 A CN 110888653A
- Authority
- CN
- China
- Prior art keywords
- memory
- firmware
- state information
- state
- protection
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 198
- 238000000034 method Methods 0.000 title claims abstract description 65
- 238000004891 communication Methods 0.000 claims description 31
- 238000004590 computer program Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Bioethics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Automation & Control Theory (AREA)
- Stored Programmes (AREA)
Abstract
本发明属于固件读写控制技术领域,为了解决现有防止固件被窃取和复制的保护方法存在成本高的技术问题,本发明提供一种存储器中固件读写的控制方法、***、电子设备、芯片和计算机存储介质;固件读写的控制方法包括:接收与存储器烧写是否被允许对应的状态信息,并判断状态信息为保护状态还是正常状态;其中,当存储器中烧写有固件之后,状态信息被配置成保护状态;当状态信息为保护状态时,禁止存储器烧写新的固件;当状态信息为正常状态时,擦除存储器中固件,再允许存储器烧写新的固件。因此,在保护固件不被复制的情况下,固件无需加密,减少加解密模块以降低成本。
Description
技术领域
本发明涉及固件读写控制技术领域,尤其涉及一种存储器中固件读写的控制方法、***、电子设备、芯片和计算机存储介质。
背景技术
固件(Firmware)可以被理解为“固化的软件”,广泛地存在于各种电子设备中的控制***,电子设备包括但不限于:小型机、路由器、交换机、PC机(个人计算机)、智能手机、数码相机、光驱、显卡或者遥控器等电子设备。控制***包括但不限于带有各类处理器的专用集成电路(ASIC),例如片上***(SoC)芯片。这些控制***需要提前写入固件,处理器才能执行固件程序,驱动芯片正常运转。
通常情况下,固件程序是可读的,这样第三方可读取固件程序二进制文件,反汇编程序,对固件进行分析和修改。开发者开发固件程序并写入芯片后,如果不加以保护,固件程序极易被第三方得到并复制以及修改,导致原开发者的知识产权得不到有效的保护。因此防止固件被窃取和复制的保护方法成为多数芯片的必要功能。
为了防止固件被窃取和复制,现有技术通常提供以下技术方案:
1、基于芯片UID加密认证的方法,每一个芯片有唯一的识别码(UID),固件开发者根据一定的加密算法,通过UID生成一串密文,随固件一起写入芯片中,应用程序通过密文认证后才可以执行。
2、对固件程序直接加密的方法,直接将加密后的固件程序写入芯片中,芯片内有硬件解密模块,将加密后的固件程序经过解密再进行执行。
但是发明人在实现本发明的过程中发现:上述技术方案都需要需要加解密模块,会增加成本;而且还会增加芯片的开发周期。
发明内容
为了解决现有防止固件被窃取和复制的保护方法存在成本高的技术问题,本发明提供一种存储器中固件读写的控制方法、***、电子设备、芯片和计算机存储介质,在保护固件不被复制的情况下,固件无需加密,减少加解密模块以降低成本。
为了实现上述目的,本发明提供的技术方案包括:
本发明一方面提供一种存储器中固件读写的控制方法,其特征在于,包括:
接收与存储器烧写是否被允许对应的状态信息,并判断所述状态信息为保护状态还是正常状态;其中,当所述存储器中烧写有固件之后,所述状态信息被配置成保护状态,并且所述状态信息还可以被修改为正常状态;
当所述状态信息为保护状态时,禁止所述存储器烧写新的固件;
当所述状态信息为正常状态时,擦除所述存储器中固件,再允许所述存储器烧写新的固件。
本发明实施例优选的实施方式中,所述方法还包括:需要对所述存储器进行烧写操作时,判断存储所述状态信息用状态信息存储器中的状态信息;当所述状态信息为保护状态时,通过状态信息配置寄存器将所述状态信息配置为正常状态,并且擦除所述存储器中固件,从而允许所述存储器烧写新的固件;当所述状态信息为正常状态时,通过所述状态信息配置寄存器将所述状态信息配置为保护状态,从而禁止所述存储器烧写新的固件。
本发明实施例优选的实施方式中,所述方法还包括:接收更新后所述状态信息是否被修改的状态信息,并存储更新后所述是否允许烧写所述存储器中固件的状态信息。
本发明实施例进一步优选的实施方式中,通过状态信息存储器对应的状态地址来存储所述状态信息。
本发明实施例优选的实施方式中,当所述状态信息从保护状态修改为正常状态时,擦除所述存储器中固件,允许所述存储器烧写新的固件之后,还包括:接收新的固件程序,并且新的固件程序烧写之后,将所述状态信息配置成保护状态,再次禁止所述存储器烧写固件。
本发明第二方面还提供一种存储器中固件读写的控制***,其特征在于,包括:
控制器、通信接口和状态信息配置寄存器;
所述通信接口用于与外部终端通信,并且控制器确认允许从所述通信接口接收的固件烧写至所述存储器;
状态信息配置寄存器,用于配置所述是否允许烧写所述存储器中固件的状态信息,所述状态信息为保护状态或正常状态;
其中,所述存储器中烧写有固件之后,所述状态信息配置寄存器被配置为保护状态;并且当所述状态信息配置寄存器配置成保护状态时,所述控制器禁止外部终端通过所述通信接口向所述存储器中烧写固件;当所述状态信息配置寄存器被配置成由保护状态修改为正常状态时,所述控制器控制所述存储器中的固件被擦除,再允许所述外部终端通过所述通信接口向所述存储器中烧写固件。
本发明实施例优选的实施方式中,所述控制***还包括状态信息存储器,用于接收所述状态信息配置寄存器更新的状态信息,并存储所述是否允许烧写所述存储器中固件的状态信息。
本发明实施例优选的实施方式中,所述通信端口接收到烧写命令时,所述控制器判断存储所述状态信息用状态信息存储器中的状态信息;当所述状态信息为保护状态时,通过所述状态信息配置寄存器将所述状态信息配置为正常状态,并且擦除所述存储器中固件,从而允许所述存储器烧写新的固件;当所述状态信息为正常状态时,通过所述状态信息配置寄存器将所述状态信息配置为保护状态,从而禁止所述存储器烧写新的固件。
本发明实施例进一步优选的实施方式中,所述状态信息存储器位于所述控制***内部,所述状态信息存储器对应的状态地址用于存储所述状态信息。
本发明实施例优选的实施方式中,所述控制器还被设置成:控制所述存储器中的固件被擦除,以及打开所述通信接口与存储器之间的通信之后,控制所述存储器通过所述通信接口接收新的固件程序,并且新的固件程序烧写之后,将所述状态信息配置寄存器的状态配置成保护状态,再次禁止所述存储器烧写固件。
本发明第三方面还提供一种电子设备,其特征在于,包括:
一个或多个处理器和存储器;
多个应用程序;
以及一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述存储器中,当所述计算机程序被所述电子设备执行时,使得所述电子设备实现如第一方面提供的任意一种所述的方法。
本发明第四方面还提供一种芯片,其特征在于,所述芯片与电子设备中的存储器耦合,使得所述芯片在运行时调用所述存储器中存储的计算机程序,或者所述芯片运行时调用所述芯片自身的存储器中存储的计算机程序,实现如第一方面提供的任意一种所述的方法。
本发明第五方面还提供一种计算机存储介质,其特征在于,所述计算机可读存储介质包括计算机程序,当计算机程序在电子设备上运行时,使得所述电子设备执行如第一方面提供的任意一种所述的方法。
采用本发明提供的上述技术方案,通过增加与存储器烧写是否被允许对应的状态信息,当状态信息为保护状态时,禁止存储器烧写新的固件;这样避免烧写过程中,防止第三方可读取固件程序二进制文件,反汇编程序,对固件进行分析和修改,得到存储器中的固件;而且为了更好适应实际应用过程中需要对固件进行升级的需求,允许对存储器烧写新的固件,为了保证固件不被复制,状态信息从保护状态修改为正常状态时,擦除存储器中固件,才允许存储器烧写新的固件;从而保证允许烧写固件的前提写,也保证之前烧写的固件也不会被复制出去。本发明提供的技术方案中进一步地,还对新烧写的固件也进行保护:新的固件程序烧写之后,将状态信息配置成保护状态,再次禁止存储器烧写固件。并且采用本发明提供的上述技术方案,在保护固件不被复制的情况下,固件无需加密,减少加解密模块以降低成本。
发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书变得显而易见,或者通过实施本发明的技术方案而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构和/或流程来实现和获得。
附图说明
图1为本发明实施例一提供一种存储器中固件读写的控制方法的流程图一。
图2为本发明实施例一提供一种存储器中固件读写的控制方法的流程图二。
图3为本发明实施例一提供一种存储器中固件读写的控制方法的流程图三。
图4为本发明实施例一提供一种存储器中固件读写的控制方法的流程图四。
图5为本发明实施例二提供一种存储器中固件读写的控制***的机结构框图一。
图6为本发明实施例二提供一种存储器中固件读写的控制***的结构框图二。
图7为本发明实施例三提供一种电子装置的结构框图。
图8为本发明实施例四提供一种芯片的结构框图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,这些具体的说明只是让本领域普通技术人员更加容易、清晰理解本发明,而非对本发明的限定性解释;并且只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组控制器可执行指令的控制***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
下面通过附图和具体实施例,对本发明的技术方案进行详细描述:
实施例一
如图1所示,本实施例提供一种存储器中固件读写的控制方法,该控制方法包括:
S110、接收与存储器烧写是否被允许对应的状态信息,其中,当存储器中烧写有固件之后,状态信息被配置成保护状态,并且状态信息还可以被修改为正常状态。
本实施例中提及的存储器优选地为非易失性存储器,具体地包括但不限于Flash、ROM、EEPROM等;该固件可以是被基于嵌入式操作***加载运行的固件代码,也可以是被其他操作***(例如,Android)加载并运行的固件代码;还可以是对操作***进行优化改进的固件代码等。存储器烧写是否被允许通过与该存储器耦合的控制器(或处理器)来控制,状态信息的具体体现形式可以是具体的代码,或者具体的命令,例如下文提及的“Protect/Normal”,还可以是用具体的参数来体现,例如:0-表示正常状态,1-表示保护状态;只要能够被识别出来并对应上存储器烧写是否被允许,都属于本实施例技术方案记载的范围,本实施例部对其具体形式进行限制。
S120、判断状态信息为保护状态还是正常状态,基于上述提及多种不同状态信息体现形式,分别使用对应的形式进行识别;需要说明的是,如下文优选的实施方式中,状态信息在状态信息配置寄存器中、在状态信息存储器中分别有提及,本实施例暂不对其进行具体的显示,下文中可以结合具体的实施过程,选择不同的状态信息来源;本实施例选择与存储器烧写是否被允许对应的最新的状态信息,例如,如果状态信息配置寄存器是最新结合需求进行修改后的状态信息,就从状态信息配置寄存器中获取状态信息,如果状态信息配置寄存器会同时先更新至状态信息存储器中,则就可以直接从状态信息存储器中获取状态信息,当然本实施例不限于此。
如果判断状态信息为保护状态,则执行S130,如果状态信息为正常状态,则执行S140。
S130、当状态信息为保护状态时,禁止存储器烧写新的固件;这样禁止存储器与外部通信接***换信息。优选地,对于内部控制器(或处理器)需要记载存储器中的固件代码,可以不影响其正常运行。
S140、当状态信息为正常状态时,擦除存储器中固件,再允许存储器烧写新的固件。
其中,允许存储器烧写新的固件可以在存储器中固件完全擦除完成之后,再开始,还可以是擦除一部分,再开始;可以按照不同安全等级需求和固件烧写时间要求,结合实际要求来确定。
采用本实施例提供的上述技术方案,通过增加与存储器烧写是否被允许对应的状态信息,当状态信息为保护状态时,禁止存储器烧写新的固件;这样避免烧写过程中,防止第三方可读取固件程序二进制文件,反汇编程序,对固件进行分析和修改,得到存储器中的固件;而且为了更好适应实际应用过程中需要对固件进行升级的需求,允许对存储器烧写新的固件,为了保证固件不被复制,状态信息从保护状态修改为正常状态时,擦除存储器中固件,才允许存储器烧写新的固件;从而保证允许烧写固件的前提写,也保证之前烧写的固件也不会被复制出去。而且不需要向现有技术那样增加加密、解密过程,不仅可以降低成本,对于固件运行过程中可能出现错误(Bug)也会降低,所以还能提供整个项目开发的进度。
本发实施例优选的实施方式,上述控制方法中:存储器与控制器耦合,并且控制器控制状态信息的变化,存储器中固件的擦除,以及是否允许存储器烧写新的固件;并且控制器集成在SoC(System on Chip,指的是片上***)内部,存储器设置在SoC内部或者与控制器耦合的SoC外部。
实施例二
本实施例在实施例一的基础上,对状态信息的修改进一步进行优化,本实施例优选的实施方式中,存储器中固件读写的控制方法还包括:接收更新后状态信息是否被修改的状态信息,并存储更新后是否允许烧写存储器中固件的状态信息。并且本实施例进一步优选的实施方式中,通过状态信息存储器对应的状态地址来存储状态信息。
具体地,如图2所示,本实施例提供的存储器中固件读写的控制方法包括:
S110、接收与存储器烧写是否被允许对应的状态信息(例如,读取状态信息存储器中的状态信息,可以获取上次操作之后对应的状态信息,如果是保护状态则执行步骤S130),其中,当存储器中烧写有固件之后,状态信息被配置成保护状态,并且状态信息还可以被修改为正常状态。
S210、接收更新后状态信息是否被修改的状态信息,例如,读取外部通信接口传输的指令,是否要求将状态信息配置为保护状态,如果是,并且之前的状态信息已经是保护状态,则直接保持原来的状态,如果之前的状态信息是正常状态,则更新配置信息,状态信息配置寄存器被配置为保护状态。如果要求将状态信息配置为正常状态,并且之前的状态信息已经是正常状态,则直接保持原来的状态,如果之前的状态信息是保护状态,则更新配置信息,状态信息配置寄存器被配置为正常状态。
S220、判断更新后状态信息为保护状态还是正常状态,如果判断更新后的状态信息为保护状态,则执行S130,如果更新后的状态信息为正常状态,则执行S140。
S230、存储更新后的状态信息,将更新后的状态信息保存至状态信息存储器中。(需要说明的是,本实施例中S220和S230不限定其先后顺序)
S130、当状态信息为保护状态时,禁止存储器烧写新的固件。
S140、当状态信息从保护状态修改为正常状态时,擦除存储器中固件,允许存储器烧写新的固件。
实施例三
本实施例在实施例二的基础上,对烧写新固件后存储器的控制进一步进行优化,如图3所示,本实施例优选的实施方式中,存储器中固件读写的控制方法还包括:S310、当状态信息从保护状态修改为正常状态时,擦除存储器中固件,允许存储器烧写新的固件之后,还包括:接收新的固件程序,并且新的固件程序烧写之后,将状态信息配置成保护状态,再次禁止存储器烧写固件。
本实施例提供的技术方案中进一步地,还对新烧写的固件也进行保护:新的固件程序烧写之后,将状态信息配置成保护状态,再次禁止存储器烧写固件。
本实施例提供的固件读写控制方法还包括:需要对存储器进行烧写操作时,判断存储状态信息用状态信息存储器中的状态信息;当状态信息为保护状态时,通过状态信息配置寄存器将状态信息配置为正常状态,并且擦除存储器中固件,从而允许存储器烧写新的固件;当状态信息为正常状态时,通过状态信息配置寄存器将状态信息配置为保护状态,从而禁止存储器烧写新的固件。
下面以带有各类处理器的专用集成电路(ASIC)片上***(SoC)芯片(下文简称芯片)为例,这类芯片需要提前写入固件,处理器才能执行固件程序,驱动芯片正常运转。
下文中Normal表示正常,Protect表示保护,对该芯片的控制方法具体包括:
芯片在Normal状态下启动,并打开保护功能如步骤1.1~1.6所述:
步骤1.1.读取芯片的片内flash中状态地址存储的保护状态为Normal状态;
步骤1.2.配置状态配置寄存器为Normal状态,硬件会根据此配置,使能芯片的SW-DP(串行线调试)接口;
步骤1.3.PC通过UART接口向芯片发送Protect命令。
步骤1.4.芯片收到命令后,配置状态配置寄存器为Protect状态,硬件会根据此配置关断芯片SW-DP接口;
步骤1.5.向片内flash中状态地址写入Protect状态;
步骤1.6.禁用Bootloader烧写固件功能。其中,在嵌入式操作***中,BootLoader是在操作***内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将***的软硬件环境带到一个合适状态,以便为最终调用操作***内核准备好正确的环境。
芯片在Protect状态下启动,并取消Protect功能回到Normal状态如步骤2.1~2.7所述。
步骤2.1.读取片内flash中状态地址存储的保护状态为Protect状态;
步骤2.2.配置状态配置寄存器为Protect状态,硬件会根据此配置,关断芯片SW-DP接口;
步骤2.3.PC通过UART接口向芯片发送Normal命令。
步骤2.4.芯片收到命令后,配置状态配置寄存器为Normal状态,硬件会根据此配置使能芯片SW-DP接口;
步骤2.5.擦除片内flash的所有内容;
步骤2.6.向片内flash中状态地址写入Normal状态;
步骤2.7.允许Bootloader烧写固件功能。
实施例四
本实施例提供一种存储器中固件读写的控制***,该控制***优选的实施方式是用SoC这类控制***,但是不限于此,例如,对于FPGA这类控制***,同样可以使用本实施例提供的技术方案。
如图5所示,本实施例提供一种存储器中固件读写的控制***100包括:
控制器110、通信接口140和状态信息配置寄存器120;
通信接口140用于与外部终端通信,并且控制器110确认是否允许从通信接口接收的配置信息烧写至存储器;通信接口140的具体体现形式可以是USB,UART、Wi-Fi、蓝牙、NFC等类型的通信接口,本实施例不对其进行具体的限制。
状态信息配置寄存器120,用于配置是否允许烧写存储器中固件的状态信息,状态信息为保护状态还是正常状态;
其中,存储器130中烧写有固件之后,状态信息配置寄存器120被配置为保护状态;并且当状态信息配置寄存器120配置成保护状态时,控制器110禁止外部终端通过通信接口向存储器中烧写固件;当状态信息配置寄存器120被配置成由保护状态修改为正常状态时,控制器110控制存储器130中的固件被擦除,再允许外部终端通过通信接口140向存储器120中烧写固件。
其中,允许存储器烧写新的固件可以在存储器中固件完全擦除完成之后,再开始,还可以是擦除一部分,再开始;可以按照不同安全等级需求和固件烧写时间要求,结合实际要求来确定。
如图5所示,本实施例优选的实施方式中,控制***为SoC,存储器130设置在SoC内部,当然本实施例不限于此,例如还可以将存储器设置在与控制器耦合的SoC外部。
本实施例优选的实施方式中,控制器110还被设置成:控制存储器130中的固件被擦除,以及打开通信接口与存储器之间的通信之后,控制存储器通过通信接口接收新的固件程序,并且新的固件程序烧写之后,将状态信息配置寄存器的状态配置成保护状态,再次禁止存储器烧写固件。
采用本实施例提供的控制***可以完成如上述实施例一提及的控制方法,具体的控制过程参照上述描述,相应地,可以实现相同的技术效果。
实施例五
如图6所示,本实施例优选的实施方式中,控制***100还包括:状态信息存储器150,用于接收状态信息配置寄存器更新的状态信息,并存储是否允许烧写存储器中固件的状态信息。进一步优选的实施方式中,状态信息存储器150位于控制***内部,状态信息存储器对应的状态地址用于存储状态信息。
并且进一步优选的实施方式,可以设置成,将存储固件的存储器130划分成多个区域,或者使用多个不同硬件模块(统称为子存储器),并且每个区域或硬件模块使用存储不同的固件,例如按照功能、或者大小来划分;每个不同子存储器分别对应不同的状态信息配置,这样可以根据实际需要,在每个不同版本固件需要更新的时候,仅对部分的子存储器内的固件进行更新;从而可以缩短固件更新时间,而且进一步降低固件存储器中全部固件被复制的风险。在此基础上,将固件被分段保存,这样即使部分内容被恶意复制,这部分的固件并不能直接运行,所以还可以降低整个固件被复制之后可能导致的风险。
实施例六
如图7所示,本实施例提供一种电子设备,该电子设备包括但不限于:小型机、路由器、交换机、PC机(个人计算机)、智能手机、数码相机、光驱、显卡或者遥控器等电子设备。如图7所示,本实施例提供的电子设备200包括:
一个或多个处理器210和存储器220;
多个应用程序;
以及***电路230和电源240,***电路可以结合电子设备的具体用途进行选配;
以及一个或多个计算机程序,其中一个或多个计算机程序被存储在存储器中,当计算机程序被电子设备执行时,使得电子设备实现如前述实施例提供的存储器中固件读写的控制方法。
另外,本实施例还提供一种计算机存储介质,该计算机可读存储介质包括计算机程序,当计算机程序在电子设备上运行时,使得电子设备执行如第一方面提供的任意一种存储器中固件读写的控制方法。
实施例七
如图8所示,本实施例提供一种芯片300,该芯片300与电子设备中的存储器耦合,使得芯片在运行时调用存储器中存储的计算机程序,或者芯片运行时调用芯片自身的存储器中存储的计算机程序,实现如第一方面提供的任意一种存储器中固件读写的控制方法。
以SoC为例,该芯片300内包括存储器310,与处理器耦合的处理器包括非易失性存储器320和易失性存储器330;非易失性存储器320可以存储必要的运行程序,例如上文提及的固件,易失性存储器330可以保存应用程序运行过程中不需要保护的作业数据。
具体地,在芯片片内flash准备好指定的状态地址(State Address)用于存储保护状态(State:Protect/Normal),默认为Normal状态;并且在芯片内准备好指定的状态配置寄存器(State Configure Register)用于配置保护状态(Configure State:Protect/Normal),默认为Protect命令;而且在芯片内由硬件支持,根据状态配置寄存器的值来使能或者关断芯片SW-DP(Serial Wire Debug Port)接口;其中,芯片与PC由UART(UniversalAsynchronous Receiver/Transmitter)接口通信,由PC向芯片发送Protect命令或Normal命令,由芯片向PC回复Protect状态或Normal状态。
采用默认配置的芯片,烧写固件后使能protect功能,对应控制方法如步骤3.1~3.4所述:
步骤3.1.将芯片上电启动,片内flash中状态地址存储的保护状态为Normal状态,bootloader将配置状态寄存器为Normal状态,硬件根据该配置使能SW-DP接口;
步骤3.2.向芯片中烧写固件。
步骤3.3.使用PC通过UART接口向芯片发送Protect命令;芯片接收到命令后,配置状态寄存器为Protect状态,硬件根据该配置关断SW-DP接口;向片内flash中状态地址写入Protect状态;禁用Bootloader烧写固件功能。
步骤3.4.退出Bootloader,程序指针跳转到固件程序入口。
已使能protect功能的芯片,取消Protect功能,对应控制方法如步骤4.1~4.3所述:
步骤4.1.将芯片上电启动,片内flash中状态地址存储的保护状态为Protect状态,bootloader将配置状态寄存器为Protect状态,硬件根据该配置关断SW-DP接口;
步骤4.2.使用PC通过UART接口向芯片发送Normal命令;芯片接收到命令后,配置状态寄存器为Normal状态,硬件根据该配置使能SW-DP接口;向片内flash中状态地址写入Normal状态;打开Bootloader烧写固件功能;擦除片内flash的所有内容。
步骤4.3.向芯片中烧写固件。
步骤4.4.退出Bootloader,程序指针跳转到固件程序入口。
综上,采用本实施例提供的上述技术方案,通过增加与存储器烧写是否被允许对应的状态信息,当状态信息为保护状态时,禁止存储器烧写新的固件;这样避免烧写过程中,防止第三方可读取固件程序二进制文件,反汇编程序,对固件进行分析和修改,得到存储器中的固件;而且为了更好适应实际应用过程中需要对固件进行升级的需求,允许对存储器烧写新的固件,为了保证固件不被复制,状态信息从保护状态修改为正常状态时,擦除存储器中固件,才允许存储器烧写新的固件;从而保证允许烧写固件的前提写,也保证之前烧写的固件也不会被复制出去。本实施例提供的技术方案中进一步地,还对新烧写的固件也进行保护:新的固件程序烧写之后,将状态信息配置成保护状态,再次禁止存储器烧写固件。并且采用本实施例提供的上述技术方案,在保护固件不被复制的情况下,固件无需加密,减少加解密模块以降低成本。
本领域普通技术人员可以理解:上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC、FPGA或SoC)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的处理方法。此外,当通用计算机访问用于实现在此示出的处理的代码时,代码的执行将通用计算机转换为用于执行在此示出的处理的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
最后需要说明的是,上述说明仅是本发明的最佳实施例而已,并非对本发明做任何形式上的限制。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围内,都可利用上述揭示的做法和技术内容对本发明技术方案做出许多可能的变动和简单的替换等,这些都属于本发明技术方案保护的范围。
Claims (13)
1.一种存储器中固件读写的控制方法,其特征在于,包括:
接收与存储器烧写是否被允许对应的状态信息,并判断所述状态信息为保护状态还是正常状态;其中,当所述存储器中烧写有固件之后,所述状态信息被配置成保护状态,并且所述状态信息还可以被修改为正常状态;
当所述状态信息为保护状态时,禁止所述存储器烧写新的固件;
当所述状态信息为正常状态时,擦除所述存储器中固件,再允许所述存储器烧写新的固件。
2.根据权利要求1所述的方法,其特征在于,还包括:需要对所述存储器进行烧写操作时,判断存储所述状态信息用状态信息存储器中的状态信息;当所述状态信息为保护状态时,通过状态信息配置寄存器将所述状态信息配置为正常状态,并且擦除所述存储器中固件,从而允许所述存储器烧写新的固件;当所述状态信息为正常状态时,通过所述状态信息配置寄存器将所述状态信息配置为保护状态,从而禁止所述存储器烧写新的固件。
3.根据权利要求1所述的方法,其特征在于,还包括:接收更新后所述状态信息是否被修改的状态信息,并存储更新后所述是否允许烧写所述存储器中固件的状态信息。
4.根据权利要求3所述的方法,其特征在于,通过状态信息存储器对应的状态地址来存储所述状态信息。
5.根据权利要求1-4中任意一种所述的方法,其特征在于,当所述状态信息从保护状态修改为正常状态时,擦除所述存储器中固件,允许所述存储器烧写新的固件之后,还包括:接收新的固件程序,并且新的固件程序烧写之后,将所述状态信息配置成保护状态,再次禁止所述存储器烧写固件。
6.一种存储器中固件读写的控制***,其特征在于,包括:
控制器、通信接口和状态信息配置寄存器;
所述通信接口用于与外部终端通信,并且控制器确认允许从所述通信接口接收的固件烧写至所述存储器;
状态信息配置寄存器,用于配置所述是否允许烧写所述存储器中固件的状态信息,所述状态信息为保护状态或正常状态;
其中,所述存储器中烧写有固件之后,所述状态信息配置寄存器被配置为保护状态;并且当所述状态信息配置寄存器配置成保护状态时,所述控制器禁止外部终端通过所述通信接口向所述存储器中烧写固件;当所述状态信息配置寄存器被配置成由保护状态修改为正常状态时,所述控制器控制所述存储器中的固件被擦除,再允许所述外部终端通过所述通信接口向所述存储器中烧写固件。
7.根据权利要求6所述的***,其特征在于,还包括:状态信息存储器,用于接收所述状态信息配置寄存器更新的状态信息,并存储所述是否允许烧写所述存储器中固件的状态信息。
8.根据权利要求7所述的***,其特征在于,所述通信端口接收到烧写命令时,所述控制器判断存储所述状态信息用状态信息存储器中的状态信息;当所述状态信息为保护状态时,通过所述状态信息配置寄存器将所述状态信息配置为正常状态,并且擦除所述存储器中固件,从而允许所述存储器烧写新的固件;当所述状态信息为正常状态时,通过所述状态信息配置寄存器将所述状态信息配置为保护状态,从而禁止所述存储器烧写新的固件。
9.根据权利要求7所述的***,其特征在于,所述状态信息存储器位于所述控制***内部,所述状态信息存储器对应的状态地址用于存储所述状态信息。
10.根据权利要求6-9中任意一种所述的***,其特征在于,所述控制器还被设置成:控制所述存储器中的固件被擦除,以及打开所述通信接口与存储器之间的通信之后,控制所述存储器通过所述通信接口接收新的固件程序,并且新的固件程序烧写之后,将所述状态信息配置寄存器的状态配置成保护状态,再次禁止所述存储器烧写固件。
11.一种电子设备,其特征在于,包括:
一个或多个处理器和存储器;
多个应用程序;
以及一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述存储器中,当所述计算机程序被所述电子设备执行时,使得所述电子设备实现如权利要求1至5任意一种所述的方法。
12.一种芯片,其特征在于,所述芯片与电子设备中的存储器耦合,使得所述芯片在运行时调用所述存储器中存储的计算机程序,或者所述芯片运行时调用所述芯片自身的存储器中存储的计算机程序,实现如权利要求1至5任意一种所述的方法。
13.一种计算机存储介质,其特征在于,所述计算机可读存储介质包括计算机程序,当计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1至5任意一种所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911059949.8A CN110888653A (zh) | 2019-11-01 | 2019-11-01 | 存储器中固件读写的控制方法、***、电子设备、芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911059949.8A CN110888653A (zh) | 2019-11-01 | 2019-11-01 | 存储器中固件读写的控制方法、***、电子设备、芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110888653A true CN110888653A (zh) | 2020-03-17 |
Family
ID=69746753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911059949.8A Pending CN110888653A (zh) | 2019-11-01 | 2019-11-01 | 存储器中固件读写的控制方法、***、电子设备、芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110888653A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827032A (zh) * | 2022-12-12 | 2023-03-21 | 深微光电科技(深圳)有限公司 | 存储器的烧录方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060117156A1 (en) * | 2004-12-01 | 2006-06-01 | Chai Jesse C | Method and apparatus for dual protection of a protected memory block |
CN102289418A (zh) * | 2011-09-05 | 2011-12-21 | 深圳芯智汇科技有限公司 | 嵌入式设备烧写***及方法 |
CN106293531A (zh) * | 2016-08-10 | 2017-01-04 | 深圳市蜂联科技有限公司 | 一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法 |
-
2019
- 2019-11-01 CN CN201911059949.8A patent/CN110888653A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060117156A1 (en) * | 2004-12-01 | 2006-06-01 | Chai Jesse C | Method and apparatus for dual protection of a protected memory block |
CN102289418A (zh) * | 2011-09-05 | 2011-12-21 | 深圳芯智汇科技有限公司 | 嵌入式设备烧写***及方法 |
CN106293531A (zh) * | 2016-08-10 | 2017-01-04 | 深圳市蜂联科技有限公司 | 一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827032A (zh) * | 2022-12-12 | 2023-03-21 | 深微光电科技(深圳)有限公司 | 存储器的烧录方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI581099B (zh) | 積體電路裝置及控制積體電路裝置上記憶體存取的方法 | |
US10509568B2 (en) | Efficient secure boot carried out in information processing apparatus | |
US6976136B2 (en) | Flash memory protection scheme for secured shared BIOS implementation in personal computers with an embedded controller | |
JP3710671B2 (ja) | 1チップマイクロコンピュータ及びそれを用いたicカード、並びに1チップマイクロコンピュータのアクセス制御方法 | |
US7664923B2 (en) | Method and system for updating software | |
US7711944B2 (en) | Method and apparatus for securely updating and booting code image | |
US20140250290A1 (en) | Method for Software Anti-Rollback Recovery | |
US20020129195A1 (en) | Microcomputer with built-in programmable nonvolatile memory | |
CN107678762B (zh) | 一种***版本升级方法及装置 | |
CN112100624B (zh) | 一种固件保护方法、装置及终端设备 | |
CN107451494B (zh) | 一种芯片改写设备的数据保护方法、电子设备及存储介质 | |
CN108319520A (zh) | 基于安全存储的移动设备备用操作*** | |
US6832285B2 (en) | Microcomputer with mode-controlled memory | |
CN110020561B (zh) | 半导体装置和操作半导体装置的方法 | |
US9542113B2 (en) | Apparatuses for securing program code stored in a non-volatile memory | |
CN106919865B (zh) | 非易失性存储器数据加密*** | |
CN110888653A (zh) | 存储器中固件读写的控制方法、***、电子设备、芯片 | |
US20080162837A1 (en) | Nonvolatile Memory System | |
CN111026683A (zh) | 访问存储器的方法 | |
CN114817935A (zh) | 一种芯片安全启动方法 | |
US11893113B2 (en) | Return-oriented programming protection | |
KR101572854B1 (ko) | 사이버 보안 기능이 강화된 피엘씨 장치 | |
CN111968693B (zh) | 一种mcu及mcu调试接口控制方法 | |
JP2008203988A (ja) | セキュリティ保護機能付きマイクロコンピュータ | |
CN118426820A (zh) | 控制装置及其操作方法 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200317 |