nand flash控制器

Tiny6410学习笔记3——Nand Flash Controller Nand Flash简介简介相当于pc机的硬盘,保存系统运行所必须的操作系统、应用程序、用户数据以及运行过程中产生的一系列数据。掉电后数据仍可保存。 贴上Tiny6410所用的Nand Flash芯片的引脚配置图和信息,以后会用。引脚引脚配置图: 引脚描述: 基本结构图 由图中可以看到,一页有2KB的空间以及64*8bit的额外空间(韦东山老师的视频教程里称之为OOB,不在Nand 阅读详情
PIN CONFIGURATION
OM[1:0] = 00: Enable NAND flash memory boot
NCON: NAND flash memory selection(Normal / Advance)
0: Normal NAND flash(256Words/512Bytes page size, 3/4 address cycle)
1: Advance NAND flash(1KWords/2KBytes page size, 4/5 address cycle)
GPG13: NAND flash memory page capacitance selection
0: Page=256Words(NCON = 0) or Page=1KWords(NCON = 1)
1: Page=512Bytes(NCON = 0) or Page=2KBytes(NCON = 1)
GPG14: NAND flash memory address cycle selection
0: 3 address cycle(NCON = 0) or 4 address cycle(NCON = 1)
1: 4 address cycle(NCON = 0) or 5 address cycle(NCON = 1)
GPG15: NAND flash memory bus width selection
0: 8-bit bus width
1: 16-bit bus width


OM[1:0]:使能nand flash存储器 
NCON :nand flash 存储器选择位  
0:正常模式:256字/512字节页,3/4 地址周期
1:先进模式:1K字/2K字节页,4/5 地址周期


GPG13:nand flash 存储器页面容量选择位
0:页 = 256字(NCON = 0)或者页 = 1K字(NCON = 1)
1:页 = 512字节(NCON = 0)或者页 = 2K字节(NCON = 1)


GPG14:nand flash 存储器地址周期选择位
0:3地址周期(NCON = 0)或者 4地址周期(NCON = 1)
1:4地址周期(NCON = 0)或者 4地址周期(NCON = 1)


GPG15:nand flash 存储器总线宽度选择位
0:8bit 总线宽度
1:16bit 总线宽度


NOTE
The configuration pin – NCON, GPG[15:13] – will be fetched during reset.
In normal status, these pins must be set as input so that the pin status is not to be changed, when enters
Sleep mode by software or unexpected cause.


这些配置引脚 —— NCON ,GPG[15:13]  在重启时将被获取
在正常状态中,这些引脚必须被设置成输入以便当在由软件设置进入睡眠模式或意外的原因发生时,这些引脚不被改变


Nand flash启动 


在s3c2410的datasheet的述(OVERVIEW)中,讲到需要注意的几点:
一、nandflash是没有办法直接映射到cpu内存空间的。nandflash要通到控制方式(在这里是nandflash controller)与cpu交换数
据。
二、既然没有办法映射到内存空间,就没有办法从nandflash直接启动。(原因:系统启动或复位时cpu中没有任何代码,系统会从
内存空间0x00000000开始取指令到cpu运行,而nandflash没有办法通过0x00000000这个地址访问,至少在启动时不能)。
三、办法是人想出来的。s3c2440a,包括s3c2410,采用stepping stone方式实现了从nandflash启动。stepping stone(垫脚时),
就是s3c2440a中内置的一段4KB的SRAM.当系统启动时,nandflash controller通过硬件方式把nandflash中前4KB中的内容拷贝到
stepping stone中。
我当看到这里就想,既然可以通过硬件方式拷贝。做到同样方式拷贝到SDRAM中不就行了?为什么还要有nandflash的驱动呢?
其实是这样的:硬件拷贝只是单纯的拷贝。没有办法做ECC校验。这样肯定是不行的,大家也知道。nandflash的正常工作是要
ecc校验来保证的。
那么这里就不需要ECC校验了吗?
不需要,因为在后面了解到。nandflash它的第一个块是采用特殊工艺制作的。它的工艺保证了它的第一个块是不会出现位反转的。
(当然也不是绝对,但是在很大程度上)。所以回到主题上来,我们是可以直接把前4KB拷贝到SRAM中的,但没有办法通过这种方式
做后面的工作。
前4KB的代码己经进入sram,我们的板子都有一个跳线开关,那个开关就是为了控制启动方式选择的。一边是选择norflash.另一面是
选择nandflash.如果我们是选择nandflash,系统会通过自带的硬件方式把sram映射到内存空间的0x00000000处。然后cpu会自动从
0x00000000处的指令,开始运行。
注意:所有的上述过程都是硬件自动完成的。当中除了在硬件设计上需要注意的一些情况外,复位时无需人工干预。
四、这段4KB的代码是用来做什么的呢?
书中暗表,这4KB是有他们特殊的使命的。它们要把bootloader的后面部分全部通过软件方式拷贝到SDRAM中去,也就是内存中去。
能起到这个作用的代码在很常见的u-boot开源代码中是没有的。最起码到1.3.4的版本还没有。大家要用的话需要做移植。
而移植时要考虑的方方面面则留待下回分解。
说到最后,再讲一个数据手册里的最后的features段的内容:


FEATURES
1. Auto boot: The boot code is transferred into 4-kbytes Steppingstone during reset. After the transfer, the boot
code will be executed on the Steppingstone.
2. NAND Flash memory I/F: Support 256Words, 512Bytes, 1KWords and 2KBytes Page.
3. Software mode: User can directly access NAND flash memory, for example this feature can be used in
read/erase/program NAND flash memory.
4. Interface: 8 / 16-bit NAND flash memory interface bus.
5. Hardware ECC generation, detection and indication (Software correction).
6. SFR I/F: Support Little Endian Mode, Byte/half word/word access to Data and ECC Data register, and Word
access to other registers
7. SteppingStone I/F: Support Little/Big Endian, Byte/half word/word access.
8. The Steppingstone 4-KB internal SRAM buffer can be used for another purpose after NAND flash booting.


特点:
一、自动引导
引导时,引导代码会被传送给4KB的垫脚石(stepping stone)中。传送后引导代码会自动在stepping stone中运行。
需要注意的就是这个传送过程是通过nandflash controller来做到的。这是一个硬件完成的过程,无需你的任何操作。而且
stepping stone是一个段sram.通过nandflash启动时它会被自动(这里自动与上面是一个意思,无需你任何操作,或代码)映射到
0x00000000并执行。上面都讲了。这里只是重申一下罢了。
二、nandflash存储器接口
支持256words,512bytes,1Kwords,2Kbytes 每页。
一般来说,我们板子上多数是512bytes的那种。
三、软件模式
用户可以直接访问nandflash存储内容。比如说我们可以比它进行读、写、擦除的操作。
注意,这里说的是软件方式,不是硬件自动的了哦。想读写什么的还有点麻烦呢。稍后章节介绍。
四、接口:8/16位nandflash接口总线。
五、硬件ecc产生,检测和指正(后者指软件改正)不懂的看稍后章节。
六、特殊功能寄存器(SFR)接口
支持小端模式字节/半字/字访问数据和ECC数据寄存器。支持字访问其它寄存器。
这里的意思是说:对数据寄存器和ECC数据寄存器可以每次访问一个字节/一个半字/一个字,即8/16/32位都可以。但其它寄存器
一次只可以访问一个字。即32位方式访问。
七、stepping stone 接口
支持小端/大端,字节/半字/字访问。
八、垫脚石(stepping stone)
啊!上面忘记讲了。这个sram再引导过程结束后是可以用作其它用途的。
嘿嘿,回头又看数据手册,原来它也要讲这条。我上面只是想插一条,下面再讲本条数据手册的内容呢。巧合!无巧不成书啊!
这些都是有了一知半解后再回头看数据手册,根据自己理解做了些解释,自以为很详细了。但是我也知道,如果初次接触的话,

还是看不懂。我会继续讲解其它内容,然后来这里做链接,希望对大家有所帮助。


ECC PROGRAMMING GUIDE
1. In software mode, ECC module generates ECC parity code for all read / write data. So you have to reset ECC
value by writing the InitECC(NFCONT[4]) bit as ‘1’ and have to clear theMainECCLock(NFCONT[5]) bit to
‘0’(Unlock) before read or write data.
MainECCLock(NFCONT[5]) and SpareECCLock(NFCONT[6]) control whether ECC Parity code is generated
or not.
2. Whenever data is read or written, the ECC module generates ECC parity code on register NFMECC0/1.
3. After you completely read or write one page (not include spare area data), Set the MainECCLock bit to
‘1’(Lock). ECC Parity code is locked and the value of the ECC status register will not be changed.
4. To generate spare area ECC parity code, Clear as ‘0’(Unlock) SpareECCLock(NFCONT[6]) bit.
5. Whenever data is read or written, the spare area ECC module generates ECC parity code on register
NFSECC.
6. After you completely read or write spare area, Set the SpareECCLock bit to ‘1’(Lock). ECC Parity code is
locked and the value of the ECC status register will not be changed.
7. Once completed you can use these values to record to the spare area or check the bit error.


ECC编程指南
1.在软件模式,ECC模块为所有的读数据或写数据产生ECC校验代码。所以必须在读数据或写数据之前通过往InitECC(NFCONT[4])位
写‘1’和清除theMainECClock(NFCONT[5])位为‘0’重设ECC值。
MainECCLock(NFCONT[5])和SpareECCLock(NFCONT[6])控制ECC检验代码是否产生。
2.无论数据是写还是读时,ECC模块在寄存器 NFMECC0/1 产生ECC校验代码。
3.在你完成读或写页后(不包括备用区数据),需设置MainECCLock(NFCONT[5])位为‘1’(锁状态)。ECC校验代码是被锁住的,同时
ECC状态寄存器的值不会改变。
4.为了产生备用区校验代码,清除SpareECCLock(NFCONT[6])位为‘0’(解锁状态)。
5.无论数据是写还是读时,ECC模块在寄存器 NFSECC 产生ECC校验代码。
6.在你完成读或写备用区后,需设置SpareECCLock(NFCONT[6])位为‘1’(锁状态)。ECC校验代码是被锁住的,同时ECC状态寄存器的
值不会改变。
7.一旦完成你可以使用这些值来记录备用区域或检查错误。

串行Flash控制器设计介绍(QSPI) 目录 1. 概述 2. 整体架构 3. AHB接口单元 3.1. 地址重映射功能 3.2. 写保护功能 3.3. 连续/非连续传输识别 3.4. Burst长度识别 3.5. AHB地址解码功能 4. DAC 4.1. AHB读操作 4.2. AHB写操作 4.3. 片内程序执行(XIP) 4.3.1. 从上电复位(POR)进入XIP模式 4.3.2. 其他方式进入XIP模式 4.3.3. 退出XIP模式 4.4. 上电启动引导(Boot) 5. INDAC 5.1. 间 阅读详情

相关推荐

Nand Flash介绍和Nand Flash控制器使用

一、Flash介绍     常用的flash类型有NOR Flash 和Nand Flash 两种;     (1)Nor Flash     1、Nor Flash的接口和RAM完全相同,可以随机访问任意地址的数据,在其上进行读操作的效率非常高,但是擦除和写操作的效率很低,另外,Nor Flash的容量一般比较小,通常,Nor Flash用于存储程序;     2、Nor Flash的块

逐波与逆流 7129

Flash闪存储存原理以及NAND flash、NOR flash(详细)对比总结

本文主要介绍NAND flash和NOR flash储存原理和从多个方面对比两种闪存的差异点。NOR闪存是由Intel公司开发的,是一种随机访问设备,具有专用的地址和数据线(和SRAM类似),以字节的方式进行读写,允许对存储器当中的任何位置进行访问。而NAND闪存则没有专用的地址线,不能直接寻址,是通过一个间接的、类似I/O的接口来发送命令和地址来进行控制的,这就意味着NAND闪存只能够以页的方式进行访问。NOR 主要应用于代码存储介质中,而 NAND 则用于数据存储。

qq_39787102的博客 1万+

FPGA实现nand flash控制器

采用FPGA实现nand flash控制器的关键设计点,包含时序图和模块图

hummy_vision的博客 3593

s3c6410硬件NAND FLASH CONTROLLER(NAND FLASH 控制器)

1、OVERVIEW The 6410 is equipped with an internal SRAM buffer called ‘Steppingstone’. Generally, the boot code will copy NAND flash content to SDRAM. Using hardware ECC, the NAND flash data validity

思考的智慧,知识源于思考 4934

NAND Flash内存控制器实战:从ECC算法到多Die管理的5个关键设计要点

本文深入探讨NAND Flash内存控制器的5个关键设计要点,包括BCH编解码器硬件优化、3D NAND的ECC spare区域布局、多Die并行访问时序精调、坏块管理与磨损均衡协同设计,以及3D NAND读干扰抑制技术。特别针对Multi-die管理提出创新解决方案,帮助工程师提升存储系统性能和可靠性。

whisky的博客 1026

[元带你学: 协议 5] NAND flash和NOR flash详解

​Flash是一种非易失性(掉电数据不会消失)的存储器。在手机、平板中用做内部存储空间,用来存系统、应用、图片、视频等。 根据硬件上存储原理的不同,Flash Memory主要可以分为NOR Flash和NAND FLASH两类。许多业内人士也分不清NAND Flash 和 NOR Flash 的区别。 ​

串起点滴 7732

NAND Flash控制器

一、NAND Flash介绍和NAND Flash控制器的使用 NAND Flash在嵌入式系统中的作用,相当于PC上的硬盘 常见的Flash有NOR Flash和NAND Flash,NOR Flash上进行读取的效率非常高,但是擦除和写操作的效率很低,容量一般比较小;NAND Flash进行擦除和写操作的效率更高,并且容量更大。一般NOR Flash用于存储程序,NAND Flash用于存

xingyuan1hao的专栏 1451

NAND Flash控制器读写编程指南

为了有效地使用NAND Flash存储器,开发人员需要了解如何编写NAND Flash控制器的读写程序。本指南将介绍NAND Flash控制器的读写编程,并提供相应的源代码示例。NAND Flash存储器是一种基于闪存技术的存储设备,它由多个存储单元组成,每个存储单元可以存储多个位的数据。每个页通常包含多个字节的数据和一个校验码。但是,以上代码提供了一个起点,可以帮助您开始编写NAND Flash控制器的读写程序。对于NAND Flash的读操作,我们首先需要选择合适的读命令,并提供相应的地址信息。

2301_79331421的博客 645

SSD中控制器和NAND FLASH的关系

只能按块擦除、按页写入,不能像内存那样随便改一个字节。本身没有智能,不会自己管理数据,也不会直接跟电脑对话。现在用途:军工、企业极端可靠场景,消费级基本绝迹。有擦写寿命,擦写次数多了会损坏。中唯一真正存储数据的硬件。颗粒,并且跟电脑主板通信。(容量越大占比越高)缓存用完会明显掉速)

