ARM的Nand Flash入门使用手册(以K9F2G08X0M为例)

发布者:创意驿站最新更新时间:2022-04-21 来源: eefocus关键字:ARM  Nand  Flash 手机看文章 扫描二维码
随时随地手机看文章

1. 组织结构:

在这里插入图片描述

存储芯片有几个重要的单位 device block page ,在这个芯片中

1 Device = 2048 block = 2k block

1 block = 64 page

1 page = (2048 + 64) Byte

其中:

块Block,是Nand Flash的擦除操作的基本/最小单位。

页Page,是Nand Flash的读写操作的基本单位/最小单位。

共256M,也就是需要28根地址线来寻址,但是文档中是29根线,因为在寻址的时候,我们必须先找到page地址然后再找到页内地址。


页地址共有: 2048 * 64 page ,也就是2的(11+6)次方 ,即17跟地址线

页内地址: 2048 + 64 ,也就是2的(11 + 1)次方 ,即 12跟地址线,注意这里的64个字节是一段特殊的区域叫做OOB,用于数据的校验,只需要一根地址线标识


2. 寄存器说明

在这里插入图片描述

只有数据线,没有地址线

8的数据线可以传输: 数据,地址和命令(功能),通过一些引脚来控制

但是CPU并不直接与Nand Flash交互,而是通过soc内的Nand Flash控制器来间接设置Nand Flash,其中含有很多的寄存器,CPU只需直接对这些寄存器进行操作就可以了

 I/O0 ~ I/O7 用于输入地址/数据/命令,输出数据

 CLE 则 数据线中是 命令

在这里插入图片描述

 ALE 则 数据线中是 地址

在这里插入图片描述

 WE 则 数据线中是 数据 方向是输入(从存储器角度)

 RE 则 数据线中是 数据 方向是输出(从存储器角度)

在这里插入图片描述

 CE 片选

在这里插入图片描述
在这里插入图片描述

 R/B 空闲状态或者是忙状态

在这里插入图片描述

 WP 写保护,使能后无法写入,由电路实现

除此以外还有一个配置寄存器,用来设置脉冲宽度

在这里插入图片描述

3. 常见的Nand Flash操作

写入数据就是page program,因为page是写入的最小单位

在这里插入图片描述

从上图可以看到,如果要实现读一个页的数据,就要发送Read的命令,而且是分两个周期(Cycle),

即分两次发送对应的命令,第一次是0x00h,第二次是0x30h,而两次命令中间,需要发送对应的你所要读取的页的地址,关于此部分详细内容,留待后表。对应地,其他常见的一些操作,比如写一个页的数据(Page Program),就是先发送0x80h,然后发生要写入的地址,再发送0x10h。


4. Nand Flash的地址

物理地址 =块大小×块号 + 页大小×页号 + 页内地址

在这里插入图片描述

此Nand Flash地址周期共有5个,2个列(Column)周期,3个行(Row)周期。


①.每个page的大小为(2048+64)KB,对应地,列地址A0~A10,就是页内地址,地址范围是从 0 到 2047。但是为何此处多出来个A11呢?实际上,由于我们访问页内地址,可能会访问到OOB的位置,即2048-2111这64个字节的范围内,所以,此处实际上只用到了2048~2111,用于表示页内的oob区域,其大小是64字节。


②.每个block有64个page,对应地,A12~A17,称作页号,可以定位到对应的块的哪一个页


③.每个device有2048个block,对应地,A18~A28,表示对应的块号,即属于哪个块

在这里插入图片描述

5. Nand Flash操作过程举例

以读操作为例,先发一个图中读命令的第一个阶段的0x00,表示,让硬件先准备一下,接下来的操作是读。发送两个周期的列地址。也就是页内地址,表示,我要从一个页的什么位置开始读取数据。接下来再传入三个行地址。对应的也就是页号。然后再发一个读操作的第二个周期的命令0x30。

