我现在的工作是要实现spiflash驱动,达到的效果是:我可以使用fireware把tra和os固化到spiflash的某一个位置上去,然后呢,在运行的时候,tra可以正常的把os搬移到内存中去运行起来。
那么第一步,了解spi-flash便是重中之重。这一点我可以通过分析spiflash、norflash、nandflash之间的异同来了解,达到触类旁通的结果。因此便在网上查阅相关资料供自己学习和参考,也就有了下面几篇文章。
首先,spiflash、norflash、nandflash都是Flash Memory,快闪存储器,是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器。这种科技主要用于一般性数据存储,以及在电脑与其他数字产品间交换传输数据,如储存卡与U盘。闪存是非易失性的存储器,所以单就保存数据而言, 它是不需要消耗电力的。
与硬盘相比,闪存也有更佳的动态抗震性。这些特性正是闪存被移动设备广泛采用的原因。闪存还有一项特性:当它被制成储存卡时非常可靠,即使浸在水中也足以抵抗高压与极端的温度。闪存的写入速度往往明显慢于读取速度。
norflash和nandflash是现在市场上两种主要的非易失闪存技术,Intel于1988年首先开发出norflash技术,彻底改变了原先由EPROM(electrically programmable read-only-memory电可编程只读存储器)和EEPROM(electrically erasable programmable read-only memory)一统天下的局面。紧接着,1989年,东芝发表了nandflash结构,强调降低每比特的成本,有更高的性能,并且向磁盘一样可以通过接口轻松升级。
norflash的特点是芯片内执行(xip,execute in place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统ram中。nor的传输效率很高,在1-4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了到它的性能。
nandflash的结构能提供极高的单元密度,可以达到搞存储密度,冰鞋写入和擦除的速度也很快。应用nand的困难在于flash的管理和需要特殊的系统接口。通常读取nor的速度比nand稍快一些,而nand的写入速度比nor快很多。
NandFlash器件使用复杂的I/O口来串行地存取数据,8个引脚用来传送控制、地址和数据信息。由于时序较为复杂,所以一般CPU最好集成NAND控制器。另外由于NandFlash没有挂接在地址总线上,所以如果想用NandFlash作为系统的启动盘,就需要CPU具备特殊的功能,如s3c2440在被选择为NandFlash启动方式时会在上电时自动读取NandFlash的4k数据到地址0的SRAM中。如果CPU不具备这种特殊功能,用户不能直接运行NandFlash上的代码,那可以采取其他方式,比如好多使用NandFlash的开发板除了使用NandFlash以外,还用上了一块小的NorFlash来运行启动代码。