Nand Flash与Nor Flash启动的区别——s3c2440
2013-10-11 12:42
411 查看
S3C2440启动时读取的第一条指令是在0x00000000地址上的,分为Nand Flash与Nor Flash两种启动方式。
S3C2440总共有8个内存banks:
6个内存bank可以当作ROM或者SRAM来使用;
留下的2个bank除了当作ROM 或者SRAM,还可以用SDRAM(各种内存的读写方式不一样);
7个bank的起始地址是固定的,还有一个灵活的bank的内存地址,并且bank大小也可以改变。
一.Nand Flash:是I/O设备,数据线、地址线和控制线复用,需要软件控制读取。CPU不能随机访问,访问的时候是按页(512B)读取,不能运行程序,不能直接从Nand Flash启动。
二.Nor Flash:有自己的地址线和控制线,CPU可以随机访问,可以运行程序。
1.在Nor Flash启动的时候
片选0(SROM nGCS0)中存放的是2M的Nor Flash,片选6中存放的是内存,内存的起始地址是片选6的起始地址(0x3000_0000)。 代码直接在Nor Flash上执行,无需复制到内存中。这是由于NOR Flash的接口与RAM完全相同,可随机访问任意地址数据。Nor flash速度快,数据不易失,可作为存储并执行起到代码和应用程序的存储器,Nor flash可像内存一样读操作,但擦初和写操作效率很低,远不及内存,一般先在代码的开始部分使用汇编指令初始化外接的的内存部件(外存SDRAM),最后跳到外存中继续执行。对于小程序一般把它烧到NAND
flash中,借助CPU内部RAM(SRAM)直接运行。
Nor flash被映射到0x00000000地址(就是nGCS0,这里就不需要片内SRAM来辅助了,所以片内SRAM的起始地址还是0x40000000). 然后CPU从0x00000000开始执行(也就是在Nor falsh中执行)。
2.在Nand Flash启动的时候
内部的4K字节的BootSram被映射到片选0(SROM nGCS0)。Nand Flash控制器自动把nand flash存储器的前4K载到Steppingstone(内部SRAM缓冲器,大小只有4K),并把0x00000000设置为内部SRAM的起始地址,CPU从内部SRAM的0x00000000开始启动,这个过程不需要程序干涉。(cpu会自动从Nand flash中读取前4KB的数据放置在片内SRAM里(s3c2440是soc),同时把这段片内SRAM映射到nGCS0片选的空间(即0x00000000)。cpu是从0x00000000开始执行,也就是Nand flash里的前4KB内容。因为Nand Flash连地址线都没有,不能直接把Nand 映射到0x00000000,只好使用片内SRAM做一个载体。通过这个载体把Nand flash中大代码复制到RAM(一般是SDRAM)中去执行)。
程序员要完成的工作是把最核心的代码放在nand flash的前4K中。4K代码要完成S3C2440的核心配置以及将启动代码(U-boot)的剩余部分拷贝到SDRAM中。
这4K的启动代码需要将Nand Flash中的内容复制到SDRAM中执行。Nand Flash的前4K空间放启动代码,SDRAM速度较快,用来执行主程序的代码。ARM一般从ROM或Flash启动完成初始化,然后将应用程序拷贝到RAM,然后跳到RAM执行。
S3C2440总共有8个内存banks:
6个内存bank可以当作ROM或者SRAM来使用;
留下的2个bank除了当作ROM 或者SRAM,还可以用SDRAM(各种内存的读写方式不一样);
7个bank的起始地址是固定的,还有一个灵活的bank的内存地址,并且bank大小也可以改变。
一.Nand Flash:是I/O设备,数据线、地址线和控制线复用,需要软件控制读取。CPU不能随机访问,访问的时候是按页(512B)读取,不能运行程序,不能直接从Nand Flash启动。
二.Nor Flash:有自己的地址线和控制线,CPU可以随机访问,可以运行程序。
1.在Nor Flash启动的时候
片选0(SROM nGCS0)中存放的是2M的Nor Flash,片选6中存放的是内存,内存的起始地址是片选6的起始地址(0x3000_0000)。 代码直接在Nor Flash上执行,无需复制到内存中。这是由于NOR Flash的接口与RAM完全相同,可随机访问任意地址数据。Nor flash速度快,数据不易失,可作为存储并执行起到代码和应用程序的存储器,Nor flash可像内存一样读操作,但擦初和写操作效率很低,远不及内存,一般先在代码的开始部分使用汇编指令初始化外接的的内存部件(外存SDRAM),最后跳到外存中继续执行。对于小程序一般把它烧到NAND
flash中,借助CPU内部RAM(SRAM)直接运行。
Nor flash被映射到0x00000000地址(就是nGCS0,这里就不需要片内SRAM来辅助了,所以片内SRAM的起始地址还是0x40000000). 然后CPU从0x00000000开始执行(也就是在Nor falsh中执行)。
2.在Nand Flash启动的时候
内部的4K字节的BootSram被映射到片选0(SROM nGCS0)。Nand Flash控制器自动把nand flash存储器的前4K载到Steppingstone(内部SRAM缓冲器,大小只有4K),并把0x00000000设置为内部SRAM的起始地址,CPU从内部SRAM的0x00000000开始启动,这个过程不需要程序干涉。(cpu会自动从Nand flash中读取前4KB的数据放置在片内SRAM里(s3c2440是soc),同时把这段片内SRAM映射到nGCS0片选的空间(即0x00000000)。cpu是从0x00000000开始执行,也就是Nand flash里的前4KB内容。因为Nand Flash连地址线都没有,不能直接把Nand 映射到0x00000000,只好使用片内SRAM做一个载体。通过这个载体把Nand flash中大代码复制到RAM(一般是SDRAM)中去执行)。
程序员要完成的工作是把最核心的代码放在nand flash的前4K中。4K代码要完成S3C2440的核心配置以及将启动代码(U-boot)的剩余部分拷贝到SDRAM中。
这4K的启动代码需要将Nand Flash中的内容复制到SDRAM中执行。Nand Flash的前4K空间放启动代码,SDRAM速度较快,用来执行主程序的代码。ARM一般从ROM或Flash启动完成初始化,然后将应用程序拷贝到RAM,然后跳到RAM执行。
相关文章推荐
- s3c2440上的nor flash启动与nand flash启动的区别
- s3c2440上的nor flash启动与nand flash启动的区别
- S3C2440 flash 分区 nor nand FLASH区别(开发板启动时) 及 结构
- S3C2440的内存情况在NAND FLASH或者NOR FLASH启动的情况下
- mini2440的nor flash与nand flash启动过程区别
- nor flash与nand flash启动过程区别
- 关于nor flash和nand flash启动过程区别
- nor flash 与 nand flash 启动过程的区别
- nor flash启动与nand flash启动的区别
- nor flash启动与nand flash启动的区别
- 2440 nor flash启动和nand flash启动有什么区别
- nor flash启动与nand flash启动的区别
- nor flash启动与nand flash启动的区别
- nor flash启动与nand flash启动的区别
- Nand Flash和Nor Flash 启动区别
- nor flash启动与nand flash启动的区别
- nor flash启动与nand flash启动的区别
- nor flash启动与nand flash启动的区别
- Nand Flash和Nor Flash 启动区别
- 2440的nor flash与nand flash启动过程区别