CN117348911A - 一种优化软件执行时间的nor flash数据更新方法及系统 - Google Patents
一种优化软件执行时间的nor flash数据更新方法及系统 Download PDFInfo
- Publication number
- CN117348911A CN117348911A CN202311232111.0A CN202311232111A CN117348911A CN 117348911 A CN117348911 A CN 117348911A CN 202311232111 A CN202311232111 A CN 202311232111A CN 117348911 A CN117348911 A CN 117348911A
- Authority
- CN
- China
- Prior art keywords
- time
- block
- execution time
- data update
- data
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 146
- 238000005457 optimization Methods 0.000 claims abstract description 30
- 230000007704 transition Effects 0.000 claims abstract description 8
- 238000012545 processing Methods 0.000 claims description 31
- 230000001965 increasing effect Effects 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 16
- 230000003993 interaction Effects 0.000 claims description 4
- 238000012360 testing method Methods 0.000 abstract description 9
- 238000004364 calculation method Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 238000005259 measurement Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种优化软件执行时间的NOR FLASH数据更新方法及系统,包括以下步骤:实测当前NOR芯片的擦除、写、读时间参数;根据擦除、写、读时间参数进行分析,得到分别以单个页、单个扇区、单个块为最大边界进行数据更新的时间拐点;基于时间拐点,通过执行时间优化算法对NOR FLASH数据进行更新;其中,时间拐点表示在某个最大边界内,某种数据更新方法执行时间相比另一种数据更新方法变短或者变长的转换点字节数边界。本发明用于解决现有技术在对FLASH的擦写读操作执行数据更新时,缺乏对软件执行时间维度的考虑的技术问题,从而达到能快速执行NOR数据更新,减少软件执行时间,降低测试时间成本的目的。
Description
技术领域
本发明涉及芯片方案和测试技术领域,具体涉及一种优化软件执行时间的NORFLASH数据更新方法及系统。
背景技术
在现有使用NOR FLASH(为方便叙述,下文简称为NOR)的芯片方案场景中,无论是正常的固件软件系统执行,还是芯片出厂FT测试,或者工厂固件烧录更新,都可能会需要对NOR空间进行数据更新。
一方面,对NOR数据更新的操作主要包括擦除、写、读三种,NOR本身的物理特性决定了擦除是将数据区域的每个位由0变为1,而写操作只能是将1变为0(并且特殊的,写操作最大只能是按256字节的页长度写入)。因此,对NOR的数据更新操作一般是读取旧数据块备份,擦除旧数据块所在区域,将备份的旧数据修改所需的内容变为新数据块,将新数据块写入之前被擦除的区域。
另一方面,某些MCU(Micro-ControllerUnit)软件系统运行时,对实时性要求较高,要求对NOR数据更新执行时间越短越好。芯片出厂FT测试,或者工厂固件烧录更新场合更是以秒计费。并且,NOR本身包括多种不同长度块的擦除命令,并非所有NOR数据空间在更新前都是处于已擦除状态(即必须先擦除后才能写入更新)。
基于以上原因,人们提出了以下专利方案:
专利《一种动态增强FLASH擦写次数的方法及系统》专利号(CN112162936B),该专利主要是基于FLASH的擦写寿命维度考虑,提出一种基于FLASH页擦写(固定256字节)的方法来进行FLASH内容擦写更新,并且判断读和写的FLASH目的页是否为坏页的方法和系统。
专利《一种提升NOR FLASH擦写寿命的存储控制方法》专利号(CN115268768A),该专利主要也是基于FLASH的擦写寿命维度考虑,提出一种建立索引页来记录FLASH数据页使用容量,采用一次擦除,多次写入的思想来提高数据页的利用率,减少擦写次数,从而提高FLASH擦写寿命的方法。
专利《一种提高Flash擦写寿命的方法》专利号)(CN105159601A),该专利主要也是基于FLASH的擦写寿命维度考虑,提出一种扇区内分子块,然后建立索引信息记录是否已擦除或者已写过数据的状态,从而动态控制对FLASH的擦写索引信息,延长FLASH的擦写寿命。
以上几篇现有技术专利,都是仅从FLASH的寿命维度考虑FLASH的擦写读操作执行数据更新,并没有从软件执行时间维度考虑。但实际产品量产过程中,在某些场合比如芯片出厂FT测试,或者工厂固件烧录更新,软件对FLAS H的擦写读执行时间是影响产品成本的一个重要关键因素(这些场合成本费用都是按秒计算)。
发明内容
为了克服现有技术的不足,本发明提供一种优化软件执行时间的NOR FL ASH数据更新方法及系统,用于解决现有技术在对NOR的擦写读操作执行数据更新时,缺乏对软件执行时间维度的考虑的技术问题,从而达到能快速执行NO R数据更新,减少软件执行时间,降低测试时间成本的目的。
为解决上述问题,本发明所采用的技术方案如下:
一种优化软件执行时间的NOR FLASH数据更新方法,包括以下步骤:
实测当前NOR芯片的擦除、写、读时间参数;
根据所述擦除、写、读时间参数进行分析,得到分别以单个页、单个扇区、单个块(块分为32K块和64K块两种)为最大边界进行数据更新的时间拐点;
基于所述时间拐点,通过执行时间优化算法对NOR数据进行更新;
其中,所述时间拐点表示在某个最大边界内,某种数据更新方法执行时间相比另一种数据更新方法变短或者变长的转换点字节数边界。
作为本发明优选的实施方式,在得到以单个页为最大边界进行数据更新的时间拐点时,包括:
以单个页为最大边界,将边界内数据更新字节数从1递增到256字节,并记录下执行时间,从而确定单个页的时间拐点。
作为本发明优选的实施方式,在得到以单个扇区为最大边界进行数据更新的时间拐点时,包括:
以单个扇区为最大边界,分别通过第一数据更新方法和第二数据更新方法将边界内数据更新字节数从1递增到4K字节,得到第一执行时间和第二执行时间;
根据所述第一执行时间和所述第二执行时间,确定单个扇区的时间拐点;
其中,在通过第一数据更新方法将边界内数据更新字节数从1递增到4K字节时,包括:
将数据更新字节数分为两部分,当第一部分的字节数刚好是整页字节数的倍数时,得到第一部分扇区时间,当剩余部分的字节数不足单页字节数时,得到第二部分扇区时间,将所述第一部分扇区时间和所述第二部分扇区时间相加得到所述第一执行时间;
在通过第二数据更新方法将边界内数据更新字节数从1递增到4K字节时,包括:
按扇区进行操作,先读备份整个扇区+擦除整个扇区+写更新整个扇区,得到所述第二执行时间。
作为本发明优选的实施方式,在得到以单个块为最大边界进行数据更新的时间拐点时,包括:
以单个32K块为最大边界,分别通过第三数据更新方法和第四数据更新方法将边界内数据更新字节数从1递增到32K字节,得到第三执行时间和第四执行时间;
根据所述第三执行时间和所述第四执行时间,确定单个32K块的时间拐点;
其中,在通过第三数据更新方法将边界内数据更新字节数从1递增到32K字节时,包括:
将数据更新字节数分为两部分,当第一部分的字节数刚好是整扇区字节数的倍数时,得到第一部分32K块时间,当剩余部分的字节数不足单个整扇区字节数时,则根据所述第一数据更新方法和所述第二数据更新方法分别对所述剩余部分的字节数进行更新,将其中更短的执行时间作为所述剩余部分的字节数的第二部分32K块时间,将所述第一部分32K块时间和所述第二部分32K块时间相加得到所述第三执行时间;
在通过第四数据更新方法将边界内数据更新字节数从1递增到32K字节时,包括:
按32K块进行操作,先读备份整个32K块+擦除整个32K块+写更新整个32K块,得到所述第四执行时间。
作为本发明优选的实施方式,在得到以单个块为最大边界进行数据更新的时间拐点时,还包括:
以单个64K块为最大边界,分别通过第五数据更新方法和第六数据更新方法将边界内数据更新字节数从1递增到64K字节,得到第五执行时间和第六执行时间;
根据所述第五执行时间和所述第六执行时间,确定单个64K块的时间拐点;
其中,在通过第五数据更新方法将边界内数据更新字节数从1递增到64K字节时,包括:
将数据更新字节数分为两部分,当第一部分的字节数刚好是整32K字节数的倍数时,得到第一部分64K块时间,当剩余部分的字节数不足单个整32K块字节数时,则根据所述第三数据更新方法和所述第四数据更新方法分别对所述剩余部分的字节数进行更新,将其中更短的执行时间作为所述剩余部分的字节数的第二部分64K块时间,将所述第一部分64K块时间和所述第二部分64K块时间相加得到所述第五执行时间;
在通过第六数据更新方法将边界内数据更新字节数从1递增到64K字节时,包括:
按64K块进行操作,先读备份整个64K块+擦除整个64K块+写更新整个64K块,得到所述第六执行时间。
作为本发明优选的实施方式,在通过执行时间优化算法对NOR FLASH数据进行更新时,包括:
通过TimeEraseCalOptimized函数识别用户输入的起始地址、结束地址、地址长度;
以64K块为单元对所述地址长度进行识别判断;
若所述地址长度属于同个64K块内,则调用CalInHeadTail64k函数进行处理;
若所述地址长度不属于同个64K块内,则将所述地址长度切分为头部、中间部、尾部三大块进行处理。
作为本发明优选的实施方式,在调用CalInHeadTail64k函数进行处理时,包括:
判断所述地址长度是否超过单个64K块的拐点;
若是,则按照所述第六数据更新方法获取执行时间;
若否,则判断所述起始地址、所述结束地址是否处于同个32K块内,若是,则调用CalInHeadTail32k函数进行处理,若否,则将所述地址长度切分为头部、中间部、尾部三大块进行处理。
作为本发明优选的实施方式,在调用CalInHeadTail32k函数进行处理时,包括:
判断所述地址长度是否超过单个32K块的拐点;
若是,则按照所述第四数据更新方法获取执行时间;
若否,则判断所述起始地址、所述结束地址是否处于同个扇区内,若是,则调用CalInHeadTail4k函数进行处理,若否,则将所述地址长度切分为头部、中间部、尾部三大块进行处理。
作为本发明优选的实施方式,在调用CalInHeadTail4k函数进行处理时,包括:
判断所述地址长度是否超过单个页的拐点;
若是,则按照所述第二数据更新方法获取执行时间;
若否,则判断所述起始地址、所述结束地址是否处于同个页内,若是,则进行处理,若否,则将所述地址长度切分为头部、中间部、尾部三大块进行处理。
一种优化软件执行时间的NOR FLASH数据更新系统,包括:
MCU芯片,包括:串行FLASH控制器、数据缓冲区、算法执行单元、时钟产生单元、FLASH状态获取单元;所述串行FLASH控制器用于产生与NOR FLASH芯片通讯的片选、时钟和数据交互信号;所述数据缓冲区为用于NOR读操作的数据备份区域;所述算法执行单元用于执行时间优化算法;所述时钟产生单元用于产生所述NOR FLASH芯片所需要的时钟;所述FLASH状态获取单元用于自动读取所述NOR FLASH芯片的命令执行完成状态;
NOR FLASH芯片,通过所述串行FLASH控制器与所述MCU芯片进行连接,用于执行所述MCU芯片所发出的命令;
在执行时间优化算法时,包括:
基于时间拐点,通过执行时间优化算法对所述NOR FLASH芯片的数据进行更新;
所述时间拐点包括:通过实测当前NOR芯片的擦除、写、读时间参数,根据所述擦除、写、读时间参数进行分析,得到分别以单个页、单个扇区、单个块为最大边界进行数据更新的时间拐点。;
其中,所述时间拐点表示在某个最大边界内,某种数据更新方法执行时间相比另一种数据更新方法变短或者变长的转换点字节数边界。
相比现有技术,本发明的有益效果在于:
(1)本发明适用于采用NOR FLASH的MCU系统,该系统需要经常更新NOR数据,并且更新的数据区域地址位置、范围和频率随机,但同时又对系统实时性较高,NOR数据更新执行时间越短越好;
(2)本发明还适用于芯片FT测试和工厂NOR固件更新,优化的算法提供更短的固件更新时间,减少芯片测试成本;
(3)本发明所提供的优化算法不受NOR厂家和型号的限制,比如有些厂家NOR没有页擦除指令,但有512字节双页擦除指令,仍然可以基于本发明的优化算法作微小修改后使用;
(4)本发明从现有技术未考虑到的软件执行时间维度,提出一种优化的NOR擦写读算法,能快速执行NOR数据更新,减少软件执行时间,降低测试时间成本;
(5)本发明提出的优化算法不受数据更新的NOR空间地址位置和长度限制,具有通用性和自适应性。
下面结合附图和具体实施方式对本发明作进一步详细说明。
附图说明
图1-是本发明实施例的优化软件执行时间的NOR FLASH数据更新方法步骤图;
图2-是本发明实施例的优化软件执行时间的NOR FLASH数据更新系统的硬件框架图;
图3-是本发明实施例的TimeEraseCalOptimized执行流程图;
图4-是本发明实施例的CalInHeadTail64k执行流程图;
图5-是本发明实施例的CalInHeadTail32k执行流程图;
图6-是本发明实施例的CalInHeadTail4k执行流程图;
图7-是本发明实施例的基于256(TimeEraseCalBase256)执行流程图;
图8-是本发明实施例的基于4K(TimeEraseCalBase4k)执行流程图;
图9-是本发明实施例的基于32K(TimeEraseCalBase32k)执行流程图;
图10-是本发明实施例的基于64K(TimeEraseCalBase64k)执行流程图;
图11-是本发明实施例的几种算法的执行时间对比图。
附图标号说明:1、MCU芯片;2、NORFLASH芯片;3、数据缓冲区;4、算法执行单元;5、时钟产生单元;6、FLASH状态获取单元;7、串行FLASH控制器。
具体实施方式
本发明所提供的优化软件执行时间的NOR FLASH数据更新方法,如图1所示,包括以下步骤:
步骤S1:实测当前NOR芯片的擦除、写、读时间参数;
步骤S2:根据擦除、写、读时间参数进行分析,得到分别以单个页、单个扇区、单个块为最大边界进行数据更新的时间拐点;
步骤S3:基于时间拐点,通过执行时间优化算法对NOR FLASH数据进行更新;
其中,时间拐点表示在某个最大边界内,某种数据更新方法执行时间相比另一种数据更新方法变短或者变长的转换点字节数边界。
在上述步骤S2中,在得到以单个页为最大边界进行数据更新的时间拐点时,包括:
以单个页为最大边界,将边界内数据更新字节数从1递增到256字节,并记录下执行时间,从而确定单个页的时间拐点。
在上述步骤S2中,在得到以单个扇区为最大边界进行数据更新的时间拐点时,包括:
以单个扇区为最大边界,分别通过第一数据更新方法和第二数据更新方法将边界内数据更新字节数从1递增到4K字节,得到第一执行时间和第二执行时间;
根据第一执行时间和第二执行时间,确定单个扇区的时间拐点;
其中,在通过第一数据更新方法将边界内数据更新字节数从1递增到4K字节时,包括:
将数据更新字节数分为两部分,当第一部分的字节数刚好是整页字节数的倍数时,得到第一部分扇区时间,当剩余部分的字节数不足单页字节数时,得到第二部分扇区时间,将第一部分扇区时间和第二部分扇区时间相加得到第一执行时间;
在通过第二数据更新方法将边界内数据更新字节数从1递增到4K字节时,包括:
按扇区进行操作,先读备份整个扇区+擦除整个扇区+写更新整个扇区,得到第二执行时间。
在上述步骤S2中,在得到以单个块为最大边界进行数据更新的时间拐点时,包括:
以单个32K块为最大边界,分别通过第三数据更新方法和第四数据更新方法将边界内数据更新字节数从1递增到32K字节,得到第三执行时间和第四执行时间;
根据第三执行时间和第四执行时间,确定单个32K块的时间拐点;
其中,在通过第三数据更新方法将边界内数据更新字节数从1递增到32K字节时,包括:
将数据更新字节数分为两部分,当第一部分的字节数刚好是整扇区字节数的倍数时,得到第一部分32K块时间,当剩余部分的字节数不足单个整扇区字节数时,则根据第一数据更新方法和第二数据更新方法分别对剩余部分的字节数进行更新,将其中更短的执行时间作为剩余部分的字节数的第二部分32K块时间,将第一部分32K块时间和第二部分32K块时间相加得到第三执行时间;
在通过第四数据更新方法将边界内数据更新字节数从1递增到32K字节时,包括:
按32K块进行操作,先读备份整个32K块+擦除整个32K块+写更新整个32K块,得到第四执行时间。
在上述步骤S2中,在得到以单个块为最大边界进行数据更新的时间拐点时,还包括:
以单个64K块为最大边界,分别通过第五数据更新方法和第六数据更新方法将边界内数据更新字节数从1递增到64K字节,得到第五执行时间和第六执行时间;
根据第五执行时间和第六执行时间,确定单个64K块的时间拐点;
其中,在通过第五数据更新方法将边界内数据更新字节数从1递增到64K字节时,包括:
将数据更新字节数分为两部分,当第一部分的字节数刚好是整32K字节数的倍数时,得到第一部分64K块时间,当剩余部分的字节数不足单个整32K块字节数时,则根据第三数据更新方法和第四数据更新方法分别对剩余部分的字节数进行更新,将其中更短的执行时间作为剩余部分的字节数的第二部分64K块时间,将第一部分64K块时间和第二部分64K块时间相加得到第五执行时间;
在通过第六数据更新方法将边界内数据更新字节数从1递增到64K字节时,包括:
按64K块进行操作,先读备份整个64K块+擦除整个64K块+写更新整个64K块,得到第六执行时间。
在上述步骤S3中,在通过执行时间优化算法对NORFLASH数据进行更新时,包括:
通过TimeEraseCalOptimized函数识别用户输入的起始地址、结束地址、地址长度;
以64K块为单元对所述地址长度进行识别判断;
若地址长度属于同个64K块内,则调用CalInHeadTail64k函数进行处理;
若地址长度不属于同个64K块内,则将地址长度切分为头部、中间部、尾部三大块进行处理。
进一步地,在调用CalInHeadTail64k函数进行处理时,包括:
判断地址长度是否超过单个64K块的拐点;
若是,则按照第六数据更新方法获取执行时间;
若否,则判断起始地址、结束地址是否处于同个32K块内,若是,则调用CalInHeadTail32k函数进行处理,若否,则将地址长度切分为头部、中间部、尾部三大块进行处理。
更进一步地,在调用CalInHeadTail32k函数进行处理时,包括:
判断地址长度是否超过单个32K块的拐点;
若是,则按照第四数据更新方法获取执行时间;
若否,则判断起始地址、结束地址是否处于同个扇区内,若是,则调用CalInHeadTail4k函数进行处理,若否,则将地址长度切分为头部、中间部、尾部三大块进行处理。
更进一步地,在调用CalInHeadTail4k函数进行处理时,包括:
判断地址长度是否超过单个页的拐点;
若是,则按照第二数据更新方法获取执行时间;
若否,则判断起始地址、结束地址是否处于同个页内,若是,则进行处理,若否,则将地址长度切分为头部、中间部、尾部三大块进行处理。
本发明所提供的优化软件执行时间的NOR FLASH数据更新系统,包括:MCU芯片1和NOR FLASH芯片2。
MCU芯片1,包括:串行FLASH控制器7、数据缓冲区3、算法执行单元4、时钟产生单元5、FLASH状态获取单元6。
其中,串行FLASH控制器7用于产生与NOR FLASH芯片2通讯的片选、时钟和数据交互信号。数据缓冲区3为用于NOR读操作的数据备份区域。算法执行单元4用于执行时间优化算法。时钟产生单元5用于产生NOR FLASH芯片2所需要的时钟。FLASH状态获取单元6用于自动读取NOR FLASH芯片2的命令执行完成状态。
NOR FLASH芯片2通过串行FLASH控制器7与MCU芯片1进行连接,用于执行MCU芯片1所发出的命令。
在执行时间优化算法时,包括:
基于时间拐点,通过执行时间优化算法对NOR FLASH芯片2的数据进行更新;
时间拐点包括:通过实测当前NOR芯片的擦除、写、读时间参数,根据擦除、写、读时间参数进行分析,得到分别以单个页、单个扇区、单个块为最大边界进行数据更新的时间拐点。;
其中,时间拐点表示在某个最大边界内,某种数据更新方法执行时间相比另一种数据更新方法变短或者变长的转换点字节数边界。
具体地,在实际方案应用中,NOR一般都是作为存储固件或者数据的媒介。软件对NOR数据更新的起始和结束地址,以及更新长度可能都是随机任意指定的,并且由于NOR本身具有多种擦除指令,最终选择哪个擦除指令来执行数据更新可以得到最优执行时间,也是需要根据起始地址和结束地址以及更新长度综合考虑的,下文将详述。
本发明的时间优化算法依赖于以下硬件平台,见图2硬件框架图所示。
包括MCU芯片1和NOR FLASH芯片2。
其中,MCU芯片1包括:串行FLASH控制器7、数据缓冲区3、算法执行单元4、时钟产生单元5以及FLASH状态获取单元6。
串行FLASH控制器7产生与NOR FLASH芯片2通讯的片选、时钟和数据交互信号。数据缓冲区3作为NOR读操作的数据备份区域。算法执行单元4执行时间优化算法,加速软件代码的运行效率。时钟产生单元5产生NOR FLASH芯片2所需要的时钟。FLASH状态获取单元6自动读取NOR FLASH芯片2的命令执行完成状态,提高软件执行效率。
先分析NOR的物理特性,擦除操作可以将NOR的数据区每个数据位由0变为1。写操作只能将1写为0,而不能将0写为1,并且由于NOR本身只实现256字节的写缓冲区,因此写操作最大长度必须限制在256字节,而且当要实现最大256字节的写操作时,写起始地址必须按照256字节页对齐,否则若没有按照256字节页对齐,就会误覆盖到其它不需要更新的数据区域。读操作则没有以上地址位置和长度限制,可以连续从NOR起始地址一直读到NOR最大结束地址。
数据更新的一个基本原则是只对需要更新的位置进行数据更新,但不允许对其他没有需要更新的区域造成数据误覆盖。一般NOR在数据更新前,假如没有记录当前旧数据区域是否已被擦除过,最好先执行一遍擦除,再写入新数据,以保证数据能正确写入。如果数据更新不是按照起始地址256字节对齐,而且长度也不是以256字节为基数的,则在擦除前,必须先读取旧数据区域以做备份,然后执行擦除,再更新所需要的数据区域,最后将新数据块写入之前被擦除的区域。
不同厂家的NOR通常都支持以下四种擦除命令:
页擦除,固定为256字节的长度,并且NOR的每个页起始地址都是按照256字节对齐。
扇区擦除,固定为4K(4096)字节的长度,并且NOR的每个扇区起始地址都是按照4096字节对齐。
32K块擦除,固定为32K(32768)字节的长度,并且NOR的每个扇区起始地址都是按照32768字节对齐。
64K块擦除,固定为64K(65536)字节的长度,并且NOR的每个扇区起始地址都是按照65536字节对齐。
因此,本发明的实现原理为:当需要进行数据更新时,先确定要更新的NOR数据空间起始地址和结束地址,根据这两个地址,结合算法切割不同的地址长度空间段,对每段地址空间选择最合适的擦除读写命令,根据每段地址空间的更新长度,确认是否需要读操作备份旧数据,最后再执行写操作更新数据。
为使本发明阐述更加清晰,以下实施例将分几个步骤,并结合附图,对整个本发明的步骤进行清楚、完整地描述。
一、实测当前NOR的擦除、写、读时间参数。
由于本实施例是基于软件执行时间维度,而不同厂家不同型号NOR擦写读时间都不完全相同,因此需要先对当前使用的NOR芯片的参数进行实测。为描述清晰和方便下文数据对比参考,本实施例仅以其中一家NOR厂家的实测数据作为阐述。
使用逻辑分析仪对NOR的参数进行实测(为了保证数据一致性,NOR的时钟频率固定为12MHz,采用4线Quad SPI的读写方式),测量可得:
PAGE_ERASE=8.2578毫秒(页擦除)
SECTOR_ERASE=8.2553毫秒(扇区擦除)
BLOCK32K_ERASE=8.2623毫秒(32K块擦除)
BLOCK64K_ERASE=8.2615毫秒(64K块擦除)
PEW=10.097828毫秒(页擦除+写256字节页)
PEWR=10.143738毫秒(页擦除+写256字节页+读256字节页)
SEWR=38.379098毫秒(4K扇区擦除+写整个4K扇区+读整个4K扇区)
B32KEWR=249.228786毫秒(32K块擦除+写整个32K块+读整个32K块)
B64KEWR=490.191058毫秒(64K块擦除+写整个64K块+读整个64K块)
注:为方便下文描述,上述5个参数,E代表擦除,W代表写,R代表读,P代表页,S代表扇区,B32K代表32K块,B64K代表64K块。
二、分析计算分别以单个页、扇区、块为最大边界进行数据更新的时间拐点。
找出分别以单个页、扇区、32K块、64K块为最大边界,边界内分别以数据更新字节数从1递增到256字节,从1递增到4K字节,从1递增到32K字节,从1递增到64K字节,找出时间拐点。
时间拐点表示在某个最大边界内,某种数据更新方法执行时间相比另一种数据更新方法变短或者变长的转换点字节数边界。
2.1)首先是单个页边界,边界内数据更新字节数从1递增到256字节,可以发现当数据更新字节数在1递增到255字节之间,实际数据更新都必须执行整个页擦除、页读备份、页写的操作,因此执行时间为PEWR。当数据更新字节数为256字节时,刚好是整个页,因此可以节省页读备份的操作过程,执行时间为PEW。时间拐点为第256字节。即当单个页内的数据更新字节数在1~255字节时,总执行时间为PEWR;当单个扇区内的数据更新字节数在256字节时,总执行时间为PEW。详细数据见表1《单个页边界字节数与执行时间》。
表1单个页边界字节数与执行时间
字节数目 | 执行时间 |
255[0xff]bytes | 10.143738 |
256[0x100]bytes(时间拐点) | 10.097828 |
2.2)接着是单个扇区边界,边界内数据更新字节数从1递增到4K字节。有两种数据更新方法,一种是按页操作,数据更新字节数分为两部分,第一部分当字节数刚好是整页字节数(256字节)的倍数时,则执行时间为PEW的倍数;当剩余的字节数不足单页字节数时,则执行时间则为1个PEWR。另一种数据更新操作,是按扇区操作,先读备份整个扇区+擦除整个扇区+写更新整个扇区,即为1个SEWR。根据实际计算,拐点刚好在第769个数据,即当单个扇区内的字节数在1~768字节数时,按页操作总执行时间小于按扇区操作;当单个扇区内的字节数在769~4K字节数时,按扇区操作总执行时间小于按页操作。详细数据见表2《单个扇区边界两种数据更新方法执行时间对比》。
表2单个扇区边界两种数据更新方法执行时间对比
注:由于表格较长,篇幅所限,仅列举拐点前后相关变化数据。
2.3)然后是单个32K块边界,边界内数据更新字节数从1递增到32K字节。有两种数据更新方法,一种是按扇区操作,数据更新字节数分为两部分,当字节数刚好是整扇区字节数(4K字节)的倍数时,则执行时间为SEWR的倍数,当剩余的字节数不足单个整扇区字节数时,执行时间则根据上述2.2)提及的单个扇区边界选择执行时间最少的数据更新方法计算。另一种数据更新操作,是按32K块操作,先读备份整个32K块+擦除整个32K块+写更新整个32K块,即为1个B32KEWR。根据实际计算,拐点刚好在第24833个数据,即当单个32K块内的字节数在1~24832字节数时,按扇区操作总执行时间小于按32K块操作;当单个32K块内的字节数在24833~32K字节数时,按32K块操作总执行时间小于按扇区操作。详细数据见表3《单个32K块边界两种数据更新方法执行时间对比》。
表3单个32K块边界两种数据更新方法执行时间对比
字节数 | 按扇区操作执行时间 | 按32K块操作执行时间 |
20737[0x5101]bytes | 212.137056 | 249.228786 |
20992[0x5200]bytes | 212.091146 | 249.228786 |
20993[0x5201]bytes | 222.234884 | 249.228786 |
21248[0x5300]bytes | 222.188974 | 249.228786 |
21249[0x5301]bytes | 230.274588 | 249.228786 |
24577[0x6001]bytes | 240.418326 | 249.228786 |
24832[0x6100]bytes | 240.372416 | 249.228786 |
24833[0x6101]bytes(时间拐点) | 250.516154 | 249.228786 |
25088[0x6200]bytes | 250.470244 | 249.228786 |
25089[0x6201]bytes | 260.613982 | 249.228786 |
25344[0x6300]bytes | 260.568072 | 249.228786 |
25345[0x6301]bytes | 268.653686 | 249.228786 |
28673[0x7001]bytes | 278.797424 | 249.228786 |
28928[0x7100]bytes | 278.751514 | 249.228786 |
28929[0x7101]bytes | 288.895252 | 249.228786 |
29184[0x7200]bytes | 288.849342 | 249.228786 |
29185[0x7201]bytes | 298.99308 | 249.228786 |
29440[0x7300]bytes | 298.94717 | 249.228786 |
29441[0x7301]bytes | 307.032784 | 249.228786 |
注:由于表格较长,篇幅所限,仅列举拐点前后相关变化数据。
2.4)最后是单个64K块边界,边界内数据更新字节数从1递增到64K字节。有两种数据更新方法,一种是按32K块操作,数据更新字节数分为两部分,当字节数刚好是整32K字节数(32K字节)的倍数时,则执行时间为B32KEWR的倍数,当剩余的字节数不足单个整32K块字节数时,执行时间则根据上述2.3)提及的单个32K块边界选择执行时间最少的数据更新方法计算。另一种数据更新操作,是按64K块操作,先读备份整个64K块+擦除整个64K块+写更新整个64K块,即为1个B64KEWR。根据实际计算,拐点刚好在第57601个数据,即当单个64K块内的字节数在1~57600字节数时,按32K块操作总执行时间小于按64K块操作;当单个64K块内的字节数在57601~64K字节数时,按64K块操作总执行时间小于按32K块操作。详细数据见表4《单个64K块边界两种数据更新方法执行时间对比》。
表4单个64K块边界两种数据更新方法执行时间对比
字节数 | 按32K块操作执行时间 | 按64K块操作执行时间 |
57591[0xe0f7]bytes | 489.647112 | 490.191058 |
57592[0xe0f8]bytes | 489.647112 | 490.191058 |
57593[0xe0f9]bytes | 489.647112 | 490.191058 |
57594[0xe0fa]bytes | 489.647112 | 490.191058 |
57595[0xe0fb]bytes | 489.647112 | 490.191058 |
57596[0xe0fc]bytes | 489.647112 | 490.191058 |
57597[0xe0fd]bytes | 489.647112 | 490.191058 |
57598[0xe0fe]bytes | 489.647112 | 490.191058 |
57599[0xe0ff]bytes | 489.647112 | 490.191058 |
57600[0xe100]bytes | 489.601202 | 490.191058 |
57601[0xe101]bytes(时间拐点) | 498.457572 | 490.191058 |
57602[0xe102]bytes | 498.457572 | 490.191058 |
57603[0xe103]bytes | 498.457572 | 490.191058 |
57604[0xe104]bytes | 498.457572 | 490.191058 |
57605[0xe105]bytes | 498.457572 | 490.191058 |
57606[0xe106]bytes | 498.457572 | 490.191058 |
57607[0xe107]bytes | 498.457572 | 490.191058 |
57608[0xe108]bytes | 498.457572 | 490.191058 |
57609[0xe109]bytes | 498.457572 | 490.191058 |
57610[0xe10a]bytes | 498.457572 | 490.191058 |
注:由于表格较长,篇幅所限,仅列举拐点前后相关变化数据。
三、执行时间优化算法。
本实施例的优化算法主要原理是:从上文的实际分析计算可知,当在某个区域(页、扇区、块)内存在执行时间拐点,因此可以按区域由大到小依次按照从64K块、32K块、扇区、页的方式,结合数据更新地址长度和起始结束地址进行分析,找出最优的执行时间。
为描述清晰,优化算法分为以下几个调用函数,TimeEraseCalOptimized函数识别用户输入的起始地址、结束地址、地址长度信息,主要用于先以64K块为单元对地址长度进行识别切分。首先判断地址长度是否属于同个64K块内,若是,则调用CalInHeadTail64k函数进行处理,算法结束;若否,则表示地址长度跨多个64K块,分为头部+中间部+尾部三大块进行处理。具体算法流程图见图3TimeEraseCalOptimized执行流程图。
CalInHeadTail64k处理函数主要对处于单个64K块内输入地址段进行分析,按32K块的单元大小进行识别切分。首先判断地址长度是否超过单个64K块的拐点(上文计算得到的57601),若是,则按上文2.4)提到的单个64K块边界64K块操作方法计算执行时间,算法结束;若否,则判断起始地址、结束地址是否处于同个32K块内。若是,则调用CalInHeadTail32k函数进行处理,算法结束;若否,则表示地址长度跨多个32K块,分为头部+中间部+尾部三大块进行处理。算法流程图见图4CalInHeadTail64k执行流程图。
CalInHeadTail32k处理函数主要对处于单个32K块内输入地址段进行分析,按4K扇区的单元大小进行识别切分。首先判断地址长度是否超过单个32K块的拐点(上文计算得到的24833),若是,则按上文2.3)提到的单个32K块边界32K块操作方法计算执行时间,算法结束;若否,则判断起始地址、结束地址是否处于同个扇区内。若是,则调用CalInHeadTail4k函数进行处理,算法结束;若否,则表示地址长度跨多个扇区,分为头部+中间部+尾部三大块进行处理。算法流程图见图5CalInHeadTail32k执行流程图。
CalInHeadTail4k处理函数主要对处于单个扇区内输入地址段进行分析,按256字节页的单元大小进行识别切分。首先判断地址长度是否超过单个页的拐点(上文计算得到的769),若是,则按上文2.2)提到的单个扇区边界扇区操作方法计算执行时间,算法结束;若否,则判断起始地址、结束地址是否处于同个页内。若是,则进行处理,算法结束;若否,则表示地址长度跨多个页,分为头部+中间部+尾部三大块进行处理。算法流程图见图6CalInHeadTail4k执行流程图。
四、其他常用的执行算法作为对比。
常用的执行算法主要有以下四种:
第一种算法是TimeEraseCalBase256函数,基于256字节的页作为基本单元计算执行时间。算法首先判断起始地址是否非页对齐,若是,则再判断起始地址和结束地址是否属于同个页,若是,则计算页内执行时间,算法结束;若否,则计算首个非页对齐页内执行时间并更新起始地址为下一个页对齐地址。若起始地址为页对齐,则计算剩余的满页执行时间;若最后还有剩余不满整页的数据,则再进行计算。整个算法原理按页作为单元进行地址段划分,同样也会分为头部+中间部+尾部三大块进行处理。算法流程图见图7基于256(TimeEraseCa lBase256)执行流程图。
第二种算法是TimeEraseCalBase4k函数,基于4K字节的扇区作为基本单元计算执行时间。算法首先判断起始地址是否非扇区对齐,若是,则再判断起始地址和结束地址是否属于同个扇区,若是,则调用TimeEraseCalBase256函数计算该扇区内执行时间,算法结束;若否,则调用TimeEraseCalBase256函数计算首个非扇区对齐扇区内执行时间并更新起始地址为下一个扇区对齐地址。若起始地址为扇区对齐,则计算剩余的满扇区执行时间;若最后还有剩余不满整扇区的数据,则再进行计算。整个算法原理按扇区作为单元进行地址段划分,同样也会分为头部+中间部+尾部三大块进行处理。算法流程图见图8基于4K(TimeEraseCalBase4k)执行流程图。
第三种算法是TimeEraseCalBase32k函数,基于32K字节的32K块区作为基本单元计算执行时间。算法首先判断起始地址是否非32K块区对齐,若是,则再判断起始地址和结束地址是否属于同个32K块区,若是,则调用TimeEras eCalBase256函数计算该32K块区内执行时间,算法结束;若否,则调用Time EraseCalBase256函数计算首个非32K块区对齐32K块区内执行时间并更新起始地址为下一个32K块区对齐地址。若起始地址为32K块区对齐,则计算剩余的满32K块区执行时间;若最后还有剩余不满整32K块区的数据,则再进行计算。整个算法原理按32K块区作为单元进行地址段划分,同样也会分为头部+中间部+尾部三大块进行处理。算法流程图见图9基于32K(TimeEraseCalBase32k)执行流程图。
第四种算法是TimeEraseCalBase64k函数,基于64K字节的64K块区作为基本单元计算执行时间。算法首先判断起始地址是否非64K块区对齐,若是,则再判断起始地址和结束地址是否属于同个64K块区,若是,则调用TimeEras eCalBase256函数计算该64K块区内执行时间,算法结束;若否,则调用Time EraseCalBase256函数计算首个非64K块区对齐64K块区内执行时间并更新起始地址为下一个64K块区对齐地址。若起始地址为64K块区对齐,则计算剩余的满64K块区执行时间;若最后还有剩余不满整64K块区的数据,则再进行计算。整个算法原理按64K块区作为单元进行地址段划分,同样也会分为头部+中间部+尾部三大块进行处理。算法流程图见图10基于64K(TimeEraseCalBase64k)执行流程图。
五、几种算法最终软件执行时间实际分析。
下面用不同的起始地址、结束地址、地址长度(地址长度从1随机增加到约52万字节),分别对上述提到的基于256,基于4K,基于32K,基于64K四种常用算法,以及本实施例使用的优化算法进行实际执行时间分析,数据见表5~表7不同地址位置和长度与不同算法的执行时间对比。(因数据较长,为方便阅读,拆成三个表5~表7子表)。绘制成折线图,则见图11几种算法的执行时间对比。
根据上述几个表格以及图11可以得知,本实施例使用的优化算法相比常用的几种算法,随着地址长度的不断增加,执行时间差值越来越大;地址长度越大,越能节省执行时间,并且不受起始地址和结束地址的影响(为了更客观,更通用,表格中起始地址和结束地址取随机任意值)。
进一步分析,本实施例使用的优化算法集合了以上四种常用算法的优点,以实测的时间拐点作为参考,结合切分的地址段配合NOR几种常用的不同区域长度擦除命令,能对用户随机输入的起始地址、结束地址、地址长度选择最优的数据更新执行时间方案。
以上所述仅为本技术方案优化算法的一个实施例,实际应用中,虽然不同厂家不同NOR的实测擦读写时间不同,会造成时间拐点的变化,但该优化算法的设计原理不受影响。
表5不同地址位置和长度与不同算法的执行时间对比
表6不同地址位置和长度与不同算法的执行时间对比(续表5)
地址范围 | 0x0-0x900 | 0xFF-0x1003 | 0x0-0x1000 | 0x1-0x2710 | 0x13-0x4E55 |
地址长度 | 2305 | 3845 | 4097 | 10000 | 20035 |
优化算法 | 38.379098 | 48.522836 | 48.522836 | 115.137294 | 191.89549 |
基于64K | 101.02419 | 171.754896 | 171.708986 | 404.00494 | 797.820232 |
基于32K | 101.02419 | 171.754896 | 171.708986 | 404.00494 | 797.820232 |
基于4K | 101.02419 | 171.754896 | 48.522836 | 280.81879 | 428.261782 |
基于256 | 101.02419 | 171.754896 | 171.708986 | 404.00494 | 797.820232 |
表7不同地址位置和长度与不同算法的执行时间对比(续表6)
上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所要求保护的范围。
Claims (10)
1.一种优化软件执行时间的NOR FLASH数据更新方法,其特征在于,包括以下步骤:
实测当前NOR芯片的擦除、写、读时间参数;
根据所述擦除、写、读时间参数进行分析,得到分别以单个页、单个扇区、单个块为最大边界进行数据更新的时间拐点;
基于所述时间拐点,通过执行时间优化算法对NOR FLASH数据进行更新;
其中,所述时间拐点表示在某个最大边界内,某种数据更新方法执行时间相比另一种数据更新方法变短或者变长的转换点字节数边界。
2.根据权利要求1所述的优化软件执行时间的NOR FLASH数据更新方法,其特征在于,在得到以单个页为最大边界进行数据更新的时间拐点时,包括:
以单个页为最大边界,将边界内数据更新字节数从1递增到256字节,并记录下执行时间,从而确定单个页的时间拐点。
3.根据权利要求1所述的优化软件执行时间的NOR FLASH数据更新方法,其特征在于,在得到以单个扇区为最大边界进行数据更新的时间拐点时,包括:
以单个扇区为最大边界,分别通过第一数据更新方法和第二数据更新方法将边界内数据更新字节数从1递增到4K字节,得到第一执行时间和第二执行时间;
根据所述第一执行时间和所述第二执行时间,确定单个扇区的时间拐点;
其中,在通过第一数据更新方法将边界内数据更新字节数从1递增到4K字节时,包括:
将数据更新字节数分为两部分,当第一部分的字节数刚好是整页字节数的倍数时,得到第一部分扇区时间,当剩余部分的字节数不足单页字节数时,得到第二部分扇区时间,将所述第一部分扇区时间和所述第二部分扇区时间相加得到所述第一执行时间;
在通过第二数据更新方法将边界内数据更新字节数从1递增到4K字节时,包括:
按扇区进行操作,先读备份整个扇区+擦除整个扇区+写更新整个扇区,得到所述第二执行时间。
4.根据权利要求3所述的优化软件执行时间的NOR FLASH数据更新方法,其特征在于,在得到以单个块为最大边界进行数据更新的时间拐点时,包括:
以单个32K块为最大边界,分别通过第三数据更新方法和第四数据更新方法将边界内数据更新字节数从1递增到32K字节,得到第三执行时间和第四执行时间;
根据所述第三执行时间和所述第四执行时间,确定单个32K块的时间拐点;
其中,在通过第三数据更新方法将边界内数据更新字节数从1递增到32K字节时,包括:
将数据更新字节数分为两部分,当第一部分的字节数刚好是整扇区字节数的倍数时,得到第一部分32K块时间,当剩余部分的字节数不足单个整扇区字节数时,则根据所述第一数据更新方法和所述第二数据更新方法分别对所述剩余部分的字节数进行更新,将其中更短的执行时间作为所述剩余部分的字节数的第二部分32K块时间,将所述第一部分32K块时间和所述第二部分32K块时间相加得到所述第三执行时间;
在通过第四数据更新方法将边界内数据更新字节数从1递增到32K字节时,包括:
按32K块进行操作,先读备份整个32K块+擦除整个32K块+写更新整个32K块,得到所述第四执行时间。
5.根据权利要求4所述的优化软件执行时间的NOR FLASH数据更新方法,其特征在于,在得到以单个块为最大边界进行数据更新的时间拐点时,还包括:
以单个64K块为最大边界,分别通过第五数据更新方法和第六数据更新方法将边界内数据更新字节数从1递增到64K字节,得到第五执行时间和第六执行时间;
根据所述第五执行时间和所述第六执行时间,确定单个64K块的时间拐点;
其中,在通过第五数据更新方法将边界内数据更新字节数从1递增到64K字节时,包括:
将数据更新字节数分为两部分,当第一部分的字节数刚好是整32K字节数的倍数时,得到第一部分64K块时间,当剩余部分的字节数不足单个整32K块字节数时,则根据所述第三数据更新方法和所述第四数据更新方法分别对所述剩余部分的字节数进行更新,将其中更短的执行时间作为所述剩余部分的字节数的第二部分64K块时间,将所述第一部分64K块时间和所述第二部分64K块时间相加得到所述第五执行时间;
在通过第六数据更新方法将边界内数据更新字节数从1递增到64K字节时,包括:
按64K块进行操作,先读备份整个64K块+擦除整个64K块+写更新整个64K块,得到所述第六执行时间。
6.根据权利要求5所述的优化软件执行时间的NOR FLASH数据更新方法,其特征在于,在通过执行时间优化算法对NOR FLASH数据进行更新时,包括:
通过TimeEraseCalOptimized函数识别用户输入的起始地址、结束地址、地址长度;
以64K块为单元对所述地址长度进行识别判断;
若所述地址长度属于同个64K块内,则调用CalInHeadTail64k函数进行处理;
若所述地址长度不属于同个64K块内,则将所述地址长度切分为头部、中间部、尾部三大块进行处理。
7.根据权利要求6所述的优化软件执行时间的NOR FLASH数据更新方法,其特征在于,在调用CalInHeadTail64k函数进行处理时,包括:
判断所述地址长度是否超过单个64K块的拐点;
若是,则按照所述第六数据更新方法获取执行时间;
若否,则判断所述起始地址、所述结束地址是否处于同个32K块内,若是,则调用CalInHeadTail32k函数进行处理,若否,则将所述地址长度切分为头部、中间部、尾部三大块进行处理。
8.根据权利要求7所述的优化软件执行时间的NOR FLASH数据更新方法,其特征在于,在调用CalInHeadTail32k函数进行处理时,包括:
判断所述地址长度是否超过单个32K块的拐点;
若是,则按照所述第四数据更新方法获取执行时间;
若否,则判断所述起始地址、所述结束地址是否处于同个扇区内,若是,则调用CalInHeadTail4k函数进行处理,若否,则将所述地址长度切分为头部、中间部、尾部三大块进行处理。
9.根据权利要求8所述的优化软件执行时间的NOR FLASH数据更新方法,其特征在于,在调用CalInHeadTail4k函数进行处理时,包括:
判断所述地址长度是否超过单个页的拐点;
若是,则按照所述第二数据更新方法获取执行时间;
若否,则判断所述起始地址、所述结束地址是否处于同个页内,若是,则进行处理,若否,则将所述地址长度切分为头部、中间部、尾部三大块进行处理。
10.一种优化软件执行时间的NOR FLASH数据更新系统,其特征在于,包括:
MCU芯片,包括:串行FLASH控制器、数据缓冲区、算法执行单元、时钟产生单元、FLASH状态获取单元;所述串行FLASH控制器用于产生与NOR FLASH芯片通讯的片选、时钟和数据交互信号;所述数据缓冲区为用于NOR读操作的数据备份区域;所述算法执行单元用于执行时间优化算法;所述时钟产生单元用于产生所述NOR FLASH芯片所需要的时钟;所述FLASH状态获取单元用于自动读取所述NOR FLASH芯片的命令执行完成状态;
NOR FLASH芯片,通过所述串行FLASH控制器与所述MCU芯片进行连接,用于执行所述MCU芯片所发出的命令;
在执行时间优化算法时,包括:
基于时间拐点,通过执行时间优化算法对所述NOR FLASH芯片的数据进行更新;
所述时间拐点包括:通过实测当前NOR芯片的擦除、写、读时间参数,根据所述擦除、写、读时间参数进行分析,得到分别以单个页、单个扇区、单个块为最大边界进行数据更新的时间拐点。;
其中,所述时间拐点表示在某个最大边界内,某种数据更新方法执行时间相比另一种数据更新方法变短或者变长的转换点字节数边界。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311232111.0A CN117348911A (zh) | 2023-09-22 | 2023-09-22 | 一种优化软件执行时间的nor flash数据更新方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311232111.0A CN117348911A (zh) | 2023-09-22 | 2023-09-22 | 一种优化软件执行时间的nor flash数据更新方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117348911A true CN117348911A (zh) | 2024-01-05 |
Family
ID=89358546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311232111.0A Pending CN117348911A (zh) | 2023-09-22 | 2023-09-22 | 一种优化软件执行时间的nor flash数据更新方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117348911A (zh) |
-
2023
- 2023-09-22 CN CN202311232111.0A patent/CN117348911A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8190811B2 (en) | Defragmentation of solid state memory | |
US6134151A (en) | Space management for managing high capacity nonvolatile memory | |
US6262918B1 (en) | Space management for managing high capacity nonvolatile memory | |
US6477616B1 (en) | Storage device, storage system, memory management method, recording medium, and computer data signal | |
US7610434B2 (en) | File recording apparatus | |
US20110060864A1 (en) | Controller and data storage device | |
KR20050067203A (ko) | 비휘발성 저장 시스템의 평균 소거 카운트 유지 방법 및장치 | |
EP1036364A1 (en) | Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory | |
JPH09185551A (ja) | 半導体記憶装置 | |
US20100169556A1 (en) | Nonvolatile storage device, information recording system, and information recording method | |
KR20050070091A (ko) | 소거 카운트 블록을 유지하는 방법 및 장치 | |
TW200905685A (en) | Memory apparatus, and method of averagely using blocks of a flash memory | |
JP2003150447A (ja) | キャッシュ・バッファ制御方法及び制御装置 | |
CN110377233B (zh) | Ssd读性能优化方法、装置、计算机设备及存储介质 | |
TWI790383B (zh) | 資料儲存裝置與資料處理方法 | |
CN111061649B (zh) | 一种存储器的存储空间自适应分配方法 | |
CN111949220A (zh) | 存储设备异常断电恢复方法及存储设备 | |
CN112612418B (zh) | 一种用于大容量NandFlash坏块管理的方法及系统 | |
CN106095332A (zh) | 一种数据重删方法及装置 | |
CN115269451A (zh) | 闪存垃圾回收方法、装置及可读存储介质 | |
CN115639971A (zh) | 数据写入方法、装置、电子设备、存储介质及程序产品 | |
CN112347001B (zh) | 闪存垃圾回收的校验方法、装置及电子设备 | |
CN117348911A (zh) | 一种优化软件执行时间的nor flash数据更新方法及系统 | |
CN111338562B (zh) | 数据存储装置与数据处理方法 | |
CN116185563A (zh) | 一种基于车规级微控制器数据闪存的软件模拟算法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |