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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486059.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科普长文揭秘生命为何会具有主观能动性

来源:混沌巡洋舰动物的免疫系统依赖于被称为巨噬细胞的白细胞吞噬并吞噬入侵者。这些细胞有着坚定的决心和热情: 在显微镜下,你可以看到一个像球状的巨噬细胞在玻璃片上追逐一个细菌,它的猎物试图通过红细胞的障碍物逃跑时,而在它…

牛客网--19校招--获得最多的奖金

题目描述 小明在越南旅游,参加了当地的娱乐活动。小明运气很好,拿到了大奖, 到了最后的拿奖金环节。小明发现桌子上放着一列红包,每个红包上写着奖金数额。 现在主持人给要求小明在这一列红包之间“切”2刀,将这一列…

Linux——Centos7网络配置1ens33文件

解决的是 Name or service not known 的问题 [rootwww ~]# ping www.baidu.comping: www.baidu.com: Name or service not known [rootwww ~]# 1、网络配置查看 记住NAT设置中的子网IP、子网掩码、网关IP三项,接下来配置文件主要是这三项。网关一般就是.2,ip设置为…

daz模型导入marvelous_传世工坊自制Daz Studio 4.10 系列入门教程

课程目录如何安装如何导入官方素材如何导入第三方素材视图操作快捷键设置如何捏脸如何捏身体如何使角色成长,大人变小孩或者小孩变大人如何使角色变老如何开车(18内容)如何制作头发随风飘动效果如何制作面部表情动画陆续更新,敬请留意。B站在线观看入门教…

科技垄断正在朝着纵向发展

来源:CSDN译者:弯月以下为译文:科技垄断有关的话题,相信大家都不陌生,而纵向垄断指的是通过技术栈深入到硬件的纵向集成。在本文中,我们来讨论一下为什么当下科技垄断开始朝着纵向发展,这种垄断…

android10全局黑暗,传Android 11或加入自动切换全局黑暗模式功能

日前有外媒援引消息人士爆料称,谷歌曾在Android 10系统中带来了全局黑暗模式功能,但自动切换黑暗模式的功能却在Android 10系统的早期测试阶段意外遭砍!而据最新消息显示,Android 11系统有望上线自动切换全局黑暗模式功能。按照An…

ParserError: Error tokenizing data. C error: Expected 1 fields in line 122, saw 2

数据分析和挖掘实战第15章的一段读取.txt文件报错 import pandas as pdinputfile data/meidi_jd.txt outputfile data/meidi_jd_process_1.txt data pd.read_csv(inputfile,encoding utf-8,header None) File "pandas/_libs/parsers.pyx", line 965, in pandas._…

动态规划--牛客网19校招--魔法深渊

题目描述 前几个月放映的头号玩家简直火得不能再火了,作为一个探索终极AI的研究人员,月神自然去看了此神剧。 由于太过兴奋,晚上月神做了一个奇怪的梦,月神梦见自己掉入了一个被施放了魔法的深渊,月神想要爬上此深渊…

python离线安装pip.whl_20180903 - Python Pip 工具下载whl包与离线安装

20180903 - Python Pip 工具下载whl包与离线安装1. 我的Blog2. 简介信息摘要:Linux下,python,pip工具离线安装包Author: andy_yhmyeah.netDate: 20180903关键字:python,python3,pip,pip3,requirements.txt,freeze3. 查…

android 运行jquery,Android端JQueryMobile使用教程(一)

一、 通过Javascript访问Android的Java代码1.其实WebApp这个版块已经放置一段时间了,但是一直没有写文章,那是因为我还在学习中。iscrollview下载地址:https://github.com/watusi/jquery-mobile-iscrollview iscroll 下载地址:http://cubiq.org/iscroll-…

物理学走向尽头了?

制图:James OBrien作者:罗伯特戴克赫拉夫(Robbert Dijkgraaf)文章来源:环球科学物理学是否已经穷尽了人类探索的极限?亦或是才刚刚开始?普林斯顿高等研究所主任戴克赫拉夫给出了他的看法。物理学…

逆向工程-真码保存在系统文件破解QQ游戏对对碰助手

1)注册栏中输入任意值测试 1.2)记录弹出的关键字对话框 2.1)发送至PEID进行查壳 2.2)发现无壳 2.3)将软件载入OllyDBG程序 2.4)在反汇编栏下右键选择中文搜索引擎-》智能搜索 2.5)找到弹窗信息双击进入 3.0…

动态规划--Leetcode746

数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](索引从0开始)。 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。 您需要找到达到楼层顶部的最低花费。在开始时&#xff0c…

yaml parse python_python-yaml

示例相同的数据使用YAML与json表示,对比如下:listYAML- Mark McGwire- Sammy Sosa- Ken GriffeyJSON["Mark McGwire","Sammy Sosa","Ken Griffey"]list typeYAML[Mark McGwire, Tom Curry, Steve Thompson]JSON["Mar…

欢迎参加《城市大脑全球标准研究报告》发布会

《2020城市大脑全球标准研究报告》将与2020年12月23日在北京正式发布。这份报告是科学院研究团队基于城市大脑基础理论研究并与产业实践结合,形成的世界第一份城市大脑全球标准研究报告。欢迎新闻媒体、科研机构、科技企业、政府部门的记者,专家和领导参…

动态规划--Leetcode62--不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 例如&…

async await 同步方法调用异步方法死锁

同步方法调用异步方法.GetAwaiter().GetResult()计算函数超时,异步方法所有的回调操作都会期望返回到主线程。 所以会导致各种线程死锁。异步方法中使用ConfigureAwait(false)解决 1 public void Check(){           //todo2 //验证user…

7 php 内存泄漏_PHP 内存泄漏分析定位

引用前言本文开始撰写时我负责的项目需要用php开发一个通过 Socket 与服务端建立长连接后持续实时上报数据的常驻进程程序,在程序业务功能开发联调完毕后实际运行发送大量数据后发现内存增长非常迅速,在很短的时间内达到了 php 默认可用内存上限 128M &a…

html5+实现图片自动切换,js图片自动切换效果处理代码

var curIndex0;//时间间隔 单位毫秒var timeInterval1000;var arrnew Array();arr[0]"1.jpg";arr[1]"2.jpg";arr[2]"3.jpg";arr[3]"4.jpg";arr[4]"5.jpg";arr[5]"6.jpg";arr[6]"7.jpg";setInterval(cha…

深度学习已经彻底改变了制造业的质量控制,但还不够深入

Photo-illustration: Neurala来源:IEEE电气电子工程师这是一篇客座文章。这里所表达的观点只是作者的观点,并不代表IEEE Spectrum或IEEE的立场。在2020年,我们看到了深度学习的加速利用,这是所谓的工业4.0革命的一部分&#xff0c…