Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11433
  • 博文数量: 3
  • 博客积分: 130
  • 博客等级: 入伍新兵
  • 技术积分: 40
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-06 16:44
文章分类

全部博文(3)

文章存档

2009年(3)

我的朋友
最近访客

分类:

2009-03-10 19:16:00

       一周前写完nand flash驱动,想想刚写这个驱动的时候,都不知道从哪里入手,相信很多网友也曾经有过这个状态。写出来共享,希望大家能用到。

       我用的是三星的nand flash 32M的。其他的也差不多!

      首先当然是看flash芯片文档,不要想回避英文,必须面对的。如果感觉看不习惯,可以先上网查一下nand flash的应用的论文,里面肯定有相关的资料,看看flash是如何工作的,以便之后看flash英文文档时候,有一个重点。

      在我看来,看nand flash文档首先要意识到nandflash是有坏block的,然后理解nand flash芯片的内部结构,大概可以把nandflash看成一个长方体,每个横截面都是一个页。32个页表示一个block。很多个block就组成了一个flash。而这个页的宽表示一个字节,由一个个bit组成的字节。页的长呢,就是表示一个页共有多少个字节。这个长的0~255是first区,256~511是second 区,还有一个备用区。

       然后对写代码有用的就是读写操作过程,比如读吧,就是往里送一个命令,然后就在相应的引脚上等一个小时间,就可以读到数据了。需要注意的是,读也好 写也好,最后是需要有一个不短的延迟,才能写成功。这点需要在你的flash文档里找到,一定要去找,比如我的用的是32M的,就要找出10us,2ms等是时间,这个时间是写页的时间,擦除的时间。写代码的时候,一定要延迟这么长时间,才能写进入或者擦除成功。否则肯定失败。

        除了延迟外,其他读写操作就是模拟时序了,这个不用我说,只要写过驱动,都知道。

      值得注意的是,这次调试驱动,是用C写的代码,在优化方面忽视了,就是在往flash写入或者读出的代码里的地址,如0xffff2600等,一定要加上voilate来限制优化!!这点非常重要!

     之后就是文件系统的编码了,这部分,和硬件关系不是很大,简单的文件系统,知道链表就OK了[转载请注明嵌入式先生,谢谢合作]。

                                                                                                         嵌入式先生~2009.03.09晚

阅读(2506) | 评论(1) | 转发(0) |
0

上一篇:没有了

下一篇:u-boot移植,其实需要的是坚持

给主人留下些什么吧!~~

chinaunix网友2010-07-12 09:00:54

不好,写的这是啥呀。