全部博文(83)
分类: 服务器与存储
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个独立的区域,每个区包括一个或多个块,能够被独立的保护或再编程。
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缓存。然而,一些设备提供了边写边读的特性,允许度一个块的同时擦写另一个不同的块。