k60 NANDFLASH控制器(NFC)
来源:互联网 发布:网站源码腾讯 编辑:程序博客网 时间:2024/04/27 14:45
NANDflash控制器提供标准NAND flash存储器设备的接口。由不同的控制逻辑单元和一个9KB 的SRAM buffer组成。提供一个8-和16位的nand flash设备的无缝接口,nand flash 的页大小可以是512字节、2KB、4KB和8KB。
• Block — (specified by device) NAND device最小的擦除单元, 由许多页组成。
• Page — (specified by device) unit of flash data containing main and spare areas
• Main area of a page — stores data
• Spare area of a page — stores ECC and other software information
• Sector — 一个基本的传输单元
• 对于设备的页是 2KB甚至更小,与页一样大小;
• 对于设备的页大于2KB, 页被分解为许多虚拟页,这种情况下,sector size就是virtual page大小。
• Virtual page — is the physical page size divided by the splitting factor,
NFC_CFG[PAGECNT]
ECC — error-correcting code
• BCH (Bose Chaudhuri Hocquenghem) — cyclic error-correcting code that corrects
multi-bit errors
32.1.2 功能
NAND flash控制器有以下功能:
8位或者16位NAND flash接口
9 KB RAM buffer
• Memory-mapped registers and SRAM buffer
支持flash device指令, such as page read, page program, reset, block
erase, read status, read ID, copy-back, multiplane read/program, interleaved read/
program, random input/output, read in EDO mode.
• Integrated DMA engine
• Two configurable DMA channels
• Use DMA channel 1 only to read/write a page for main and spare area of a
page
• Use DMA channel 1 to read/write the main area of a page, and DMA
channel 2 for the spare area
• ECC mode
• In ECC mode, NFC supports 4/6/8/12/16/24/32-bit error correction.
• ECC mode 可以被绕过.
32.2 外部信号描述
Table 32-1. NFC Signal Properties
Name Function I/O Reset
NFC_ALE Flash address 锁存使能 O 1
NFC_CE Flash chip enable O 1
NFC_CLE Flash command锁存使能 O 1
NFC_R/B Flash ready/busy I Pull up
NFC_RE Flash read enable O 1
NFC_WE Flash write enable O 1
NFC_IO[15:0] Flash data bus I/O —
Need to configure both PE and PS bit to 1'b1 of pin control register PORTC_PCR18 to make NFC_R/B pull up, when PTC18 is configured to MUX=6 (NFC_R/B).
32.3 Memory Map/Register Definition
32.3.1 Flash command 1 (NFC_CMD1)
定义可能会被传送到flash设备的第二第三指令字节。
31-24 BYTE2
23-16 BYTE3
32.3.2 Flash command 2 (NFC_CMD2)
31-24 BYTE1 定义可能会被传送到flash设备的第一指令字节。
23-8 CODE 用户定义的flash操作顺序
每一位代表一个行为。如果位被设置,相应的行为在写1来开始后就会被执行。
0111_1110_1110_0000 (0x7EE0) 读数据(BYTE1, 5x Address, BYTE2, R/ B , read data)
1111_1111_1101_1000 (0xFFD8) 写页 (DMA,BYTE1, 5x Address, write data, BYTE2, R/ B , BYTE3, read
status)
0100_1110_1101_1000 (0x4ED8) 块删除(BYTE1, 3x Address, BYTE2, R/ B , BYTE3, read status)
0100_1000_0000_0100 (0x4804) 读 ID (BYTE1, 1x Address, read ID)
0100_0000_0100_0000 Reset (0x4040) (BYTE1, R/ B )
0111_1110_0000_0000 CMD+address (0x7E00) (BYTE1, 5xaddress)
1111_1111_1100_0000 Write page burst (0xFFC0) (DMA,BYTE1,5xAddress, write data, BYTE2,R/ B )
0 BUSY_START还有一个忙指示器和开始指令BUSY_START
值为0 在读的过程中,flash控制器空闲并且可以传送下一条指令。在写过程,无行为。
值为1 在读过程中,指令执行是忙状态。在写过程,开始指令执行。
32.3.3 Column address (NFC_CAR)
列地址的第二字节与第一字节column
15-8 BYTE2
7-0 BYTE1
32.3.4 Row address (NFC_RAR)
29 CS1 1是使能。
28 CS0
25 RB1
Ready/busy 1使能
决定是否NFC_R/B正在等待R/B指令。如果NFC_CE与NFC_R/B线数相等,则CSn与RBn区域必须保持相等的值。如果只有NFC_R/B正在使用,则CSn决定真正的片选,并且该区域一直是0.
RB0
。。。。。。。。。。。。则CSn决定真正的片选,并且该区域一直是1.
行地址的第一、第二、第三字节。ROW
23-16 BYTE3
15-8 BYTE2
7-0 BYTE1
32.3.5 Flash command repeat (NFC_RPT)
15-0 COUNT
16-bit repeat count
确定 NFC_CMD2[CODE] 被执行多少次。 If 0 or 1, flash command 被执行了一次。
32.3.6 Row address increment (NFC_RAI)
行地址增量
23-16 INC3 行地址的第三字节增量
15-8 INC2 行地址的第二字节增量
7-0 INC1 行地址的第一字节增量
32.3.7 Flash status 1 (NFC_SR1)
read ID command返回的第一、第二、第三、第四字节。
31-24 read ID指令返回的第一字节
23-16 。。。。。。。。。二。。
15-8 。。。。。。。。。三。。
7-0 。。。。。。。。。四。。
32.3.8 Flash status 2 (NFC_SR2)
read ID command返回第五字节。由读状态指令返回的字节。
31-24 read ID返回的第五字节
23-8保留
7-0 由读状态指令返回的字节。
32.3.9 DMA channel 1 address (NFC_DMA1)
31-0 ADDRESS DMA 通道1 地址. 8-byte aligned.
32.3.10 DMA configuration (NFC_DMACFG)
被DMA通道传输的字节数,8字节倍数。DMA通道的状态(被激活,当触发就会开始传输;不被激活)。
31-20 count1 DMA通道1
19-13 COUNT2 DMA通道2
12-9 OFFSET2 DMA通道2的256字节偏移。
8-2 保留
ACT1 DMA通道1状态 0是未被激活 ;1激活
ACT2 DMA通道2 状态 0是未被激活; 1 激活
32.3.11 Cach swap (NFC_SWAP)
当DMA传输数据从或去NFC cache (NFC SRAM buffer),或者当CPU读或者写数据来自或者去NFC cache通过内部总线,所有的到达nfc_swap[addr1]的通道都直接到达nfc_swap[addr2]。类似的,所有到达nfc_swap[addr2[的通道也直接到达nfc_swap[addr1].
这个功能可以允许坏块标记在页空余空间的第一个位置。因为flash控制器的交织数据和页大小大于2KB的flash设备上的ECC字节方式,坏块标记的位置被转移了,并且不在页的空余空间的第一位置出现。cache swap功能可以让坏块标记在希望出现的位置上。
27-17 ADDR1 低的交换地址
11-1 ADDR2 高的交换地址
32.3.12 Sector size (NFC_SECSZ)
12-0 如果只有页的部分被编程或者读,SIZE可以被设置为affected bytes, 不是页的大小.然后ECC和DMA(data bytes)在指定的字节数上操作,由SIZE表明。
对于16位数据宽度的flash设备,只有odd SIZE被支持。实时的大小是SIZE-1.
当用到ECC功能,确保SIZE等于默认的值(data+ECC字节)。
32.3.13 Flash configuration (NFC_CFG)
31 STOPWERR 错误停止位 0 写错误时不停止
30-22 ECCAD[11:3] ECC状态在SRAM中的字节地址
21 ECCSRAM 0 不将ECC状态写入SRAM ;1 将ECC状态写入SRAM
20 DMAREQ 0 在ECC执行后不传输sector;1 在ECC执行后使用DMA传输sector
19-17 ECCMODE
000 No correction, ECC bypass
001 4-error correction (8 ECC bytes)
010 6-error correction (12 ECC bytes)
011 8-error correction (15 ECC bytes)
100 12-error correction (23 ECC bytes)
101 16-error correction (30 ECC bytes)
110 24-error correction (45 ECC bytes)
111 32-error correction (60 ECC bytes)
16 FAST 快速1、慢速 0 flash timing
15-13 IDCNT 读id指令的读的字节数
12-8 timeout
7 位宽BITWIDTH 0是8位宽flash mode;1是16位flash mode
5 AIAD 1自动增加flash行地址 ;0不自动增加行地址
4 AIBN 1自动增加buffer number;0不自动增加。。
3-0 PAGECNT
虚拟页来编程或者读的数量。
32.3.15 Interrupt status (NFC_ISR)
写错误中断、结束中断、指令空闲中断、忙等。。。
31 WERR 写错误中断
30 DONE 完成中断
29 IDLE 指令空闲中断
28 保留
27 WERRNS 写错误状态
26 CMDBUSY 指令忙
25 RESBUSY residue engine busy
24 ECCBUSY ECC engine 忙
23 DMABUSY DMA engine忙
22 WERREN NFC_ISR[WERR]使能
21 DONEEN Enable bit for NFC_ISR[DONE]
20 IDLEEN Enable bit for NFC_ISR[IDLE]
19 WERRCLR 写1清除NFC_ISR[WERR].
18 DONECLR 写1清除NFC_ISR[DONE].
17 IDLECLR 写1清除NFC_ISR[IDLE].
5-4 RESBN Residue buffer number
3-2 ECCBN ECC buffer number
1-0 DMABN DMA buffer number
32.4 功能描述
NFC在单个或者一堆外部NAND flash芯片上执行命令。操作包括读、编程、复位、擦除、状态读、读ID。
NFC块包含一个DMA engine和build-in ECC logic。对于每一个读和写,NFC执行ECC计算on-the-fly。两个DMA通道被配置成每一个读和写:一个为了main area,一个为了spare area。可以把第二个DMA通道失能,只用第一个DMA通道来传输main和spare数据。
有8种ECC设置:0,4,6,8,12,16,24,32位错误。使用0,8,12,15,23,30,45和60ECC字节。The ECC works on page sizes of 512+spares bytes, 1K+spares bytes, 2K+spares bytes. The ECC algorithm used is a BCH code.
error corrector可以将ECC状态写入spare area,因为读是流水线的。
ECC状态被写入sector的辅助区,并且传送到存储器,It's up to the CPU to inspect the ECC
result in memory, and act appropriately.
读是流水线型. 写是 flow-through;在写过程中没有提前操作被执行. 在写过程中发现了问题,指令序列就会被中断,CPU被告知。
32.4.1 NFC Buffer Memory Space
存储器大小是1152 X 64位,被分成4个缓冲区,在non-boot模式下,地址范围是
• Buffer 0: 0x0000 – 0x08FF
• Buffer 1: 0x1000 – 0x18FF
• Buffer 2: 0x2000 – 0x28FF
• Buffer 3: 0x3000 – 0x38FF
32.4.5 NAND Flash中的数据组织
在flash上的页可以被分解成很多虚拟的ECC/DMA页。控制参数是NFC_CFG[PAGECNT]。参数给出了虚拟ECC/DMA页的数量在一个flash 页中。
虚拟页被分解为用户(主要)区域和ECC(spare)区域。在用户区域的数据可以被应用设置或使用,在ECC区域的数据被ECC设置和使用。
32.4.6 Flash Command Code Description
在NFC_CMD2[CODE]16位指令代码,有一位被设置,行为就会执行,指令重复的次数根据NFC_RPT[COUNT]的值。如果值是1或者0,指令执行一次。
32.4.7 Interrupts
有两种标识指令执行结束的中断:
1、执行完中断NFC_ISR[DONE].标志着当一个新的指令被分配。结束中断在flash数据被改正和送入存储器之前被给出,因为ECC engine和DMA engine的操作是流水线的。
2、指令空闲中断NFC_ISR[IDLE].如果你想使用在接下来的过程中产生的数据就使用该中断。
当使用1完成中断,可以假定当done中断被接收写页面传输结束。当done被读页面接收,数据可能还在DMA或者ECC中。为了检查这个,CPU应该记住与指令联系的缓存的号码(NFC_CMD2[BUFNO]),并且等待直到DMA和ECC有一个空闲或者都在不同缓存号码上忙。(The ECC buffer
number and DMA buffer number fields do not match the BUFNO specified with
command.)可以检查任意done中断或者查询寄存器。
- k60 NANDFLASH控制器(NFC)
- SAMA5D3X芯片的NandFlash控制器(NFC)操作详解
- nandflash控制器
- JZ2440的NandFlash控制器
- 深度分析NandFlash —控制器参数TACLS、TWRPH0和TWRPH1的确定(TQ2440_K9F2G08U0A)
- 玩转K60---(一)基于K60 _PORT端口的
- 嵌入式学习之NandFlash控制器读写编程
- NandFlash 控制器操作实例:读Flash
- K60系列学习(一)
- K60(一)端口复用问题
- NandFlash控制器参数TACLS、TWRPH0和TWRPH1的确定
- NANDFLASH介绍(转)
- NANDFLASH调试(二)
- NANDFLASH调试(三)
- nandflash详解(不错)
- NandFlash详述(上)
- NandFlash详述(中)
- NandFlash详述(下)
- 在Eclipse中导入两个名字相同的工程的方法
- Linux NFS服务器的安装与配置
- 邮件链接
- Android学习 - 使用及实现系统分享接口
- 【绿皮】新GRE填空补充练习题Exercise11
- k60 NANDFLASH控制器(NFC)
- iOS开发之微信支付
- 安卓手机连接IP100蓝牙打印机实现打印功能
- TWebBrowser 与 MSHTML(5): document 对象的属性、方法、事件纵览
- VS2013常用快捷键
- Android 屏幕适配方案
- Logistic回归模型的训练与测试,C++ 实现
- Error:android.content.res.Resources$NotFoundException: String resource ID #0x1
- android中xml tools属性详解