lr970307的博客 247

Verilog实现NAND FLASH控制器源码详解

NAND Flash控制器是存储设备中的关键组件,它负责管理和维护NAND Flash芯片,确保数据的高效读写以及设备的稳定运行。硬件层面上,一个典型的控制器通常包括以下几个核心部分:处理器单元:负责运行存储管理算法,执行命令调度等任务。通常使用高性能的微处理器或微控制器。缓冲区:缓存数据以减少对闪存芯片的直接读写次数,提高系统的整体性能和寿命。主机接口:与主机系统(如计算机或嵌入式设备)通信的接口,负责数据传输和命令交互。NAND接口。

weixin_35916518的博客 1053

基于Verilog的NAND FLASH控制器设计与实现源码

推荐采用统一命名规则:类型前缀示例输入i_i_clk输出o_双向io_控制信号寄存器信号r_r_addr_reg线网信号w_有助于快速识别信号流向,降低沟通成本。AHB总线采用主从结构,控制器在此扮演从设备角色。关键信号包括地址总线HADDR、写数据总线HWDATA、读数据总线HRDATA、控制信号如HWRITE(指示读/写)、HSIZE(传输宽度)、

weixin_30481539的博客 1189

探索NAND FLASH控制器的奥秘:一份强大的Verilog源码

探索NAND FLASH控制器的奥秘:一份强大的Verilog源码 【下载地址】NANDFLASH控制器源码Verilog 本仓库提供了一个NAND FLASH控制器的Verilog源码,该源码具有很高的参考价值。无论你是硬件工程师、FPGA开发者,还是对NAND FLASH控制器感兴趣的学习者,这份源码都能为你提供宝贵...

gitblog_09811的博客 535

NAND Flash控制器Verilog源码分析与设计

NAND FLASH控制器是存储系统中的关键组件,它连接在主机系统和NAND FLASH存储器之间,负责管理和控制NAND FLASH的读写、擦除等操作,保证存储系统的高效、稳定运行。

weixin_33531560的博客 581

嵌入式linux第五课之Nand Flash控制器

本节课的主要内容如下: NAND Flash访问原理 地址空间概念 NAND的编址 NAND的命令 使用S3C2440的NAND Flash控制器访问NAND Flash 地址空间概念 NAND Flash有数据总线,没有地址总线。 内存的地址总线直接接2440发出来的地址总线上去。 网卡的地址总线也是跟2440的地址总线直接相连。 因此,SDRAM,DM9000(网卡)接到2440的地址总线...

qq_25785565的博客 403

FPGA实现NAND Flash控制器的VHDL项目

FPGA是一种可以通过编程来配置的集成电路,它允许设计者在硬件层面实现特定功能。FPGA通过编程可以实现诸如逻辑门、触发器、RAM等数字电路的功能,甚至复杂的系统级功能。其工作原理依赖于可配置的逻辑块(CLBs)和可编程互连,以满足特定应用需求。VHDL提供了强大的功能来描述复杂的硬件逻辑,并支持从高层次的抽象设计到低层次的细节描述。通过本章的介绍,我们理解了VHDL的基础语法和结构,通过设计实践案例,我们学会了如何将这些基础知识应用到实际的设计中。

weixin_33608403的博客 1390

Frida实战:SSL Pinning绕过技术全解析

本文详细解析了如何使用Frida工具绕过SSL Pinning技术,包括环境搭建、四种实战绕过方案及常见问题排查指南。通过具体代码示例和实战经验,帮助安全研究人员快速掌握SSL Pinning绕过技术,适用于金融类App的安全测试场景。

weixin_42530732的博客 188

【亲测免费】 NAND FLASH 控制器源码(Verilog)

NAND FLASH 控制器源码(Verilog) 【下载地址】NANDFLASH控制器源码Verilog 本仓库提供了一个NAND FLASH控制器的Verilog源码,该源码具有很高的参考价值。无论你是硬件工程师、FPGA开发者,还是对NAND FLASH控制器感兴趣的学习者,这份源码都能为你提供宝贵的参考和学习资源...

