norflash启动和nandflash启动
来源:互联网 发布:工业机器人编程 编辑:程序博客网 时间:2024/05/30 23:03
S3C2440的启动时读取的第一条指令是在0x00上,分为成nand flash和nor flash上启动。
1)nand flash:适合大容量数据存储,类似硬盘;
2)nor flash:适合小容量的程序或数据存储,类似小硬盘;
3)sdram:主要用于程序执行时的程序存储、执行或计算,类似内存。
Nor flash的有自己的地址线和数据线,可以采用类似于memory的随机访问方式,在nor flash上可以直接运行程序,所以nor flash可以直接用来做boot,采用nor flash启动的时候会把地址映射到0x00上。
Nand flash是IO设备,数据、地址、控制线都是共用的,需要软件区控制读取时序,所以不能像nor flash、内存一样随机访问,不能EIP(片上运行),因此不能直接作为boot。
NANDFlash启动: NANDFlash控制器自动把nandflash存储器的前4K载到Steppingstone(内部SRAM缓冲器),并把0x00000000S设置为内部SRAM的起始地址,cpu从内部SRAM的0x00000000开始启动,这个过程不需要程序干涉。(cpu会自动从NAND flash中读取前4KB的数据放置在片内SRAM里(s3c2440是soc),同时把这段片内SRAM映射到nGCS0片选的空间(即0x00000000)。cpu是从0x00000000开始执行,也就是NAND flash里的前4KB内容。因为NAND FLASH连地址线都没有,不能直接把NAND映射到0x00000000,只好使用片内SRAM做一个载体。通过这个载体把nandflash中大代码复制到RAM(一般是SDRAM)中去执行)。
程序员要完成的工作是把最核心的代码放在nandflash的前4K中。4K代码要完成S3C2440的核心配置以及启动代码(U-boot)的剩余部分拷贝到SDRAM中。这4K的启动代码需要将NANDFlash中的内容复制到SDRAM中执行。NANDFlash的前4K空间放启动代码,SDRAM速度较快,用来执行主程序的代码。ARM一般从ROM或Flash启动完成初始化,然后将应用程序拷贝到RAM,然后跳到RAM执行。
NORflash启动:支持XIP即代码直接在NOR Flash上执行,无需复制到内存中。这是由于NORFlash的接口与RAM完全相同,可随机访问任意地址数据。NORflash速度快,数据不易失,可作为存储并执行起到代码和应用程序的存储器,norflash可像内存一样读操作,但擦初和写操作效率很低,远不及内存,一般先在代码的开始部分使用汇编指令初始化外接的的内存部件(外存SDRAM),最后跳到外存中继续执行。对于小程序一般把它烧到NAND Flash中,借助cpu内部RAM(SRAM)直接运行。
Nor Flash被映射到0x00000000地址(就是nGCS0,这里就不需要片内SRAM来辅助了,所以片内SRAM的起始地址还是0x40000000). 然后cpu从0x00000000开始执行(也就是在Norfalsh中执行)。
NORflash速度快,数据不易失,可作为存储并执行起到代码和应用程序的存储器,norflash可像内存一样读操作,但擦初和写操作效率很低,价格很昂贵。SDRAM和nandflash的价格比较适中。根据这些特点,一些人产生了这样一种想法:外部nandflash中执行启动代码,SDRAM中执行主程序。NANDFlash控制器自动把nandflash存储器的前4K载到Steppingstone(内部SRAM缓冲器),并把0x00000000S设置为内部SRAM的起始地址,cpu从内部SRAM的0x00000000开始启动,这个过程不需要程序干涉。这4K的启动代码需要将NANDFlash中的内容复制到SDRAM中执行。NANDFlash的前4K空间放启动代码,SDRAM速度较快,用来执行主程序的代码。ARM一般从ROM或Flash启动完成初始化,然后将应用程序拷贝到RAM,然后跳到RAM执行。
转载自:暴风lay的ChinaUnix博客
- NORFLASH和NANDFLASH启动
- Nandflash 和 Norflash 启动
- norflash启动和nandflash启动
- norflash启动和nandflash启动
- Norflash启动和nandflash启动
- norflash启动和nandflash启动
- norflash启动和nandflash启动
- norflash启动和nandflash启动
- nandflash启动 和 norflash启动
- Norflash和Nandflash启动区别
- 【转载】NORFLASH和NANDFLASH启动
- UBOOT如何从norflash和nandflash启动
- 2440的nandflash启动和norflash启动的区别
- Arm nandflash&norflash启动原理
- Nandflash启动,norflash启动,SDRAM总结
- NorFlash和NandFlash有什么区别?为什么一般我们的Uboot要从NorFlash启动呢?
- arm9 norflash与nandflash启动过程分析
- arm9 norflash与nandflash启动过程分析
- windows环境下FFmpeg配置—— php生成视频缩略图,转换视频函数
- LeetCode Find Peak Element
- 轮廓的匹配
- 归并排序的Python实现
- 彩色图像--色彩空间 HSI(HSL)、HSV(HSB)
- norflash启动和nandflash启动
- 创建Hbase索引表之在eclipse上运行与直接在hadoop集群上运行的程序编写的差异
- C++之多线程编程互斥锁-四
- ABAP模块-查找系统出口或BADI的方法
- java中接口的定义与实现
- 浏览器兼容性调试集锦
- Leetcode: Repeated DNA Sequence
- Android Fragment实用方法及交互实例
- Hibernate与JDBC的区别