使用三星公司的K9F1G08U0D芯片做文件系统,首先要对K9F1G08U0D Nand芯片比较熟悉,整个网络找遍了,都找不到完全相对应的文档,只能找到K9F1G08U0A的手册,看到网上人家说K9F1G08U0A与K9F1G08U0C、D是有区别的,实际也找不到C的手册,可以肯定的是D的程序跟C相同,但跟A不一样,主要在一个状态返回上,C、D表现为0x0C,而A表现为0x0E。
       1、首先K9F1G08U0D的存储情况如下 :
                    1 Block  = 64 Page、    1 Page = (2048 + 64)Byte、    一个芯片共有1024 Blocks
       我相信上面一行比起文档里面一页的描述是来地简单的,主要要理解1Page里面怎么要2048+64,不直接用结果来表示,因为64字节是用于其它信息用的,比如保存坏块数等,从上面的空间得到有效存储区是128MByte = 1056Mbits。
       
       2、接下来就是对K9F1G08U0D的读写操作了,其实对该芯片的操作可以参考8051 MCU的外部存储总线,原理图如下所示。
               其实要比较注意的只有CLE、ALE、WE、RE、CE这几个管脚,另外8个I/O是数据、址址复用的,这里分别解说一下:
               CLE:命令使能管脚,当该管脚为高电平时,I/O上的操作为命令的读写操作;
               ALE:地址使能管脚,当该管脚为高电平时,I/O上的操作为地址的读写操作(读写分别是操作芯片里面相关地址里的存储数据);
               WE:写使能管脚,当该管脚为低电平时,I/O上为写操作;
               RE:读使能管脚,当该管脚为低电平时,I/O上为读操作;
               CE:是整个芯片的使能管脚,这里面接的是LPC1788的CS1,对应0x90000000地址。
               需要注意的是CLE、ALE这两个管脚接到LPC1788的EMC的A24、A25是很巧妙的,这样子就有了以下宏定义:
#define EMC_NAND_BASE  0x90000000

#define EMC_ALE_ADDR    0x01000000

#define EMC_CLE_ADDR    0x02000000


#define EMC_DATA8 *((volatile U8 *)(EMC_NAND_BASE))                                  //  数据

#define EMC_ADDR8 *((volatile U8 *)(EMC_NAND_BASE + EMC_ALE_ADDR))  // 地址

#define EMC_CMD8  *((volatile U8 *)(EMC_NAND_BASE + EMC_CLE_ADDR))  // 命令


3、 另外有个要注意的地方是芯片内部的地址 。

               从上图可以看到,Column Address、Row Address这两个概念,分别代表列地址、行地址。可以这样理解,Col地址是每个Page里面的详细字节位置;Row地址是整个芯片的Page绝对地址,这一句话是非常重要的,因为在写代码时,很多人就搞混乱了,包括NXP官网的例程。

4、另外读写里面数据就看芯片手册给的命令了。

K9F1G08U0D Nand芯片相关推荐

  1. 7.NAND芯片的读写及ECC检验软硬件实现_上

    最近在study ARM,在网上看到一些先行者们总结出来的一些东西,觉得很有参考意义,特收藏起来便于日后查找学习(在此向原帖作者致敬). 第一节概论 nandflash在对大容量的数据存储中发挥着重要 ...

  2. 韩企全球首造72层3D NAND芯片 下半年或量产

    据韩联社4月10日报道,韩国半导体企业SK海力士当天宣布,研发出全球首款256Gb的第4代72层3D NAND Flash,预计2017年下半年量产. NAND Flash闪存供应商为满足客户不断增加 ...

  3. NAND FLASH

    NAND Flash 以Micron公司的MT29F2G08为例介绍NAND Flash原理和使用. 1. 概述 MT29F2G08使用一个高度复用的8-bit总线(I/O[7:0])来数据传输.地址 ...

  4. linux nand 坏块_linux内核中对nand的坏块管理

    闲来无事,追踪了下linux内核中对nand的坏块管理代码.大致记录一下. 内核中对nand的坏块管理是在nand的驱动中实现的,一般情况下,我们在实现nand控制器的驱动时不用考虑坏块的管理,这些机 ...

  5. u-boot的nand驱动写过程分析

    从命令说起,在u-boot输入下列命令: nand write 40008000 0 20000 命令的意思是将内存0x40008000开始的部分写入nand,从nand地址0开始写,写入长度是0x2 ...

  6. Nand Flash基础知识与坏块管理机制的研究

    概述 Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次 ...

  7. NOR flash and NAND flash

    (1)读写的基本单位 应用程序对NOR芯片操作以"字"为基本单位.为了方便对大容量NOR闪存的管理,通常将NOR闪存分成大小为128KB或者64KB的逻辑块,有时候块内还分成扇区. ...

  8. nand ubi -4 kernel和mtd

    tiny6410 linux2.6.38 1.nand驱动 nand是作为平台设备,在板子文件mach-mini6410.c调用,系统启动时自动加载进内核 static struct platform ...

  9. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU启动那些事(8)- 从Raw NAND启动

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的Raw NAND启动. 前面铺垫了七篇启动系列文章,终于该讲具体Boot Device了,我们 ...

最新文章

  1. Hibernate和JDBC、EJB比较
  2. Spring中的AOP在Advice方法中获取目标方法的参
  3. JZOJ 5700. 【gdoi2018 day1】小学生图论题(graph)
  4. 主流手机分辨率 尺寸 操作系统
  5. 计算机应用基础模块2客观题答案 文档,卓顶精文2019计算机应用基础网上形考答案模块2 Word 2010 文字处理系统客观题答案...
  6. 转android项目开发 工作日志 2011.10.8--toast消息框使用
  7. Spring学习笔记3——使用注解的方式完成注入对象中的效果
  8. 毕业前五年,我们应该把钱看轻
  9. REHL5 mail不能自动外发邮件
  10. (转)从业10年,芝加哥交易员王辰解码高频交易
  11. VS2019登陆时脚本错误
  12. matlab如何看历史,matlab创建有价值历史纪录.txt 源代码在线查看 - Matlab创建有价值历史纪录(完整版),matlab 常用的命令集锦。 资源下载 虫虫电子下载站...
  13. 抖音上超火系列的透明头像是怎么弄的?操作原来如此简单
  14. 与计算机运算速度相关参数,计算机的运算速度与什么有关
  15. 基于Springboot + Vue2.0开发的 IM 在线聊天
  16. 数字图像处理:像素间的一些基本关系
  17. BLE学习笔记3:GAP初始化
  18. 文字保护纱-Material Design
  19. 电脑显示nt服务器发生错误,Windows NT常见问题(一)
  20. 2021年全球与中国望远镜瞄准镜行业市场规模及发展前景分析

热门文章

  1. 杰理之调音限幅器 压缩器【篇】
  2. 1147 简单评委打分
  3. 欧洲语言框架A1到C2,开言英语怎么样,学习过一段时间的效果评价
  4. 2021乌镇互联网大会,数字联盟解读网络安全与信息保护
  5. word2013 无法撤销解决方法-有效
  6. 【零基础微信小程序入门开发一】小程序介绍及环境搭建
  7. 避免怀疑跳槽,程序员该怎么请假?
  8. oracle为什么打开鼠标不见了,鼠标箭头突然不见了该怎么办呢?
  9. python的常用数组工具
  10. 7-5 手机号码 (20 分)