gitblog_09722的博客 567

保姆级教程:用PyBullet和Stable-Baselines3搞定你的第一个机器人强化学习项目

本文提供了一份详细的PyBullet和Stable-Baselines3教程,帮助开发者快速上手机器人强化学习项目。通过环境配置、自定义Gym环境构建、PPO算法参数优化及模型部署的全流程解析,读者将掌握从零开始训练四足机器人 locomotion 任务的完整技术方案。

weixin_26861329的博客 421

NAND Flash 控制器

目标: 了解 NAND Flash 芯片的接口 掌握通过 NAND Flash 控制器访问 NAND Flash 的方法 NAND Flash 介绍和 NAND Flash 控制器使用 NAND Flash 在嵌入式系统中的地位与 PC 上的硬盘类似,用于保存: 系统运行所必须的操作系统 应用程序 用户数据 运行过程中产生的各类数据 Flash 介绍 常用的 F...

weixin_30477797的博客 604

【Unity】Unity性能分析解决方案——UPR

由Unity中国团队提供的一套性能优化解决方案,其是一系列性能工具的集合,并可将收集的数据进行可视化。

Davidorzs的博客 1008

【纯血鸿蒙】安装hdc工具

参考资料:

oh.K 5553

ARM学习笔记--NAND Flash控制器

摘自:《嵌入式Linux应用开发完全手册》——韦东山 一、NAND Flash介绍和NAND Flash控制器的使用 NAND Flash在嵌入式系统中的作用,相当于PC上的硬盘 常见的Flash有NOR Flash和NAND Flash,NOR Flash上进行读取的效率非常高,但是擦除和写操作的效率很低,容量一般比较小;NAND Flash进行擦除和写操作的效率更高,并且容量更大。一般N

BoArmy的专栏 2928

【教程4>第1章>第11节】使用MATLAB快速产生批量verilog语句加快FPGA开发

...........如果手动写,那么就非常麻烦,这个时候,我们借助matlab,则可以快速生成上述类型的verilog程序,我们编写如下的MATLAB语句。\n");\n");end。

FPGA/MATLAB学习教程/源码/项目合作开发 1241
下一篇: ARM汇编指令:adr和ldr的前因后果
Ray_ree
博客等级 码龄12年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值