文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档> Nor flash 与 Nand flash 的理解

Nor flash 与 Nand flash 的理解

时间:2010-10-25  来源:summersunboy

1. Nor flash 与 Nand flash 的理解

一般的理解:
    Nor flash 与 Nand flash 写操作 相同: 不能直接写
    Nor 与 Nand 读操作 不同: Nor 可以直接读,Nand 不能直接读

更深入的理解:
NOR flash有自己的数据和地址总线,因此可以采用类似RAM的随机访问(片上运行execute in place即EIP),并且数据读取速度快,所以一般用Nor flash作bootloader。

NAND flash的采用了i/o方式读取,他只有8位的数据地址共用的总线,因此需要软件去控制读取时序,因此不能像NOR flash那样直接连到地址和数据总线上,即不能像内存那样访问,因此不能EIP,因此不能直接作为boot之用。NAND适合用来作大量数据存储的。

补充说明:
1. 对于Nor flash 芯片内执行这个叫法,其实并不确切,并不是所有的指令都可以在Nor Flash运行,像 sdr 指令在Nor Flash上执行就会出错。

2. 如果从程序段的角度来理解,nor flash 中只能执行程序的text段,可以用 rodata段,而不能使用程序的 rwdata段,不能改变rwdata段中的数值。



附程序:
/*
* 无论是从NOR Flash还是从NAND Flash启动,
* 地址0处为指令"b Reset", 机器码为0xEA00000B,
* 对于从NAND Flash启动的情况,其开始4KB的代码会复制到CPU内部4K内存中,
* 对于从NOR Flash启动的情况,NOR Flash的开始地址即为0。
* 对于NOR Flash,必须通过一定的命令序列才能写数据,
* 所以可以根据这点差别来分辨是从NAND Flash还是NOR Flash启动:
* 向地址0写入一个数据,然后读出来,如果没有改变的话就是NOR Flash
*/

int bBootFrmNORFlash(void)
{

        volatile unsigned int *pdw = (volatile unsigned int *)0;
        unsigned int dwVal;

        dwVal = *pdw;
        *pdw = 0x12345678;
        if (*pdw != 0x12345678)
        {
                return 1;
        }
        else
        {
                *pdw = dwVal;
                return 0;
        }
}


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载