nand flash (k9f5608)驱动编程
1.nand flash的引脚
nand flash比较重要的几个引脚如下
I/O引脚:对于该款flash芯片I/O引脚有8个0-7,有的芯片有16个0-15
CLE:指令传输使能(指令可以锁存在nand flash的指令寄存器中)
ALE:地址传输使能(地址可以锁存在nand flash的地址寄存器中)
CE:片选,低有效
2.nand flash的控制
nand flash是通过向I/O传输数据进行控制的。传输的数据有两种,一种是先传输的命令,另一种是后传 输的地址。
3.k9f5608的地址传输
k9f5608是三星公司的一款32兆8位的nand flash芯片。需要三个周期将地址通过I/O传输到nand flash芯 片。
首先了解一下存储布局,最下面的一层是--页,一页由512字节的数据块和16字节的oob块组成。其中,数 据块用来存放数据,oob块用来存放该flash页的信息。中间的一层是块,一块由32个页组成。最上面的一 层是设备,一个设备由2048个块组成。
接下来说明它的地址传输,前面说过要分多个周期传送。
首先传送页内的偏址:最底层的页内偏址,一页是512字节,所以最大是511。
下面传送页地址,分3个周期传送
第1个周期传输页地址的0-7位。
第2个周期传输页地址的9-16位。
第3个周期传输页地址的17-24位。
这里要说明的是,第8位是由指令决定的,不需要传输。具体的看下面指令的传输说明。
4.k9f5608的指令传输
k9f5608的指令集有12条指令,具体可以看芯片说明。这里只是总的说一下。
指令分1个周期和2个周期指令两种。1个周期的只需要传送一次,2个周期的要传送2次。
比如:page program指令,是2个周期的,要实现这个指令的功能,首先传送80h,再传送10h,由于I/O是 8位的,正好。
再比如:reset指令,是1个周期的,只需要传输FFh即可。
这里重点说的一下的是read1和read2指令。read1是1周期指令,但是有两个指令00h和01和。对于页大小 是512字节的k9f5608来说,8位的寻址空间是256,所以用00h来寻址前256字节空间,01h来寻址后256字节 。这样就对应了前面的页地址传输的第8位,如果是前256字节空间,就自动置0,如果是后256字节空间就 自动置1,所以,页地址的第8位由指令决定,不需要传输。read2是1周期指令,是用来读oob的。其他的 指令都比较简单,对应着手册看就行了。
5.驱动编程思路
基于以上的分析,驱动编程分如下几个要点:
(1)read和write函数的实现要记得先传输指令再传输地址,将buf中的数据写入flash或者将flash中的 数据读入buf即可。这里如果定义了ecc就要用到read2来读oob,oob中记载着ecc的信息,具体看手册。
(2)由于有的nand flash芯片页大小是256,有的是512所以命令运行前要进行判断。
(3)read1和read2的作用不止是读取数据而已,在读完后它将指针指到区域的第一个字节,所以在进行 page program等命令的时候先要运行read命令,让指针指到该区域的第一个字节。
暂时就这么多,多了看得别人也烦。:)

nand flash (k9f5608)驱动编程相关推荐

  1. 【详解一】Nand Flash 编写驱动之前要了解的知识

    1.1. 一些相关的名词的解释 1.1.1. Non-Volatile Memory非易失性存储器 NVM,即NV (RAM)Memory,断电数据也不会丢失的存储器,比如Nand Flash,Nor ...

  2. Nand flash驱动的编写与移植

    1 Nand flash工作原理     S3C2410板的Nand Flash支持由两部分组成:Nand Flash控制器(集成在S3C2410 CPU)和Nand Flash存储 芯片(K9F12 ...

  3. nand flash 经典 全面 ------如何编写Linux下Nand Flash驱动

    Crifan Li 摘要 本文先解释了Nand Flash相关的一些名词,再从Flash硬件机制开始,介绍到Nand Flash的常见的物理特性,且深入介绍了Nand Flash的一些高级功能,然后开 ...

  4. 如何编写linux下nand flash驱动

    http://www.cnblogs.com/sankye/articles/1638852.html 向作者Sankye致敬 [编写驱动之前要了解的知识] 1.       硬件特性: [Flash ...

  5. 基于VXWORKS的NAND FLASH驱动程序设计

    基于VXWORKS的NAND FLASH驱动程序设计 3162412793@qq.com 技术交流QQ群: 691976956 目前,随着电子技术的不断发展,计算机技术也得到飞速的发展,产生了很多新技 ...

  6. ARM9 2410移植之Nand flash 驱动的编写与移植

    1 Nand flash 工作原理 S3C2410 板的Nand Flash 支持由两部分组成:Nand Flash 控制器(集成在S3C2410 CPU)和Nand Flash 存储 芯片(K9F1 ...

  7. [转]ARM9 2410移植之Nand flash 驱动的编写与移植

    1 Nand flash 工作原理 S3C2410 板的Nand Flash 支持由两部分组成:Nand Flash 控制器(集成在S3C2410 CPU)和Nand Flash 存储 芯片(K9F1 ...

  8. Nand Flash驱动, ECC, MTD, FTL, 文件系统

    特点 Nand flash存储结构为chip->(plane)->block->page>byte. page分为数据区和oob(out of band),oob用于存放ecc ...

  9. linux下nand flash驱动工作原理,Linux下Nand Flash 驱动代码分析

    随着越来越多的平台支持从Nand Flash 中启动,掌握Nand Flash 的驱动编写有着重要的现实意义,由于内核已经完成了大部分的工作,实际工作中大部分工程师对Nand Flash 驱动只是简单 ...

最新文章

  1. Linux搭建安卓开发环境
  2. 按键精灵脚本 php,HTML_按键精灵 脚本-学习VBS的一个不错的教程,今天我就从总体上对VBS进行介 - phpStudy...
  3. iar烧录程序步骤_STM8入门以及程序编译、烧录、IAR使用方法(扫盲篇...
  4. Object C学习笔记11-数组
  5. Python 第三方模块之 numpy.random
  6. 关于Background-size的几个参数区别
  7. Linux的简介与虚拟机的管理
  8. vue2.0中watch总结:普通监听和深度监听
  9. 下载列表失败_Mac配置的Motrix,高速下载百度云
  10. 互联网+智慧用电:智能微型断路器应用发展浅析-李亚俊
  11. 大华C/C++面试题目解析
  12. 服务器到内地更快的美国HS网络服务器
  13. Mysql DBA 高级运维学习之路-mysql数据库乱码问题
  14. HTML onfocus (获得焦点)和 onblur (失去焦点)
  15. 55400-73-2,Ms-PEG5-Ms含有两个甲磺酸基部分的PEG连接物
  16. 树莓派与windows之间传输文件
  17. html多个好看的背景动态效果(附源码)
  18. 【如何配置环境变量】
  19. Linux操作系统常见命令
  20. 喝咖啡的人活得更久?

热门文章

  1. ios jenkins配置_Jenkins一:iOS自动打包完整实践
  2. VScode Vue项目使用html代码自动补全插件
  3. windows如何查看jdk安装目录
  4. Incorrect string value: ‘\xE6\x9D\x8E\xE8\x80\x81...‘ for column ‘name‘ at row 1
  5. MongoDB安装(Linux)
  6. c#语言中唯一的三元运算符是,C# 三元运算符
  7. 将任意图片转换成圆形图片
  8. php判断图片有没有ps过,用来检验图片有无PS过的司法取证利器JPEGsnoop 1.8.0
  9. Android中View类OnClickListener和DialogInterface类OnClickListener导入包冲突
  10. Allegro切换单位后动态铜箔不自动避让