CN106293531B - 一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法 - Google Patents
一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法 Download PDFInfo
- Publication number
- CN106293531B CN106293531B CN201610648520.2A CN201610648520A CN106293531B CN 106293531 B CN106293531 B CN 106293531B CN 201610648520 A CN201610648520 A CN 201610648520A CN 106293531 B CN106293531 B CN 106293531B
- Authority
- CN
- China
- Prior art keywords
- flash
- bootloader
- write
- protect
- subregion
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法,包括(S1)当所述SD设备启动时,将flash写保护指令集和flash去保护指令集全部载入SD设备的内存中保存;(S2)检测bootloader分区是否需要升级,若需要,则(S3)从外部载入待升级的bootloader内容,同时在该过程中当flash与内存之间的串行接口空闲时,从内存中向该bootloader分区一次性写入所述flash去保护指令集,对该bootloader分区进行去保护操作;(S4)升级bootloader内容;(S6)从内存中一次性写入flash写保护指令集,对所述bootloader分区进行flash写保护操作。本发明巧妙利用flash写保护保证了SD设备中bootloader分区不被意外篡改,也不会被破坏,即便其他分区部分出现被篡改的情况,也能够通过应急通道进行升级,恢复SD设备的功能。
Description
技术领域
本发明涉及智能设备技术领域,具体地讲,是涉及一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法。
背景技术
目前很多公司都纷纷尝试智能设备(SD,Smart Device)领域,SD设备功能越来越多,硬件集成度越来越高。但是因为一些成本控制或者设计方案不那么完善,以及一些难以避免的原因(如突然停电)导致了SD使用过程中flash(闪存)上固件被意外篡改,SD设备无法正常工作。
SD在使用过程中,由于硬件设备老化、正常使用突然断电等原因,导致了flash中存放的固件被意外篡改,使SD无法正常使用。图1所示,是常规的flash布局,具体的SD设备制造厂商可能略有不同。第一个分区一定是Bootloader分区,对***进行引导,同时***镜像分区也一定会有,实现设备主要的功能。其他区域按照各设备的需求而定。
由于某些特殊原因(如突然断电),flash中的镜像文件被篡改,导致SD无法正常启动。遇到这种情况用户只能选择退换货或者自认倒霉。Flash被意外篡改的情况导致退换货在SD设备制造公司非常普遍。如果能够有效减少flash被意外篡改的发生,可以有效的减少公司的损失。从源头上来减少flash被意外篡改,各大flash厂商正在努力的去改正,但是却无法避免。
发明内容
针对上述现有技术的不足,本发明提供一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法。
为了实现上述目的,本发明采用的技术方案如下:
一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法,所述flash内包括bootloader分区、参数区和***内核根文件分区,其中,对所述bootloader分区进行flash写保护;
(S1)当所述SD设备启动时,将flash写保护指令集和flash去保护指令集全部载入SD设备的内存中保存;
(S2)检测bootloader分区是否需要升级,若需要,则进行下一步,否则保持所述bootloader分区处于写保护状态;
(S3)从外部载入待升级的bootloader内容,同时在该过程中当flash与内存之间的串行接口空闲时,从内存中向该bootloader分区一次性写入所述flash去保护指令集,对该bootloader分区进行去保护操作;
(S4)对bootloader分区内数据进行擦写操作,升级bootloader内容;
(S5)从flash中读取升级后的bootloader内容进行校验,并与升级前的bootloader的校验值进行对比,判断是否升级成功,若是,则进行下一步,否则跳转至步骤(S4);
(S6)从内存中一次性写入flash写保护指令集,对所述bootloader分区进行flash写保护操作。
进一步地,所述flash中还设有一校验区,用于保存升级前的bootloader内容的校验值。
作为一种优选,所述校验值为ECC校验值。
作为一种优选,所述检验值为MD5码。
与现有技术相比,本发明具有以下有益效果:
(1)本发明巧妙利用flash写保护保证了SD设备中bootloader分区不被意外篡改,也不会被破坏,从而使得SD设备在使用时能够至少启动bootloader,即便其他分区部分出现被篡改的情况,也能够通过应急通道进行升级,恢复SD设备的功能,避免了现有技术中因flash出现意外而导致整个SD设备报废的情况,可有效减少SD设备制造公司的损失,同时本发明中在进行写保护和去保护操作时,均先将相关的指令集载入内存再在SPI空闲时一次性写入flash,实现了纳秒级操作,相比现有技术中多条指令分别下达flash的毫秒级操作有极大的提升,在有效提升操作效率的同时更是避免了毫秒级操作更容易造成flash损害的问题,并且本发明构思巧妙新颖,易于实现,应用性好,成本低廉,具有广泛的应用前景,适合推广应用。
(2)本发明利用校验区单独保存升级前的bootloader校验值,保证了升级成功的准确度,有效避免错误进行flash写保护的情况发生。
附图说明
图1为现有技术中flash内的分区布局示意图。
图2为本发明的流程示意图。
图3为本发明中的flash分区布局示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明,本发明的实施方式包括但不限于下列实施例。
实施例
如图2至图3所示,该基于flash写保护的防止SD使用过程中flash被意外篡改的方法,所述flash内包括bootloader分区、参数区和***内核根文件分区,其中,对所述bootloader分区进行flash写保护;
(S1)当所述SD设备启动时,将flash写保护指令集和flash去保护指令集全部载入SD设备的内存中保存;
(S2)检测bootloader分区是否需要升级,若需要,则进行下一步,否则保持所述bootloader分区处于写保护状态;
(S3)从外部载入待升级的bootloader内容,同时在该过程中当flash与内存之间的串行接口空闲时,从内存中向该bootloader分区一次性写入所述flash去保护指令集,对该bootloader分区进行去保护操作;
(S4)对bootloader分区内数据进行擦写操作,升级bootloader内容;
(S5)从flash中读取升级后的bootloader内容进行校验,并与升级前的bootloader的校验值进行对比,判断是否升级成功,若是,则进行下一步,否则跳转至步骤(S4);
(S6)从内存中一次性写入flash写保护指令集,对所述bootloader分区进行flash写保护操作。
其中,所述flash中还设有一校验区,用于保存升级前的bootloader内容的校验值。优选地,所述校验值为ECC校验值或MD5码。
所述flash写保护是指通过设置flash内置的寄存器,保证flash在没有收到特定的指令时,保护特定区域执行擦除或写入操作不会生效。现有的flash写保护基于硬件特点,只能随机保护一个块或者flash头部或尾部的一个区域。针对SD设备内的flash设置情况,我们选择通过flash写保护保护其flash头部区域,即从bootloader分区起的区域,但是由于SD设备flash中参数区在使用过程中需要频繁擦写,因而其进行flash写保护的意义不大,对其进行flash写保护反而会影响参数读写的效率,因此只能对bootloader分区进行flash写保护,其意义在于SD***启动过程中,设备需要先加载bootloader然后通过bootloader去引导***,对bootloader分区进行flash写保护后,即使***镜像文件发送了篡改,SD设备依然可以进入紧急升级状态,从而通过升级***等手段恢复SD设备的正常功能。
另一方面,本发明在进行flash写保护操作和flash去保护操作中,先将相应的指令集载入SD设备的内存中保存,在flash和内存之间的串行接口SPI空闲时,一次性写入flash内完成相应的写保护或去保护操作,如此达到纳秒级的指令操作;相比现有技术中对flash的指令是一条条下达的毫秒级操作,效率有极大的提升,并且毫秒级的操作在SD设备掉电情况下,更容易造成flash损害。
上述实施例仅为本发明的优选实施例,并非对本发明保护范围的限制,但凡采用本发明的设计原理,以及在此基础上进行非创造性劳动而作出的变化,均应属于本发明的保护范围之内。
Claims (4)
1.一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法,其特征在于,所述flash内包括bootloader分区、参数区和***内核根文件分区,其中,所述SD为智能设备,对所述bootloader分区进行flash写保护;
(S1)当所述SD启动时,将flash写保护指令集和flash去保护指令集全部载入SD的内存中保存;
(S2)检测bootloader分区是否需要升级,若需要,则进行下一步,否则保持所述bootloader分区处于写保护状态;
(S3)从外部载入待升级的bootloader内容,同时在该过程中当flash与内存之间的串行接口空闲时,从内存中向该bootloader分区一次性写入所述flash去保护指令集,对该bootloader分区进行去保护操作;
(S4)对bootloader分区内数据进行擦写操作,升级bootloader内容;
(S5)从flash中读取升级后的bootloader内容进行校验,并与升级前的bootloader的校验值进行对比,判断是否升级成功,若是,则进行下一步,否则跳转至步骤(S4);
(S6)从内存中一次性写入flash写保护指令集,对所述bootloader分区进行flash写保护操作。
2.根据权利要求1所述的一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法,其特征在于,所述flash中还设有一校验区,用于保存升级前的bootloader内容的校验值。
3.根据权利要求2所述的一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法,其特征在于,所述校验值为ECC校验值。
4.根据权利要求2所述的一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法,其特征在于,所述校验值为MD5码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610648520.2A CN106293531B (zh) | 2016-08-10 | 2016-08-10 | 一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610648520.2A CN106293531B (zh) | 2016-08-10 | 2016-08-10 | 一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106293531A CN106293531A (zh) | 2017-01-04 |
CN106293531B true CN106293531B (zh) | 2019-09-06 |
Family
ID=57667287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610648520.2A Expired - Fee Related CN106293531B (zh) | 2016-08-10 | 2016-08-10 | 一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106293531B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110888653A (zh) * | 2019-11-01 | 2020-03-17 | 桃芯科技(苏州)有限公司 | 存储器中固件读写的控制方法、***、电子设备、芯片 |
CN115952564B (zh) * | 2023-03-01 | 2023-08-15 | 荣耀终端有限公司 | 数据写入方法和终端设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101650662A (zh) * | 2009-08-26 | 2010-02-17 | 中兴通讯股份有限公司 | 一种嵌入式***的存储器件、固件启动及升级方法 |
CN102902556A (zh) * | 2012-09-06 | 2013-01-30 | 深圳市共进电子股份有限公司 | 一种嵌入式设备的多级引导加载方法 |
CN105204899A (zh) * | 2015-09-17 | 2015-12-30 | 浪潮软件集团有限公司 | 一种基于网络的单片机固件升级方法的实现 |
-
2016
- 2016-08-10 CN CN201610648520.2A patent/CN106293531B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101650662A (zh) * | 2009-08-26 | 2010-02-17 | 中兴通讯股份有限公司 | 一种嵌入式***的存储器件、固件启动及升级方法 |
CN102902556A (zh) * | 2012-09-06 | 2013-01-30 | 深圳市共进电子股份有限公司 | 一种嵌入式设备的多级引导加载方法 |
CN105204899A (zh) * | 2015-09-17 | 2015-12-30 | 浪潮软件集团有限公司 | 一种基于网络的单片机固件升级方法的实现 |
Also Published As
Publication number | Publication date |
---|---|
CN106293531A (zh) | 2017-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8468389B2 (en) | Firmware recovery system and method of baseboard management controller of computing device | |
CN104424044A (zh) | 伺服器*** | |
CN109032632A (zh) | 一种fota升级方法、无线通信终端及存储介质 | |
CN111143132B (zh) | 一种bios恢复方法、装置、设备及可读存储介质 | |
CN110109716A (zh) | 保证ssd固件稳定加载的方法、装置、计算机设备及存储介质 | |
CN111045712A (zh) | 一种具有备份功能的单***升级方法及*** | |
CN106293531B (zh) | 一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法 | |
US8423729B2 (en) | Part information restoration method, part information management method and electronic apparatus | |
US10824732B1 (en) | System and method for protecting firmware of baseboard management controller of computing device | |
US20160274648A1 (en) | Method of enabling sleep mode, memory control circuit unit and storage apparatus | |
CN103890713A (zh) | 用于管理处理***内的寄存器信息的装置及方法 | |
CN107515730B (zh) | 数据储存装置与操作方法 | |
CN112394965A (zh) | 电池管理***升级和运行方法,控制器,电池管理***及存储介质 | |
CN114496052A (zh) | Ssd非操作电源状态允许模式功能的测试方法和装置 | |
CN111783162A (zh) | 数据保护实现方法、装置及计算机设备 | |
CN105573802B (zh) | 多处理器主板电源管理程序远程升级方法 | |
KR100907550B1 (ko) | 시리얼 eeprom의 손상된 데이터를 복구하기 위한장치 및 방법 | |
CN110134456A (zh) | 用于管理操作***的方法、装置、设备和存储介质 | |
CN111027104A (zh) | 一种防止网卡标识数据丢失的方法、装置及主板 | |
CN218866463U (zh) | 一种基于pfr功能侦测启动数据分配储存保护装置 | |
CN114003523B (zh) | 用来进行配置管理的方法以及数据存储装置及其控制器 | |
CN111400093B (zh) | 一种nvdimm的配置方法、配置装置及配置设备 | |
CN109977049B (zh) | 一种控制器及方法、*** | |
CN114115755B (zh) | 用于数据写入的方法及装置、存储介质 | |
CN109614112B (zh) | 雷达信号处理机及其程序烧写和加载方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190906 Termination date: 20210810 |