接下来,Nand Flash内部硬件逻辑,负责去按照你的要求,根据传入的地址,找到哪个块中的哪个页,然后把整个这一页的数据,都一点点搬运到页缓存中去。而在此期间,你所能做的事,也就只需要去读取状态寄存器,看看对应的位的值,也就是R/B#那一位,是1还是0,如果是0的话,就表示,系统是busy,仍在”忙“(着读取数据),如果是1,就说系统活干完了,忙清了,已经把整个页的数据都搬运到页缓存里去了,你可以接下来读取你要的数据了。



5.设置Nand Flash启动的过程

S3C2440的Nand Flash大小为256MB,然后硬件把前4K内容复制到片内的SRAM中,再取指令并执行。


https://www.cnblogs.com/shangdawei/archive/2013/05/14/3077018.html

关键字:ARM  Nand  Flash 引用地址:ARM的Nand Flash入门使用手册(以K9F2G08X0M为例)

上一篇:ARM裸机学习二:S3C2440的串口使用
下一篇:S3C2440的中断机制

推荐阅读最新更新时间:2024-11-11 18:06

关于ARM体系中栈的对齐问题
基于ARM架构的处理器的C语言程序设计遵循ATPCS(ARM-THUMB procedure call standard)和AAPCS(ARM Application Procedure Call Standard)。ATPCS规定数据栈为FD(满递减Full Decrease)类型,并且对数据栈的操作是8字节对齐的。在我自己的轻量级的嵌入式操作系统tqOS中没有考虑到线程工作栈的8字节对齐的问题,这样从内存池中分配到的栈的起始地址可能是4字节对齐的也可能是8字节对齐的,如果运气好每一个线程的栈式8字节对齐的则不会有什么问题出现,如果运气差线程的栈式4字节对齐的,那么就会导致种种错误......例如,最要命的是在线程函数中进行浮点
[单片机]
基于FPGA的ARM并行总线和端口设计
通过EP2C20Q240器件和LPC2478处理器,研究ARM应用系统外部并行总线的工作原理和时序特性,以及在FPGA中进行双向总线设计的原则,设计并实现了FPGA并行总线.借助Quartus II仿真工具,对FPGA并行总线进行了时序仿真,并用SignalTap II逻辑分析仪进行在线测试,验证设计的正确性. 0 引言 在数字系统的设计中,FPGA+ARM 的系统架构得到了越来越广泛的应用,FPGA主要实现高速数据的处理;ARM 主要实现系统的流程控制.人机交互.外部通信以及FPGA 控制等功能.I2C.SPI 等串行总线接口只能实现FPGA 和ARM 之间的低速通信 ;当传输的数据量较大.要求高速传输时,就需要用并行总线来
[单片机]
基于FPGA的<font color='red'>ARM</font>并行总线和端口设计
基于Tiny 6410的内核移植 (NAND FLASH 、UBIFS篇)
一、环境 1、开发板 Tiny6410 NAND: 2G RAM: 256M MLC 2、操作系统 Ubuntu10 3、交叉工具编译链 arm-linux-gcc-4.5.1 二、下载内核源码包 linux-2.6.38 三、解压内核 tar –jxvf linux-2.6.38.tar.bz2 我解压的的路径是: 四、NAND FLASH移植 1、修改Makefile vim Makefile 将约191行改为: ARCH ? = arm CROSS_COMPILE ? = arm-linux- 2、cp arch/arm/configs/s3c6400_defconfig .config
[单片机]
【嵌入式Linux+ARM】存储控制器(操作SDRAM)
1.存储控制器介绍 s3c2440中的“存储管理器”提供了访问外部设备所需要的信号,有如下特性: 1.支持小字节序、大字节序(通过软件选择) 2.每个BANK为128M,一共有8个BANK,共1G 3.BANK0~BANK5可以支持外接ROM、SRAM等,BANK6~BANK7除可以支持ROM、SRAM外 还支持SDRAM 4.BANK0~BANK7的起始地址是固定的 5.外接SDRAM时,支持自刷新和省电模式 s3c2440上有ADDR0~ADDR26访问范围只有128M,如何达到上面的1G,通过对外引出的8跟片选信号nGCS0-nGCS7,对应于BANK0~BANK7。片选信号输出低电平可以选中相应
[单片机]
【嵌入式Linux+<font color='red'>ARM</font>】存储控制器(操作SDRAM)
提高MSP430G系列单片机的Flash 擦写寿命的方法
在嵌入式设计中,许多应用设计都需要使用EEPROM 存储非易失性数据,由于成本原因,某些单片机在芯片内部并没有集成EEPROM。MSP430G 系列处理器是TI 推出的低成本16 位处理器,在MSP430G 系列单片机中并不具备EEPROM。为了存储非易失性数据,MSP430G 系列处理器在芯片内部划分出了256 字节的Flash 空间作为信息Flash,可用于存储非易失性数据,但是由于Flash 与EEPROM 在擦写寿命上存在一定差距,所以在实际应用中,这种应用方式并不能够满足所有客户的需求。本应用笔记介绍了使用代码区域Flash 来模拟EEPROM,通过一定的软件处理算法,可以大大增加数据存储周期的一种方法。本文给出了实现上
[单片机]
提高MSP430G系列单片机的<font color='red'>Flash</font> 擦写寿命的方法
两种存储解决方案的对比分析
众所周知,全球数据正以一种爆炸式的方式急速增长,高昂的设备扩容和快速上升的设备能源消耗导致数据中心的部署和运营成本直线上升。低成本、低功耗、高密度已成为计算和存储的共性需求,业界有越来越多的企业开始设计和部署 ARM 架构的服务器。 有别于相对高成本的 ARM 服务器芯片(如 Qualcomm, Cavium 等)用于 Cloud computing 的部署,WDLabs 在 2016 年上半年搭建了 504 个 Ceph OSD 节点的 ARM 测试储存池, 该方案采用了 504 片低成本的 ARM 芯片作为微服务器(Microserver)节点。4 年前,集成 ARM 芯片于硬盘, Seagate 首推了以太网硬盘,并开放
[嵌入式]
ARM 汇编程序设计
A.5.1 文件格式 ARM 源程序文件(即源文件)为文件格式,可以使用任一文本编辑器编写程序代码。 在一个项目中,至少要有一个汇编源文件或C 程序文件,可以有多个汇编源文件或多个C 程序文件,或者C 程序文件和汇编文件两者的组合。 A.5.2 ARM 汇编的一些规范 (1)汇编语句格式 ARM 汇编中,所有标号必须在一行的顶格书写,其后面不要添加“:”,而所有指令均不能顶格书写。ARM 汇编器对标识符大小写敏感,书写标号及指令时字母大小写要一致,在ARM 汇编程序中,一个ARM 指令、伪指令、寄存器名可以全部为大写字母,也可以全部为小写字母,但不要大小写混合使用。注释使用“;”,注释内容由“;”
[单片机]
一文看懂arm架构和x86架构有什么区别
  本文主要介绍的是arm架构和x86架构的区别,首先介绍了ARM架构图,其次介绍了x86架构图,最后从性能、扩展能力、操作系统的兼容性、软件开发的方便性及可使用工具的多样性及功耗这五个方面详细的对比了arm架构和x86架构的区别,具体的跟随小编一起来了解一下。   什么叫arm架构   ARM架构过去称作进阶精简指令集机器(AdvancedRISCMachine,更早称作:AcornRISCMachine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于移动通讯领域,符合其主要设计目标为低耗电的特性。   在今日,ARM家族占了所有32位嵌入式处理器75
[单片机]
一文看懂<font color='red'>arm</font>架构和x86架构有什么区别
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved