本发明属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的接口)。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1&nbsp2&nbsp3&nbsp

flash写保护原理_一种基于flash写保护的防止flash被意外篡改的方法与流程相关推荐

  1. 属性与意图识别_一种基于多任务学习的意图与槽位联合识别方法与流程

    本发明属于人机交互领域,涉及自然语言处理.垂直对话系统等,特别涉及一种基于多任务学习的意图与槽位联合识别方法. 背景技术: 意图识别和槽位识别可以将垂直对话系统中用户输入文本转化为语义表示,为系统采取 ...

  2. python登录系统账号检测_一种基于python的惠普打印机默认用户名密码检测方法与流程...

    本发明涉及打印机检测技术领域,特别是一种基于python的惠普打印机默认用户名密码检测方法. 背景技术: 网络打印机是当前各大中小型企业正常办公比不可少的办公网络设备,但对于大中型企业而言,不同部门或 ...

  3. 人物关系 人脸识别_一种基于人脸识别系统的人物关系挖掘系统及方法与流程...

    本发明涉及人脸识别技术领域,具体涉及一种基于人脸识别技术进行人物关系挖掘的系统及其方法. 背景技术: 人脸识别作为生物身份识别的典型技术,由于不需要被检测个体的主动配合,近年来在人机交互,安防,身份认 ...

  4. 云计算 码率适配限速_一种基于云计算的应用于用户终端的测速方法

    一种基于云计算的应用于用户终端的测速方法 [专利摘要]本发明提供一种基于云计算的应用于用户终端的测速方法,包括:建立测速机制,定义相关参数,测速方法,输出测速结果:具体包括:建立测速机制,定义相关参数 ...

  5. matlab鬼成像,一种基于光计算的可视化计算鬼成像系统及成像方法与流程

    本发明涉及成像探测领域,具体为一种基于光计算的可视化计算鬼成像系统及成像方法. 背景技术: 光学鬼成像技术是通过双路光信号符合探测恢复待测物体空间信息实现的.其特点是包含物体信息的信号光(signal ...

  6. matlab8邻域搜索算法,一种基于可搜索连续邻域A*算法的路径规划方法与流程

    本发明涉及的是一种UUV全局路径规划方法. 背景技术: 无人水下航行器(Unmanned underwater vehicle,UUV)作为一种高技术手段,在海洋这块未来极具价值的发展空间中起着至关重 ...

  7. matlab换挡程序,一种基于MATLAB换挡过程中快速锁定分析数据的方法与流程

    本发明涉及汽车变速器数据分析,特别的,涉及一种基于matlab换挡过程中快速锁定分析数据的方法. 背景技术: 自动变速器的核心功能是能根据驾驶员意图进行自动换挡,解放驾驶员的左脚:在自动变速器的使用过 ...

  8. 时间窗口算法用matlab,一种基于动态规划算法的时间窗口相关的参与者选择方法与流程...

    本发明涉及一种移动群智感知中时间窗口相关的参与者选择方法,特别地,涉及一种基于动态规划算法的时间窗口相关的参与者选择方法. 背景技术: 在移动群智感知网络中,智能设备中嵌入了麦克风.相机.温度传感器. ...

  9. matlab悬置非线性位移计算公式,一种基于Excel的电动车动力总成悬置工况力数据处理方法与流程...

    本发明涉及计算机辅助工程(CAE)技术领域,具体涉及一种基于Excel的电动车动力总成悬置工况力数据处理方法. 背景技术: 动力总成的28工况力与位移分析是基于GM提出的传统车28工况修改而来,其分解 ...

最新文章

  1. 据廖雪峰python3教程----python学习第二天
  2. android jni研究
  3. mysql备份脚本+关_mysql数据库自动定期备份的脚本
  4. OpenCV 图像的混合
  5. Fedora20下安装编译环境
  6. C++类里面的哪些成员函数是内联函数?
  7. 编译Qt“NMAKE:fatal error U1077”错误的解决方法
  8. php 模数 指数 公钥生成_php实现JWT认证
  9. Magento: 添加first name 和 last name到newsletter Add additional fields to your newsl
  10. Standard C++ Episode 10
  11. c combobox绑定mysql数据库_C# ComboBox:组合框控件数据绑定
  12. conda 环境迁移
  13. 1. SVN (1)
  14. 使用create-react-app添加css modules、sasss和antd
  15. 【随机数】深入理解random和srandom
  16. servlet后端连接 微信小程序与_微信小程序授权登录
  17. 大一新生如何h看待大学生活?
  18. 条码打印二 - 1.ZebraDesigner软件生成ZPL指令
  19. 机器学习笔记 - 什么是支持向量回归(SVR)?
  20. 嵌入式课程 之 超声波传感器实验

热门文章

  1. 以太经典合作社(ECC)获得Digital Finance Group捐赠
  2. 比特币现金正走在被广泛应用的路上
  3. 宜信开源|数据库审核软件Themis的规则解析与部署攻略
  4. 24. Swap Nodes in Pairs
  5. SpringBoot入门(二)——起步依赖
  6. 区块链开发:为什么你应该学习?
  7. kubernetes 配置kubedns
  8. 对Linux Kernel 4.15的支持的VirtualBox 5.2.8发布
  9. 【javascript系列】字符串:字符串单个字符访问
  10. ReentrantLock和synchronized两种锁定机制