Mcu的闪存的访问权限控制方法和装置的制造方法

文档序号:9910953阅读:450来源:国知局
Mcu的闪存的访问权限控制方法和装置的制造方法
【技术领域】
[0001 ]本发明涉及计算机技术领域,具体而言,涉及一种MCU的闪存的访问权限控制方法和装置。
【背景技术】
[0002]微控制单元(MicrocontrolIer Unit,简称为MCU)用户代码是MCU正常运行的核心,用户代码一般在M⑶用户程序量产阶段被烧录器烧写在M⑶的Flash(闪存)上。防止M⑶Flash上的用户代码不被破解是MCU安全保护的一个重要方面。
[0003]目前,主流M⑶厂商对M⑶Flash上的内容进行保护的做法一般是:为M⑶设计安全模式,其中,安全模式的设定由Flash某个地址单元的内容决定。在安全模式下,调试接口(例如,SWD接口)能够访问Flash之前,必须先要通过M⑶的通信接口(例如,UART)向用户程序发送存入在Flash中的解锁密钥,这就要求用户程序必须支持Flash解锁功能。
[0004]然而,由于解锁密钥是以明码的方式存储在MCU的Flash中的,那么解锁密钥在MCU用户程序量产阶段很容易被破解。
[0005]进一步的,当MCU工作在安全模式时,如果出现故障导致MCU无法正常工作,那么用户程序的解锁功能也必将受到限制。如果Flash解锁失败,那么外部调试接口无法观察到MCU的运行现场,这将加大问题定位的难度。同时,这种保护方法要求用户程序必须支持解锁功能,这势必会导致用户程序占用更多的Flash空间。
[0006]针对上述问题,目前尚未提出有效的解决方式。

【发明内容】

