Chinaunix首页 | 论坛 | 博客
  • 博客访问: 994176
  • 博文数量: 200
  • 博客积分: 5011
  • 博客等级: 大校
  • 技术积分: 2479
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 15:07
文章分类

全部博文(200)

文章存档

2009年(12)

2008年(190)

我的朋友

分类: LINUX

2008-07-02 14:13:24

    严格说NOR flash有自己的数据和地址总线,因此可以采用类似RAM的随机访问,因此是可以直接在它上面运行程序的,因此NOR flash是可以用来boot的。这种片上运行叫做execute in place即EIP。
    NAND flash的采用了i/o方式读取,他只有8位的数据地址共用的总线,因此需要软件去控制读取时序,因此不能像NOR flash那样直接连到地址和数据总线上,即不能像内存那样访问,因此不能EIP,因此不能直接作为boot之用。
    而像s3c2410之所以可以将loader代码烧在NAND上从而boot,是由于s3c2410有一个内置的SRAM,叫做stepping stone.当加电后,可以自动将NAND的起始4k的内容拷贝到SRAM里,然后在RAM里执行,将NAND里的代码拷贝至SDRAM.也就是说我们就可以将一个小于4k的loader烧至NAND flash上就可以了。
    此外还可以不采用这种功能,而是将loader代码烧在另外的ROM里,直接在ROM里运行loader将代码由NAND拷贝至SDRAM。
    此外还有一种技术叫code shadowing,代码影射,即加电后自动将NAND的前面代码拷贝到SDRAM里,这种 机制可以用软件或者硬件来实现。如果用软件,那么就需要有个ROM来保存执行code shadowing的代码,此时这就跟上面的在ROM里面保存loader的意义相似了。如果用硬件来实现code shadowing也可以,就需要真正的电路来实现。
    一般来说,如果有NOR flash我们就用NOR flash比较好,可以EIP.
    NOR flash本来就是适合做代码存储并EIP的,读取速度快吗。NAND本来就是适合用来作大量数据存储的。
阅读(1541) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~