CN105868046B - 存储装置中管理、写入及加载固件代码的方法 - Google Patents
存储装置中管理、写入及加载固件代码的方法 Download PDFInfo
- Publication number
- CN105868046B CN105868046B CN201510032184.4A CN201510032184A CN105868046B CN 105868046 B CN105868046 B CN 105868046B CN 201510032184 A CN201510032184 A CN 201510032184A CN 105868046 B CN105868046 B CN 105868046B
- Authority
- CN
- China
- Prior art keywords
- code section
- code
- backup
- page
- value
- 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.)
- Active
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种存储装置中管理固件代码的方法,所述方法包括:将固件代码分成多个代码段;将每一代码段复制多个;写入所述多个代码段;确定需加载的目标代码段,所述目标代码段包括多个相同的备份代码段;判断其中一备份代码段是否损坏;当所述备份代码段损坏时,找到未损坏的备份代码段;及加载所述未损坏的备份代码段。本发明实施方式中还涉及一种存储装置中写入及加载固件代码的方法。
Description
技术领域
本发明涉及数据存储技术,特别是涉及一种存储装置中管理、写入及加载固件代码的方法。
背景技术
闪存(Flash)是一种非挥发性的半导体存储芯片,具有体积小、功耗低、不易受物理破坏的优点,是移动数码产品的理想存储介质。闪存根据内部架构和实现技术可以分为AND、NAND、NOR和DiNOR等几种,NAND型闪存是非易失性的,所以很适合便携式数据存储设备。与NOR型闪存相比,NAND型闪存数据密度更大,并且价格更加便宜。
传统闪存中控制器所执行的固件代码以控制器内的可程序只读存储器来存储,并且于闪存系统运作时载入至控制器内的静态随机存取存储器来执行。为了能够缩小存储装置的尺寸且能够更方便更新与修改固件代码,现已将固件代码直接存储在闪存存储器内且在控制器欲运作时再载入至控制器。但由于闪存存储器的存储寿命有限,当长时间存储或频繁读取固件代码时,闪存存储器会发生错误导致固件代码损坏无法加载。
发明内容
鉴于以上内容,有必要提供一种存储装置中管理、写入及加载固件代码的方法。
一种存储装置中管理固件代码的方法,所述方法包括:将固件代码分成多个代码段;将每一代码段复制多个;写入所述多个代码段;确定需加载的目标代码段,所述目标代码段包括多个相同的备份代码段;判断其中一备份代码段是否损坏;当所述备份代码段损坏时,找到未损坏的备份代码段;及加载所述未损坏的备份代码段。
优选地,所述方法还包括:寻找一空块;对空块进行物理写读,并记录块中每页的ECC值;擦除块并将页的索引值初始化;当所述页的ECC值符合要求时,写入所述多个代码段;及当所述页的ECC值不符合要求时,所述页的索引值自加。
优选地,所述方法还包括:当所述页的索引值大于所述空块中的最大页数值时,寻找一新空块进行写入。
优选地,所述方法还包括:判断已损坏的备份代码段的个数是否超过阈值;及当已损坏的备份代码段的个数超过所述阈值时,对所述未损坏的备份代码段进行备份。
优选地,所述方法还包括:当已损坏的备份代码段的个数未超过所述阈值时,直接加载所述未损坏的备份代码段。
一种存储装置中写入固件代码的方法,所述方法包括:将固件代码分成多个代码段;将每一代码段复制多个;及写入所述多个代码段。
优选地,所述方法还包括:寻找一空块;对空块进行物理写读,并记录块中每页的ECC值;擦除块并将页的索引值初始化;当所述页的ECC值符合要求时,写入所述多个代码段;及当所述页的ECC值不符合要求时,所述页的索引值自加。
一种存储装置中加载固件代码的方法,所述方法包括:确定需加载的目标代码段,所述目标代码段包括多个相同的备份代码段;判断其中一备份代码段是否损坏;当所述备份代码段损坏时,找到未损坏的备份代码段;及加载所述未损坏的备份代码段。
优选地,所述方法还包括:判断已损坏的备份代码段的个数是否超过阈值;及当已损坏的备份代码段的个数超过所述阈值时,对所述未损坏的备份代码段进行备份。
优选地,所述方法还包括:当已损坏的备份代码段的个数未超过所述阈值时,直接加载所述未损坏的备份代码段。
与现有技术相比,本实施方式中存储装置中管理、写入及加载固件代码的方法将固件代码进行分段并备份存储,可提高控制器内存的利用率,减小固件代码损坏导致无法加载的问题。
附图说明
图1为本发明一实施方式中一存储装置及所配接的电子装置的模块图。
图2为本发明一实施方式中一种存储装置中写入固件代码的方法的流程图。
图3为本发明一实施方式中一种写入代码段的方法的流程图。
图4为本发明一实施方式中一种寻找稳定页的方法的流程图。
图5为本发明一实施方式中一种加载固件代码的方法的流程图。
主要元件符号说明
电子装置 | 1 |
处理器 | 11 |
随机存储器 | 13 |
输入输出接口 | 15 |
存储装置 | 2 |
控制芯片 | 21 |
第一输入输出接口 | 211 |
微处理器 | 213 |
第二输入输出接口 | 215 |
闪存芯片 | 23 |
如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
如图1所示,一存储装置2可与一电子装置1配接。所述电子装置1包括处理器11、随机存储器13及输入输出接口15。所述存储装置2包括一控制芯片21及一闪存芯片23。所述控制芯片21包括一第一输入输出接口211、一微处理器213及一第二输入输出接口215。所述第一输入输出接口211连接所述输入输出接口15。所述第二输入输出接口连接所述闪存芯片23。控制芯片21可对闪存芯片进行管理,并将用户的数据写入到闪存芯片中或者是将闪存芯片中的数据读出,返回给用户。
在本实施方式中,所述电子装置可为电脑、数码相机、手机、多媒体播放器等系统。所述存储装置2可为包括NAND闪存的U盘或固态硬盘。所述存储装置2包含多个存储块(block),每个存储块包含多个页(page),每个页包含多个字节(byte)。
所述电子装置1通过所述输入输出接口15与所述存储装置2连接。用户发出读数据、写数据或扫描数据的指令给所述处理器11,所述处理器11通过所述输入输出接口15将所述指令发送给所述存储装置2。
图2是本发明一实施方式中一种应用于存储装置2中的存储装置中写入固件代码方法的流程图,所述方法包括以下步骤:
步骤201:将固件代码分成多个代码段。所述固件代码可根据执行不同的功能拆分出相应的代码段,当加载代码段时控制芯片可根据需要执行的功能选择性加载相应的代码段。
步骤202:将每一代码段复制多个。
步骤203:对每一代码段生成校验码。每一代码段可生成一个或多个ECC校验码以在读取代码段时判断写入的代码段是否损坏。
步骤204:写入所述多个代码段及相应的校验码。
图3为图2步骤204一实施方式中一种写入代码段的方法的流程图,所述方法包括以下步骤:
步骤301:判断代码段是否写完,若判断结果为“是”,则结束,若判断结果为“否”,则到步骤302。
步骤302:寻找稳定页。
步骤303:将代码段写入稳定页。
图4为图3步骤303一实施方式中一种寻找稳定页的方法的流程图,所述方法包括以下步骤:
步骤401:设定一页索引值为溢出值。所述页索引值为页在块中的索引值,所述溢出值大于块中的最大页数值。
步骤402:将页索引值自加,此时页索引值溢出。
步骤403:判断页索引值是否小于页的最大索引值,若判断结果为“是”,则执行步骤407,若判断结果为“否”,则执行步骤404。页的最大索引值为块中的最大页数值。
步骤404:寻找一新空块。
步骤405:对新空块进行物理写读,并记录块中每页的ECC值。
步骤406:擦除块并将页索引值初始化,即将所述索引值设为块的初始页的索引值。
步骤407:判断所述页的ECC值是否符合要求,若判断结果为“是”,则结束,若判断结果为“否”,则回到步骤402。
在本实施方式中,在步骤401时,设定一页索引值为溢出值是为确保在第一次进入时执行步骤404的流程。
图5为本发明实施方式中一种加载固件代码的方法的流程图,所述方法包括以下步骤:
步骤501:根据执行操作确定需加载的目标代码段。当加载代码段时,控制芯片可根据需要执行的功能选择性加载目标代码段。所述目标代码段包括多个相同的备份代码段。
步骤502:读取所述目标代码段中一备份代码段。
步骤503:判断读取的备份代码段是否损坏,若判断结果为“是”,则执行步骤504,若判断结果为“否”,则执行步骤510。判断读取的备份代码段是否损坏可通过记录的ECC校验码进行判断。
步骤504:记录损坏的备份代码段。
步骤505:判断已损坏的备份代码段的份数是否超过阈值,若判断结果为“是”,则执行步骤507,若判断结果为“否”,则执行步骤506。
步骤506:读取另一备份代码段。
步骤507:判断是否有未损坏的备份代码段,若判断结果为“是”,则执行步骤508,若判断结果为“否”,则代码加载出错退出。此步骤可通过遍历所有的备份代码段来找出一未损坏的备份代码段。
步骤508:对未损坏的备份代码段进行备份以取代已损坏的备份代码段。
步骤509:对损坏记录初始化,重新设定损坏记录。
步骤510:加载备份代码段。
本发明一实施方式中,一种存储装置中管理固件代码的方法可包括图2实施方式中一种应用于存储装置2中的存储装置中写入固件代码方法及图5实施方式中一种加载固件代码的方法。
本领域普通技术人员还可以理解,实现上述实施方式方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,包括ROM/RAM、磁盘、光盘等。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下做出若干等同替代或明显变型,而且性能或用途相同,都应当视为属于本发明由所提交的权利要求书确定的专利保护范围。
Claims (8)
1.一种存储装置中管理固件代码的方法,其特征在于:所述方法包括:
将固件代码分成多个代码段;
将每一代码段复制多个;
寻找一空块;
对所述空块进行物理写读,并记录块中每页的ECC值;
擦除块并将页的索引值初始化;
当所述页的ECC值符合要求时,写入所述多个代码段;
当所述页的ECC值不符合要求时,所述页的索引值自加;判断所述页的索引值是否大于所述空块中的最大页数值;
根据判断结果确定是否需要寻找一新空块进行写入;
确定需加载的目标代码段,所述目标代码段包括多个相同的备份代码段;
判断其中一备份代码段是否损坏;
当所述备份代码段损坏时,找到未损坏的备份代码段;及
加载所述未损坏的备份代码段。
2.如权利要求1所述的方法,其特征在于:所述方法还包括:
当所述页的索引值大于所述空块中的最大页数值时,寻找一新空块进行写入。
3.如权利要求1所述的方法,其特征在于:所述方法还包括:
判断已损坏的备份代码段的个数是否超过阈值;及
当已损坏的备份代码段的个数超过所述阈值时,对所述未损坏的备份代码段进行备份。
4.如权利要求3所述的方法,其特征在于:所述方法还包括:
当已损坏的备份代码段的个数未超过所述阈值时,直接加载所述未损坏的备份代码段。
5.一种存储装置中写入固件代码的方法,其特征在于:所述方法包括:
将固件代码分成多个代码段;
将每一代码段复制多个;
寻找一空块;
对空块进行物理写读,并记录块中每页的ECC值;
擦除块并将页的索引值初始化;
当所述页的ECC值符合要求时,写入所述多个代码段;
当所述页的ECC值不符合要求时,所述页的索引值自加;
判断所述页的索引值是否大于所述空块中的最大页数值;及
根据判断结果确定是否需要寻找一新空块进行写入。
6.一种存储装置中加载按照权利要求5中方法所写入的固件代码的方法,其特征在于:所述方法包括:
确定需加载的目标代码段,所述目标代码段包括多个相同的备份代码段;
判断其中一备份代码段是否损坏;
当所述备份代码段损坏时,找到未损坏的备份代码段;及
加载所述未损坏的备份代码段。
7.如权利要求6所述的方法,其特征在于:所述方法还包括:
判断已损坏的备份代码段的个数是否超过阈值;及
当已损坏的备份代码段的个数超过所述阈值时,对所述未损坏的备份代码段进行备份。
8.如权利要求7所述的方法,其特征在于:所述方法还包括:
当已损坏的备份代码段的个数未超过所述阈值时,直接加载所述未损坏的备份代码段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510032184.4A CN105868046B (zh) | 2015-01-22 | 2015-01-22 | 存储装置中管理、写入及加载固件代码的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510032184.4A CN105868046B (zh) | 2015-01-22 | 2015-01-22 | 存储装置中管理、写入及加载固件代码的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105868046A CN105868046A (zh) | 2016-08-17 |
CN105868046B true CN105868046B (zh) | 2018-11-13 |
Family
ID=56623556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510032184.4A Active CN105868046B (zh) | 2015-01-22 | 2015-01-22 | 存储装置中管理、写入及加载固件代码的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105868046B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943614A (zh) * | 2017-10-27 | 2018-04-20 | 捷开通讯(深圳)有限公司 | 智能终端数据备份方法、智能终端及具有存储功能的装置 |
CN116737087B (zh) * | 2023-08-15 | 2023-11-03 | 合肥康芯威存储技术有限公司 | 一种存储装置及其数据处理方法 |
CN117420964B (zh) * | 2023-12-18 | 2024-03-22 | 合肥康芯威存储技术有限公司 | 一种存储装置及其数据处理方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101449245A (zh) * | 2006-06-08 | 2009-06-03 | 国际商业机器公司 | 在主站点和次级站点之间镜像映射数据 |
CN102622243A (zh) * | 2012-01-19 | 2012-08-01 | 苏州希图视鼎微电子有限公司 | 支持多种nand闪存的固化代码的执行方法 |
CN102637461A (zh) * | 2012-03-07 | 2012-08-15 | 山东华芯半导体有限公司 | 支持坏块闪存扫描的启动方法 |
CN102800357A (zh) * | 2011-05-27 | 2012-11-28 | 群联电子股份有限公司 | 程序码载入与存取方法、存储器控制器与存储器储存装置 |
CN104166558A (zh) * | 2013-05-16 | 2014-11-26 | 群联电子股份有限公司 | 固件码载入方法、存储器控制器与存储器存储装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7143275B2 (en) * | 2002-08-01 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | System firmware back-up using a BIOS-accessible pre-boot partition |
TW200713037A (en) * | 2005-09-06 | 2007-04-01 | Benq Corp | System and method for updating firmware |
-
2015
- 2015-01-22 CN CN201510032184.4A patent/CN105868046B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101449245A (zh) * | 2006-06-08 | 2009-06-03 | 国际商业机器公司 | 在主站点和次级站点之间镜像映射数据 |
CN102800357A (zh) * | 2011-05-27 | 2012-11-28 | 群联电子股份有限公司 | 程序码载入与存取方法、存储器控制器与存储器储存装置 |
CN102622243A (zh) * | 2012-01-19 | 2012-08-01 | 苏州希图视鼎微电子有限公司 | 支持多种nand闪存的固化代码的执行方法 |
CN102637461A (zh) * | 2012-03-07 | 2012-08-15 | 山东华芯半导体有限公司 | 支持坏块闪存扫描的启动方法 |
CN104166558A (zh) * | 2013-05-16 | 2014-11-26 | 群联电子股份有限公司 | 固件码载入方法、存储器控制器与存储器存储装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105868046A (zh) | 2016-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8046526B2 (en) | Wear leveling method and controller using the same | |
US20180285258A1 (en) | Garbage collection | |
US20100217919A1 (en) | Memory controller, semiconductor memory device and control method thereof | |
US8631310B2 (en) | Method for reducing uncorrectable errors of a memory device regarding error correction code, and associated memory device and controller thereof | |
US8667210B2 (en) | Memory management method, memory controller and memory storage apparatus | |
US8667209B2 (en) | Non-volatile memory access method and system, and non-volatile memory controller | |
US9507708B2 (en) | Method for managing memory apparatus, associated memory apparatus thereof and associated controller thereof | |
US10620874B2 (en) | Memory management method, memory control circuit unit and memory storage apparatus | |
US10503433B2 (en) | Memory management method, memory control circuit unit and memory storage device | |
US20190065361A1 (en) | Method for writing data into flash memory module and associated flash memory controller and electronic device | |
US9037781B2 (en) | Method for managing buffer memory, memory controllor, and memory storage device | |
CN105867834A (zh) | 存储装置数据整理方法 | |
CN105489242B (zh) | 数据储存器件及其操作方法 | |
CN105868046B (zh) | 存储装置中管理、写入及加载固件代码的方法 | |
CN111399751B (zh) | 闪存控制器、管理闪存模块的方法及相关的电子装置 | |
CN116204126A (zh) | 固态硬盘的数据读写方法及装置、固态硬盘、存储介质 | |
US10423338B2 (en) | Method of extending lifetime of solid state disk | |
US11347433B2 (en) | Method for performing sudden power off recovery management, associated memory device and controller thereof, and associated electronic device | |
US9778862B2 (en) | Data storing method for preventing data losing during flush operation, memory control circuit unit and memory storage apparatus | |
CN104657083A (zh) | 数据写入方法、存储器储存装置、存储器控制电路单元 | |
US11487655B2 (en) | Method for managing flash memory module and associated flash memory controller and electronic device based on timing of dummy read operations | |
US9229798B2 (en) | Error handling method, memory storage device and memory controlling circuit unit | |
CN109002265B (zh) | 一种数据处理的方法以及相关装置 | |
US20100037004A1 (en) | Storage system for backup data of flash memory and method for the same | |
US11809314B2 (en) | Method and apparatus for performing access control of memory device with aid of multi-stage garbage collection management |
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 |