[0007]本发明实施例提供了一种MCU的闪存的访问权限控制方法,以解决现有技术中因为需要在用户程序中增加解锁功能以实现闪存的解锁而导致的在用户程序量产阶段解锁密钥容易被盗取导致数据不安全的技术问题,该控制方法包括:
[0008]确定所述MCU所处的阶段;当所述MCU处于用户程序开发阶段时,通过调试接口设置所述安全寄存器将所述MCU设置成非安全模式;当所述MCU处于用户程序量产阶段时,通过所述调试接口设置所述安全寄存器将所述MCU设置成安全模式;其中,当所述MCU处于非安全模式的情况下,所述调试接口被允许访问所述MCU的闪存中的内容,当所述MCU处于安全模式的情况下,所述调试接口不被允许访问所述MCU的闪存中的内容。
[0009]在一个实施方式中,在当所述MCU处于用户程序量产阶段时,通过所述调试接口设置所述安全寄存器将所述MCU设置成安全模式之后,所述方法还包括:检测所述调试接口是否向所述安全寄存器中写入闪存解锁密钥;如果是,则获取预设的闪存解锁密钥,并将所述调试接口写入的闪存解锁密钥与所述预设的闪存解锁密钥进行匹配;如果匹配通过,则将所述MCU由安全模式切换至非安全模式。
[0010]在一个实施方式中,获取预设的闪存解锁密钥,包括:读取唯一标识该MCU的设备ID;根据所述设备ID,按照预定算法计算得到所述预设的闪存解锁密钥。
[0011]在一个实施方式中,读取唯一标识该MCU的设备ID,包括:从该MCU专用的设备ID寄存器中读取所述设备ID。
[0012]在一个实施方式中,所述设备ID为32bit的数据,所述预设的闪存解锁密钥为32bit的数据。
[0013]在一个实施方式中,将所述调试接口写入的闪存解锁密钥与预设的闪存解锁密钥进行匹配,包括:确定写入的闪存解锁密钥与所述预设的闪存解锁密钥是否相等;如果相等,则表示匹配通过,如果不相等,则表示匹配未通过。
[0014]在一个实施方式中,在将所述调试接口写入的闪存解锁密钥与预设的闪存解锁密钥进行匹配之后,所述方法还包括:如果匹配不通过,则保持所述M⑶处于安全模式;如果再次接收到所述调试接口向所述安全寄存器中写入的闪存解锁密钥,继续保持所述MCU处于安全模式,直至所述MCU重新上电。
[0015]本发明实施例还提供了一种MCU的闪存的访问权限控制装置,以解决现有技术中因为需要在用户程序中增加解锁功能以实现闪存的解锁而导致的在用户程序量产阶段解锁密钥容易被盗取导致数据不安全的技术问题,所述MCU中设置有用于对MCU是否处于安全模式进行设定的安全寄存器,该控制装置包括:
[0016]确定模块,用于确定所述MCU所处的阶段;第一设置模块,用于在所述MCU处于用户程序开发阶段的情况下,通过调试接口设置所述安全寄存器将所述MCU设置成非安全模式;第二设置模块,用于在所述MCU处于用户程序量产阶段的情况下,通过所述调试接口设置所述安全寄存器将所述MCU设置成安全模式;其中,当所述MCU处于非安全模式的情况下,所述调试接口被允许访问所述MCU的闪存中的内容,当所述MCU处于安全模式的情况下,所述调试接口不被允许访问所述MCU的闪存中的内容。
[0017]在一个实施方式中,上述控制装置还包括:检测模块,用于在通过所述调试接口设置所述安全寄存器将所述MCU设置成安全模式之后,检测所述调试接口是否向所述安全寄存器中写入闪存解锁密钥;匹配模块,用于在检测到所述调试接口向所述安全寄存器中写入闪存解锁密钥的情况下,获取预设的闪存解锁密钥,并将所述调试接口写入的闪存解锁密钥与所述预设的闪存解锁密钥进行匹配;切换模块,用于在匹配通过的情况下,将所述MCU由安全模式切换至非安全模式。
[0018]在一个实施方式中,所述匹配模块包括:读取单元,用于读取唯一标识该MCU的设备ID;计算单元,用于根据所述设备ID,按照预定算法计算得到所述预设的闪存解锁密钥。
[0019]在上述实施例中,通过在M⑶中设置了用于对M⑶是否处于安全模式进行设定的安全寄存器,调试接口通过对该安全寄存器进行控制便可以实现对MCU的闪存的访问权限的控制,从而解决了现有技术中因为需要在用户程序中增加解锁功能以实现闪存的解锁而导致的在用户程序量产阶段解锁密钥容易被盗取导致数据不安全的技术问题,达到了不需要在用户程序中增加解锁功能就可以实现闪存解锁的技术效果,因解密的密钥不需要存放在Flash中,从而减少了用户代码占用M⑶Flash的空间,提高了数据的安全性,因为调试接口的设置,即使MCU处于死机状态,通过调试接口就可以向FLASHKEY写入正确密钥来解锁Flash,从而定位MCU出现问题的原因,降低了定位MCU运行故障的难度。
【附图说明】
[0020]构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0021 ]图1是根据本发明实施例的MCU的闪存的访问权限控制方法流程图;
[0022]图2是根据本发明实施例的SDA-AP结构图;
[0023]图3是根据本发明实施例的Flash解锁密钥的生产原理图;
[0024]图4是根据本发明实施例的MCU的闪存的访问权限控制装置的结构框图。
【具体实施方式】
[0025]为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
[0026]发明人考虑到现有的MCU的闪存的访问权限控制方法主要问题就在于需要在用户程序中增加解锁功能以实现闪存的解锁,为此,发明人考虑到可以单独设置一个模块存储模块用于对闪存的访问权限进行控制,以保证不用在用户程序中增加解锁功能。
[0027]为了实现上述功能,在本发明实施例中提供了一种MCU的闪存的访问权限控制方法,该MCU中设置了用于对MCU是否处于安全模式进行设定的安全寄存器,如图1所示,该MCU的闪存的访问权限控制方法包括:
[0028]步骤101:确定所述MCU所处的阶段;
[0029]步骤102:当所述M⑶处于用户程序开发阶段时,通过调试接口设置所述安全寄存器将所述MCU设置成非安全模式;
[0030]步骤103:当所述M⑶处于用户程序量产阶段时,通过所述调试接口设置所述安全寄存器将所述MCU设置成安全模式;其中,当所述MCU处于非安全模式的情况下,所述调试接口被允许访问所述MCU的闪存中的内容,当所述MCU处于安全模式的情况下,所述调试接口不被允许访问所述MCU的闪存中的内容。
[0
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1