Chinaunix首页 | 论坛 | 博客
  • 博客访问: 792077
  • 博文数量: 83
  • 博客积分: 7030
  • 博客等级: 少将
  • 技术积分: 1097
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-06 15:50
文章分类

全部博文(83)

文章存档

2011年(2)

2010年(9)

2009年(56)

2008年(16)

我的朋友

分类: 服务器与存储

2008-07-15 12:45:50

非易失性可编程Flash ROM 拥有比一次性编程存储器(例如EPROM)更多的优势。最明显的是不用物理上更换芯片就能够在已售出的嵌入式设备上实现软件升级。Flash ROM 还能够为参数数据提供非易失性存储,例如定制产品设置和配置信息。

更多的Flash ROM在读操作的时候更像一个一般的只读存储器。但写操作你要注意到它的根本体系结构。

请注意不同的产品存在差异,所以在使用Flash ROM时一定要精读数据表格得到精确的信息。

块结构

一个Flash ROM通常被分为很多块或扇区(例如64KB块)每个块可以被单独的擦除,在写入,以及保护不被意外的擦除或重编程。你不能对块中的单个字节编程除非先擦除整个块。Flash ROM需要特殊的软件次序来控制擦写和块保护。

理解块的体系结构可以让你知道代码在Flash ROM中的位置。Flash ROM最小被分为3个独立的区域,每个区包括一个或多个块,能够被独立的保护或再编程。

  • 启动块包括一个小的启动装载程序来初始化CPU
  • 参数块存储非易失性定制数据,例如用户设置
  • 主块存储应用的代码和数据段
块保护

Flash ROM 提供块保护来防止对单独存储块的意外擦除和写入。保护形式由软件锁定,硬件锁定以及二者的结合。

  • 软件锁定和解锁是通过Flash ROM 中的寄存器写入实现的。它允许单独块的擦除和写入。
  • 硬件锁定和解锁需要外部设备的交互,例如通过硬件跳线为一个外部管脚提供一个电压。硬件锁通常只用于重要的启动块。
启动块

启动块中的启动装载代码的角色非常关键。除了启动CPU,它还能擦除和再编程整个Flash ROM,不论其余的Flash ROM是空的还是被破坏的。

这样的破坏一边由于升级主块失败,或者在升级的时候掉电。主块的破坏还是能够处理的事件,而启动块的破坏将导致嵌入式设备不能启动或恢复。因此启动块需要特殊对待,包括硬锁保护,大多数的Flash ROM能够保护该区域的意外破坏。

一旦设备产品被初始化,就将启动代码限制为只读是一种非常好的方法。客户端对启动块的任何解锁和再编程尝试都可能意外地导致嵌入式产品的不可用。

顶部和底部启动设备

启动代码和定制数据的大小一般比标准块小很多,为了避免浪费宝贵的空间,很多Flash ROM把第一块或最后一块分割为更小的子块,例如8KB。这是你更好的控制这些块的内容。

依赖于启动代码在ROM中的所在位置,这些设备有两种风格:顶部启动和底部启动设备。这取决于CPU在重启动/加电后从哪里获取指令:不论是存储空间顶部(例如Intel)或者存储空间底部(例如Motorola)。一些Flash ROM 可通过外部端脚来配置顶部或底部启动。
举例说明top和bottom的区别:

总结


   总结:Top boot类型的Flash的小块(block)放在高地址位上,而Bottom boot类型的flash的小块(block)起始位置为0x000000.




边写边读

很多Flash ROM不能边写边读。这意味着当你再编程的时候不能从Flash ROM中执行任何代码。这包括擦写的同时可能调用中断程序,再编程期间采用系统内存和/或CPU缓存。然而,一些设备提供了边写边读的特性,允许度一个块的同时擦写另一个不同的块。

阅读(6340) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-03-04 22:05:39

路过。。。。。。。。。。。。。。

chinaunix网友2008-12-22 16:52:36

很有用,谢谢!