- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
闪存管理的基本知识
闪存是一种电可擦除的存储器,通常主要用于读操作,也就是说,虽 然是可写的,但它不希望很频繁地更新数据,因此对这种存储器的操作大部分是读操作。大多数闪存器件是以字(word)为单位写入数据的,但一次只能擦除整个块。这使得它们不适用于频繁变化的存储应用,只适合存储那些永远不变的常数表。
一共有两种闪存:NAND 闪存和NOR 闪存。NAND 闪存经常用于存储卡和闪盘。一般来说,从NAND 器件读取数据需要几个周期,并且大部分是用串行方式完成的。
因此 NAND 闪存不适于存储程序代码,因为存取时间太长。而NOR 闪
存更像是传统的字节或字宽的存储器。可以像读ROM 器件那样读NOR 闪存中的数据:使片选和地址线有效,然后等待一段访问时间后从总 线上读取数据。
闪存块通常被擦除到“1”状态,因此经过擦除后,块中的每个 位置都是 0xFFFF。“编程”一个闪存位置是把某些位从“1”状态改变为“0”状态。为了使编程过的位返回到“1”状态,整个块必须被擦除。
任何电可擦除的存储器件都面临寿命的问题。根据所用技术的 不同,一个闪存单元在永久失效以前可以承受的擦除-编程次数少则1000 次,多则 100 万次。使用闪存存储数据的任何方案都必须确保写入次数在整个单元阵列上获得均匀分布,没有一个位置会出现太多 的擦除和编程次数。
大多数闪存器件都允许将前次编程中那些未被编程的位从“1” 改为“0”状态。例如,大多数器件允许用0xFFFE 编程过的那个位置再用 0x7FFE 进行编程,因为这种操作不会将任何位从“0”改变到“1”。然而如图1 所示的处理器架构中使用的闪存不允许这样做。这种写入操作的结果是失败,内存中的数据仍然是0xFFFE。
理由很简单:因为要被编程的存储块主要用作代码空间,通常禁 止对前面写过的位置作任何写操作。因为指令0xFFFF 代表的是无效的源子译码(source sub-decode),不可能出现在有效的代码块中。这样,阻止向以前编过程的位置写入数据有助于保持代码块的完整性。
文档评论(0)