本发明属linux嵌入式芯片安全技术领域于领域,尤其是涉及一种nandflash写保护应用方法。
背景技术:
目前很多公司都纷纷尝试智能设备(sd,smartdevice)领域,sd设备功能越来越多,使用的flash(闪存)大多为spinor、spinand、emmc等等。sd在使用过程中,由于硬件设备老化、某些特殊原因(如突然断电、软件bug等),导致了flash中存放的数据被篡改,可能导致sd设备某些功能无法正常使用,最严重的的是直接导致系统瘫痪,无法启动。
现有技术只在uboot实现了写保护解保护,智能设备的升级业务,大多数升级业务需要系统启动后才能运行,现有方案无法满足。
技术实现要素:
有鉴于此,本发明旨在克服上述现有技术中存在的缺陷,提出一种基于flash写保护的防止flash被意外篡改的方法。
为达到上述目的,本发明的技术方案是这样实现的:
一种基于flash写保护的防止flash被意外篡改的方法,所述方法包括以下步骤:
s1.启动bootloader并对需要保护的分区设置写保护;
s2.判断智能设备是否需要升级;
a1.需要升级进入步骤s3;
a2.不需要升级进入步骤s4;
s3.执行步骤s1中设置的解保护方法解保护并在写入flash后重启设备;
s4.启动内核与核心业务程序;
s5.判断智能设备是否需要升级;
b1.需要升级,执行下面步骤;
b2.不需要升级,则轮询检测;
s6.调用内核驱动添加的解保护方法进行解保护;
s7.写入flash后重启设备。
进一步的,所述步骤s1具体方法包括:
c1.将只读与可读文件划分不同分区;
c2.设置对应分区为不同保护状态。
进一步的,步骤s1所述的写保护方法具体包括:
d1.spinornandflash配置状态寄存器的bp位;
d2.emmc需要发送写保护相关命令。
相对于现有技术,本发明具有以下优势:
现有技术只在uboot实现了写保护解保护,智能设备的升级业务,大多数升级业务需要系统启动后才能运行,现有方案无法满足,在kernel实现写保护解保护后,可以满足升级逻辑在系统起来运行的设备。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例所述的整体流程示意图;
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。
下面将参考附图并结合实施例来详细说明本发明。
一种基于flash写保护的防止flash被意外篡改的方法,所述方法包括以下步骤:
s1.启动bootloader并对需要保护的分区设置写保护;
s2.判断是否需要升级;
a1.需要升级进入步骤s3;
a2.不需要升级进入步骤s4;
s3.执行步骤s1中设置的解保护方法解保护并在写入flash后重启设备;
s4.启动内核与核心业务程序;
s5.判断是否需要升级;
b1.需要升级,执行下面步骤;
b2.不需要升级,则轮询检测;
s6.调用内核驱动添加的解保护方法进行解保护;
s7.写入flash后重启设备。
所述步骤s1具体方法包括:
c1.将只读与可读文件划分不同分区;
c2.设置对应分区为不同保护状态。
步骤s1所述的写保护具体包括:
d1.spinornandflash配置状态寄存器的bp位;
d2.emmc需要发送写保护相关命令。
设备启动阶段分为bootloader与内核两个阶段,bootloader的主要作用是初始化硬件引导内核启动,两个阶段都可实现升级逻辑,各有优缺点,bootloader阶段升级一般都是本地升级,针对某个设备,如u盘烧写,串口烧写。内核启动后,可以通过服务器远程升级,适合大量设备升级。
由于bootloader阶段已设置写保护,当业务程序检测到升级时,也需要先解保护,所以内核驱动也需要实现加保护解保护接口(应用程序无法调用bootloader的接口)。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。