RAM, SDRAM ,ROM, NAND FLASH, NOR FLASH

 

 

RAM, SDRAM ,ROM, NAND FLASH, NOR FLASH_第1张图片

在看上面2440的内存映射的时候,对其中的有些名字,不是完全太懂,所以到网上找了相关的信息。

对于mini2440来说,SDRAM,即内存,程序运行时的地方。选择连接SDRAM的为bank6。

1)S3C2440 支持两种启动模式:一种是从 Nand Flash 启动;一种是从Nor Flash启动。在此两种启动模式下,各个片选的存储空间分配是不同的,
2)左面时nGCS0片选的Nor Flash启动模式下的存储分配图,右边是Nand Flash启动模式下的存储分配图,这里要注意,nGCS0片选的空间在不同的启动模式下,映射的器件是不一样的:

当在Nand Flash启动模式下,内部的4K Byte BootSram被映射到nGCS0片选的空间, 这4k的内存为SRAM。
当在Nor Flash启动模式下(非Nand Flash启动模式),与nGCS0相连的外部存储器Nor Flash就被映射到nGCS0片选空间。

3)地址空间,共1GB,8个Bank区,每区128M,6个bank可以做ROM SRAM类型存储器bank
剩下2个可以作ROM,SRAM SDRAM等类型存储器bank
4)出了BANK0(只能是16/32位宽)之外,其他bank都具有可编程的访问大小(可以是8/16/32位款)
5)其中7个固定的存储器bank的起始地址,最后一个bank的起始地址时可编程的
6)最后两个bank的大小时可编程的
7)所有存取bank的访问周期都是可编程的
8)支持SDRAM的自刷新和掉电模式
9)总线访问周期可以通过插入外部wait来延长。
10) 可以通过软件选择,小/大端

11:s3c2440支持两种启动模式:NAND和非NAND(这里是nor flash)。
具体采用的方式取决于OM0、OM1两个引脚
OM[1:0]所决定的启动方式
OM[1:0]=00时,处理器从NAND Flash启动
OM[1:0]=01时,处理器从16位宽度的ROM启动
OM[1:0]=10时,处理器从32位宽度的ROM启动。
OM[1:0]=11时,处理器从Test Mode启动。

12)当从NAND启动时

cpu会自动从NAND flash中读取前4KB的数据放置在片内SRAM里(s3c2440是soc),同时把这段片内SRAM映射到nGCS0片选的空间(即0x00000000)。cpu是从0x00000000开始执行,也就是NAND flash里的前4KB内容。因为NAND FLASH连地址线都没有,不能直接把NAND映射到0x00000000,只好使用片内SRAM做一个载体。通过这个载体把nandflash中大代码复制到RAM(一般是SDRAM)中去执行

以上内容来自S3C2440的数据手册。

RAM有两大类,
一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲。
另一种称为动态RAM(Dynamic RAM/DRAM),DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的。
SRAM:静态随机存储器,就是它不需要刷新电路,不像动态随机存储器那样,每隔一段时间就要刷新一次数据。但是他集成度比较低,不适合做容量大的内存,一般是用在处理器的缓存里面。像S3C2440的ARM9处理器里面就有4K的SRAM用来做CPU启动时用的。
SDRAM:同步动态随机存储器,像电脑的内存就是用的这种RAM叫DDR SDRAM。其集成度非常高,因为是动态的,所以必须有刷新电路,每隔一段时间必须得刷新数据。其存储单元不是按线性排列的,是分页的。一般的嵌入式产品里面的内存都是用的SDRAM。
Mini2440 使用了两片外接的32M bytes 总共64M bytes 的SDRAM 芯片。

内存工作原理:

内存是用来存放当前正在使用的(即执行中)的数据和程序,我们平常所提到的计算机的内存指的是动态内存(即DRAM),动态内存中所谓的"动态",指的是当我们将数据写入DRAM后,经过一段时间,数据会丢失,因此需要一个额外设电路进行内存刷新操作。

具体的工作过程是这样的:一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因;刷新操作定期对电容进行检查,若电量大于满电量的1/2,则认为其代表1,并把电容充满电;若电量小于1/2,则认为其代表0,并把电容放电,藉此来保持数据的连续性。

ROM:只读存储器的总称。
PROM:可编程只读存储器,只能写一次,写错了就得报废,现在用得很少了,好像那些成本比较低的OPT单片机里面用的就是这种存储器吧。
EPRM:没见过,不知道什么东西。网上也找不到相关的东西。是EPROM吧?
EPROM:可擦除可编程存储器,这东西也比较古老了,是EEPROM的前身,在芯片的上面有个窗口,通过紫外线的照射来擦除数据。非常之麻烦。
EEPROM:电可擦除可编程只读存储器,比之EPROM就先进点了,可以用电来擦除里面对数据,也是现在用得比较多的存储器,比如24CXX系列的EEPROM。
NANDFLASH和NORFLASH都是现在用得比较多的非易失性闪存。
NOR采用的并行接口,其特点读取的速度比之NAND快乐很多倍,其程序可以直接在NOR里面运行。但是它的擦除速度比较慢,集成度低,成本高的。现在的NOR的容量一般在2M左右,一般是用在代码量小的嵌入式产品方面。还有就是在ARM9的开发板上可以看见。
而NAND呢,采用的是串行的接口,CPU从里面读取数据的速度很慢,所以一般用NAND做闪存的话就必须把NAND里面的数据先读到内存里面,然后CPU才能够执行。就跟电脑的硬盘样的。但是它的集成度很高,我的ARM9的开发板上面一块256M的NAND还没有一块2M的NOR的一半大,所以成本很低。还有就是它的擦除速度也的NOR要快。要不然的话那就真的悲剧了,假如擦除一块2M的NOR要一分钟,如果NAND的擦除速度比NOR还要慢,那擦除一块256M的NAND不是要几个小时。
NAND一般是用在那些要跑大型的操作系统的嵌入式产品上面,比如LINUX啊,WINCE啊。NOR可是可以跑,可以把LINUX操作系统剪裁到2M以内,一个产品难道只去跑系统吗?用户的应用程序呢!其实很多时候,一个嵌入式产品里面,操作系统占的存储空间只是一小部分,大部分都是给用户跑应用程序的。就像电脑,硬盘都是几百G,可是WINDOWNS操作系统所占的空间也不过几G而已。

NOR Flash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NOR FLASH里面的代码,这样可以减少SRAM的容量从而节约了成本。

NAND Flash没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash比较廉价。用户不能直接运行NAND Flash上的代码,因此好多使用NAND Flash的开发板除了使用NAND Flah以外,还作上了一块小的NOR Flash来运行启动代码。

Nand Flash 不具有地址线,它有专门的控制接口与CPU 相连,数据总线为8-bit,但这并不意味着Nand Flash 读写数据会很慢。大部分的优盘或者SD 卡等都是Nand Flash 制成的设备。

你可能感兴趣的:(编程,Flash,嵌入式,存储,产品,WinCE)