nand編程
Ⅰ NAND的基本操作
每一個頁均包含一個2048位元組的數據區和64位元組的空閑區,總共包含2,112位元組。空閑區通常被用於ECC、耗損均衡(wear leveling)和其它軟體開銷功能,盡管它在物理上與其它頁並沒有區別。NAND器件具有8或16位介面。通過8或16位寬的雙向數據匯流排,主數據被連接到NAND存儲器。在16位模式,指令和地址僅僅利用低8位,而高8位僅僅在數據傳輸周期使用。
擦除區塊所需時間約為2ms。一旦數據被載入寄存器,對一個頁的編程大約要300μs。讀一個頁面需要大約25μs,其中涉及到存儲陣列訪問頁,並將頁載入16,896位寄存器中。
介面由6個主要控制信號構成
除了I/O匯流排,NAND介面由6個主要控制信號構成:
1.晶元啟動(Chip Enable, CE#):如果沒有檢測到CE信號,那麼,NAND器件就保持待機模式,不對任何控制信號作出響應。
2.寫使能(Write Enable, WE#): WE#負責將數據、地址或指令寫入NAND之中。
3.讀使能(Read Enable, RE#): RE#允許輸出數據緩沖器。
4.指令鎖存使能(Command Latch Enable, CLE): 當CLE為高時,在WE#信號的上升沿,指令被鎖存到NAND指令寄存器中。
5.地址鎖存使能(Address Latch Enable, ALE):當ALE為高時,在WE#信號的上升沿,地址被鎖存到NAND地址寄存器中。
6.就緒/忙(Ready/Busy, R/B#):如果NAND器件忙,R/B#信號將變低。該信號是漏極開路,需要採用上拉電阻。
數據每次進/出NAND寄存器都是通過16位或8位介面。當進行編程操作的時候,待編程的數據進入數據寄存器,處於在WE#信號的上升沿。在寄存器內隨機存取或移動數據,要採用專用指令以便於隨機存取。
數據寄存器輸出數據的方式
數據寄存器輸出數據的方式與利用RE#信號的方式類似,負責輸出現有的數據,並增加到下一個地址。WE#和RE#時鍾運行速度極快,達到30ns的水準。當RE#或CE#不為低的時候,輸出緩沖器將為三態。這種CE#和RE#的組合使能輸出緩沖器,容許NAND快閃記憶體與NOR、SRAM或DRAM等其它類型存儲器共享數據匯流排。該功能有時被稱為「無需介意晶元啟動(chip enable don't care)」。這種方案的初衷是適應較老的NAND器件,它們要求CE#在整個周期為低(譯註:根據上下文改寫)。
輸入寄存器接收到頁編程(80h)指令時,內部就會全部重置為1s,使得用戶可以只輸入他想以0位編程的數據位元組
帶有隨機數據輸入的編程指令。該指令只需要後面跟隨著數據的2個位元組的地址
指令周期
所有NAND操作開始時,都提供一個指令周期
當輸出一串WE#時鍾時,通過在I/O位7:0上設置指令、驅動CE#變低且CLE變高,就可以實現一個指令周期。注意:在WE#信號的上升沿上,指令、地址或數據被鎖存到NAND器件之中。如表1所示,大多數指令在第二個指令周期之後要佔用若乾地址周期。注意:復位或讀狀態指令例外,如果器件忙,就不應該發送新的指令。
注意:因為最後一列的位置是2112,該最後位置的地址就是08h(在第二位元組中)和3Fh(在第一位元組中)。PA5:0指定區塊內的頁地址,BA16:6指定區塊的地址。雖然大多編程和讀操作需要完整的5位元組地址,在頁內隨機存取數據的操作僅僅用到第一和第二位元組。塊擦除操作僅僅需要三個最高位元組(第三、第四和第五位元組)來選擇區塊。
總體而言,NAND的基本操作包括:復位(Reset, FFh)操作、讀ID(Read ID, 00h)操作、讀狀態(Read Status, 70h)操作、編程(Program)操作、隨機數據輸入(Random data input, 85h)操作和讀(Read)操作等。

Ⅱ 請問,中國有COMPASS品牌的NAND FLASH編程器嗎
艾普科技NPRO6683燒錄器是專為批量燒寫NAND Flash而量身定做的工具,它具有如下特徵:
一、 功能介紹
該款燒錄器支持8MByte(64Mbit)到32GByte(256Gbit)的NAND Flash的快速燒錄,適合具有預裝資料的GPS導航儀,車載電腦主機,高清播放機,高清機頂盒,藍光DVD,網路攝像頭,手持智能設備,學習機,數碼相框,游戲機,電子書,點讀機,語音玩具,監控門禁類等產品在大規模生產中使用,加密CF卡,加密U盤,加密SD卡,加密固態硬碟等存儲工具的Flash原始數據復制(直接PC端復制不可用),它具有如下特徵:
1.採用一托四的結構設計,可以對四片NAND Flash同時進行燒錄,燒錄過程實時校驗寫入數據,絕對保證數據的正確,支持目前的多種軟硬體平台對NAND Flash的管理方式;
2.支持多種軟硬體平台的NAND Flash數據燒寫,內置針對多種軟硬體平台的量身定做的壞塊管理及燒寫方式,極大的提高燒錄良品率。
3.燒錄速度快,512Mbit小頁面Flash速度約1.8MByte/秒(帶校驗),8Gbit大頁面SLC架構Flash編程速度約3MByte/秒(帶校驗),8Gbit大頁面MLC架構Flash編程速度約2.5MByte/秒(帶校驗)。
4.標配4.3寸超大真彩液晶屏,一切操作可視化,觸摸屏及按鍵雙輸入方式,無需連接電腦,方便用戶實時觀察燒錄過程;
5.支持以文件方式燒寫和母片拷貝兩種燒錄方式:
(1)母片拷貝方式:用於將用戶原始Flash上的內容拷貝到板載Flash,之後再將板載Flash上相應的內容寫入空的Flash;
(2)文件方式燒寫:用戶可將指定文件置於SD卡或編程器內置硬碟,本方式讀出文件內容按指定方式(可支持特殊文件系統)寫入Flash;
6.可靈活配置多種參數,如頁讀取、頁、塊內容比較、生成文件、壞塊掃描、擦除、掃描有數據區間等等多種操作:
(1)對母片拷貝方式,可設置特殊壞塊標記,方便適應不同的用戶不同的壞塊管理方式。且可設置拷貝區間,用戶可選擇拷貝有效數據區域,這樣在之後燒寫空片時可降低單位Flash的燒寫時間;
(2)可讀取指定Flash任意頁的內容顯示,方便用戶實時觀察Flash上的數據分布;
(3)可獨立擦除指定的Flash,可獨立掃描指定Flash的壞塊,並形成詳細壞塊分布信息顯示於屏幕;
(4)可掃描Flash上的空白頁或空白塊,方便用戶了解原始Flash上的空間使用情況;
(5)可比較兩個Flash之間不同塊或不同頁的內容,並將不同之處顯示於屏幕,並可順序瀏覽每一處不同;
7.可根據用戶的特殊要求快速修改軟體,按你的特殊要求量身定做燒錄方式(壞塊管理方式),修改周期不超過3個工作日,且可定製特殊的文件系統的管理;
Ⅲ 什麼是NAND快閃記憶體
由於快閃記憶體顆粒中存儲密度存在差異,所以快閃記憶體又分為SLC、MLC、TLC和QLC。簡單的說,NAND快閃記憶體的基本原理,QLC容量大,但性能也變差了。
SLC:每個Cell單元存儲1bit信息,也就是只有0、1兩種電壓變化,結構簡單,電壓控制也快速,反映出來的特點就是壽命長,性能強,P/E壽命在1萬到10萬次之間,但缺點就是容量低而成本高,畢竟一個Cell單元只能存儲1bit信息。
MLC:每個cell單元存儲2bit信息,需要更復雜的電壓控制,有00,01,10,11四種變化,這也意味著寫入性能、可靠性能降低了。其P/E壽命根據不同製程在3000-5000次不等。
TLC:每個cell單元存儲3bit信息,電壓從000到001有8種變化,容量比MLC再次增加1/3,成本更低,但是架構更復雜,P/E編程時間長,寫入速度慢,P/E壽命也降至1000-3000次,部分情況會更低。壽命短只是相對而言的,通常來講,經過重度測試的TLC顆粒正常使用5年以上是沒有問題的。
QLC或者可以叫4bit MLC,電壓有16種變化,但是容量能增加33%,就是寫入性能、P/E壽命與TLC相比會進一步降低。具體的性能測試上,美光有做過實驗。讀取速度方面,SATA介面中的二者都可以達到540MB/S,QLC表現差在寫入速度上。
因為其P/E編程時間就比MLC、TLC更長,速度更慢,連續寫入速度從520MB/s降至360MB/s,隨機性能更是從9500 IOPS降至5000 IOPS,損失將近一半。

分類
按種類分
U盤、CF卡、SM卡、SD/MMC卡、記憶棒、XD卡、MS卡、TF卡、PCIe快閃記憶體卡。
按品牌分
矽統(SIS)、金士頓、索尼、LSI、閃迪、Kingmax、鷹泰、創見、愛國者、紐曼、威剛、聯想、台電、微星、SSK、三星、海力士。
以上內容參考:網路-快閃記憶體
Ⅳ NANDFLASH讀寫編程過程中提示Good blocks not enough
..這是由於要燒錄的數據超過了晶元好塊的大小,所以設置器件配置字(Dev.Config)還應該結合晶元的實際情況,如果檢查出晶元中有16個壞塊,那實際的好塊 (ALL Blocks)應該相應減去0x10. 有時在讀寫母片時也會出現這樣的情況,而且檢查壞塊多少時發現有很多的壞塊。這是因為母片中的壞塊標志位被轉移到其他的地方。默認的壞塊標志位被寫成有效的數據。
Ⅳ 什麼編程器可以燒錄NAND Flash而且要穩定一點.
有款FLASHRUNNER萬用型燒錄器 是義大利製造的,支持大部分晶元燒錄,調試完成後比較穩定。此燒錄器在線燒錄器,可受控。此款燒錄器唯一缺點是調試比較麻煩!
Ⅵ 如何製作和使用Jffs2文件系統
嵌入應用:如何製作和使用Jffs2文件系統 (zhuan)本文主要介紹如何在AT91SAM9261EK板子上製作和使用jffs2文件系統,使用的是linux-2.6.21內核。
首先配置MTD
$ make menuconfig
進入 Memory Technology Devices (MTD) --->
<*> Memory Technology Device (MTD) support
[*] Debugging
[*] MTD partitioning support
[*] Command line partition table parsing
[*] Direct char device access to MTD devices
[*] Caching block device access to MTD devices
RAM/ROM/Flash chip drivers ----->
<*> Detect non-CFI AMD/JEDEC-compatible flash chips
<*> Support for AMD/Fujitsu flash chips
Mapping drivers for chip access --->
[*] Support non-linear mappings of flash chips
Self-contained MTD device drivers --->
[*] Support for AT45... DataFlash
NAND Flash Device Drivers ---->
[*] NAND Device Support
[*] Support for NAND Flash /SmartMedia on AT91
File systems ---->
<*> Second extended fs support
[*] Inotify file change notification support
[*] Inotify support for user space
<*> Filesystem in Userspace support
Miscellaneous filesystems
<*> Journalling Flash File System v2 (JFFS2) support
[*] JFFS2 write-buffering support
<*> Compressed ROM file system support (cramfs)
以上配置中沒有列出的,都沒選;其配置僅做參考,可根據自己的需要自行配置。
$ make all
其次製作mtd-util工具
從網上下載zlib-1.2.3.tar.gz解壓縮$ cd zlib-1.2.3
$ ./configure –prefix=/usr/local/arm/3.4.1/arm-linux --shared
修改Makefile如下:
CC=arm-linux-gcc
LDSHARED=arm-linux-ld -shared
$ make all
$ make install
注意:這里是安裝在/usr/local/arm/3.4.1/arm-linux目錄下
由於交叉編譯mtd工具時需要zlib.h文件,所以在編譯之前先安裝zlib庫文件。
從網上下載mtd-snapshot-20050519.tar.bz2 解壓縮 $ cd mtd/util
修改該目錄下的Makefile:
CROSS=arm-linux-
$ make all
然後將該目錄下生成的 flash_erase,flash_eraseall, mkfs.jffs2工具放在ramdisk 文件系統中(我這里放在/bin目錄下),另外在ramdisk文件系統的dev目錄下要保證有mtd0~mtd9,mtdblock0~mtdblock9這些設備,如果沒有可參考 ramdisk文件系統的製作,也可從pc機相同目錄下拷貝,要加上文件屬性。
另外,需要將/arm-linux/lib目錄下的libz.so, libz.so.1, libz.so.1.2.3文件拷貝到ramdisk文件系統的/lib目錄下,否則mkfs.jffs2工具不能使用。
最後將新生成的uImage和ramdisk文件下載到板子上,起動系統,使用命令 cat /proc/mtd可以看到
dev: size erasesize name
mtd0: 00040000 00020000 "Partition 1"
mtd1: 0ffc0000 00020000 "Partition 2"
mtd2: 00420000 00000210 "spi0.0-AT45DB321x"
這里mtd0,mtd1是nandflash上的分區; mtd2是dataflsh上的分區,該分區上放有u-boot,uImage.img,ramdisk.img,所以我們這里可以使用空的nandflash上的兩個分區。使用之前要先用工具flash_erase或者flash_eraseall擦除nandflash,具體使用的步驟如下:
# flash_erase /dev/mtd1
製作jffs2映像
# cd /var/tmp
# mkdir jffs2 (jffs2下的目錄可以任意建)
# mkfs.jffs2 –d jffs2/ -o jffs2.img
# cp /var/tmp/jffs2/jffs2.img /dev/mtdblock1
最後# mount -t jffs2 /dev/mtdblock1 /mnt/mtd即可,使用結束可使用$ umount /mnt/mtd卸載.
如果只是當作普通的jffs2 來使用dataflash或者nandflash,可不必製作 jffs2映像,只需要最後一步,# mount -t jffs2 /dev/mtdblock1 /mnt/mtd即可。
AT91sam9263EK使用JFFS2根文件系統
在AT91sam9263EK成功配置了NFS根文件系統後,後來又想把JFFS2也移植到AT91sam9263EK上吧,說干就干。
1. 呵呵,其實很簡單我使用的linux-2.6.20內核里已經有jffs2 文件系統支持,選上jffs2即可
File systems --->
Miscellaneous filesystems --->
<*> Journalling Flash File System v2 (JFFS2) support
(0) JFFS2 debugging verbosity (0 = quiet, 2 = noisy)
[*] JFFS2 write-buffering support
[*] JFFS2 summary support (EXPERIMENTAL)
[*] JFFS2 XATTR support (EXPERIMENTAL)
[*] JFFS2 POSIX Access Control Lists
[*] JFFS2 Security Labels
[*] Advanced compression options for JFFS2
[*] JFFS2 ZLIB compression support
[*] JFFS2 RTIME compression support
[ ] JFFS2 RUBIN compression support
JFFS2 default compression mode (priority)
選上MTD支持
Device Drivers --->
Memory Technology Devices (MTD) --->
<*> Memory Technology Device (MTD) support
[ ] Debugging
<*> MTD concatenating support
[*] MTD partitioning support
< > RedBoot partition table parsing
[*] Command line partition table parsing
<*> ARM Firmware Suite partition parsing
--- User Moles And Translation Layers
<*> Direct char device access to MTD devices
<*> Caching block device access to MTD devices
<*> FTL (Flash Translation Layer) support
<*> NFTL (NAND Flash Translation Layer) support
[ ] Write support for NFTL
2. 從ttp://www.linux-mtd.infradead.org/上下載
mtd-utils-1.0.0.tar.gz 到宿主機。
解壓
tar xvzf mtd-utils-1.0.0.tar.gz
進入mtd-utils-1.0.0目錄修改Makefile進行編譯。
編譯出mkfs.jffs2,nandwrite等工具
3. 創建jffs2根文件系統:
首先要有一個其他類型的根文件系統,製作和獲取方式可以參見<< AT91sam9263EK使用NFS根文件系統>>
比如可以:
mount -t cramfs rootfs_lnxdemo.cramfs tmp/ -o loop
rootfs_lnxdemo.cramfs由atmel提供當然你可以自己製作,這里直接使用atmel的省去了製作的麻煩。
tar czvf target.tar.gz tmp/
生成jffs2根文件系統鏡像:
mkfs.jffs2 –l –s 0x400 –e 0x20000 –d tmp/ -o target.jffs2
4. 燒寫jffs2根文件系統鏡像到nand flash。
燒寫方法應該有多種常用的有2種(呵呵自己認為的):
a.通過nand編程器燒寫鏡像文件到nand flash晶元然後再焊接到pcb.
b.掛載nfs文件系統,使用nandwrite工具寫鏡像文件
到mtd設備。
第一種適合生產時使用,而我們測試時候比較適合使用第二種方式。
掛載nfs文件系統:
nandwrite –o /dev/mtd1 target.jffs2
或者是在nfs 根文件系統下:
mount –t jffs2 /dev/mtdblock1 /mnt
cd /mnt
tar xvzf ../target.tar.gz
umount /mnt
5. 配置內核啟動參數如下:
setenv bootargs mem=64M console=ttyS0 115200 root=/dev/mtdblock1 rootfstype=jffs2 rw
6. 重新啟動,呵呵內核使用jffs2文件系統自動掛載根文件系統到mtdblock1設備上。
ls 測試一下
vi test
hello this is for test jffs2 filesystem.
保存退出。
Sync
重新啟動
vi test
內容依舊。
Ok jffs2根文件系統引導成功。
Linux聯盟收集整理 ,轉貼請標明原始鏈接
Ⅶ 如何用編程器對NAND Flash進行一鍵編程
1. 高集成的 NAND Flash 管理平台 前面已經向大家剖析了 NAND Flahs 的編程結構,對 NAND Flash 編程是業界公認的難 題,操作 NandFlash 過程中會隨機出現壞塊,這是每個嵌入式系統的致命隱患。隨著移動技 術的發展, 很多數據終端等產品的功能不斷增加, 必須要進行平台化、 系統化的整合。 靈活、 寬泛的 Android、Linux、WinCE 系統是平台的首選。 系統的調試、引導程序的裝載、文件系統的啟動,如果每個文件都需要工程師通過電腦 操作,並衍生到生產端,整個研發、生產流程將異常繁瑣,無疑會導致下載速度慢、效率低。 下面介紹用 SmartPRO 6000F 通過 5 個步驟來完成對 NAND Flash 的「一鍵」編程 1.1 SmartPRO 6000F 編程 NAND Flash 的步驟: 1.1.1 第一步:調入需要編程的文件; 通過 SmartPRO III 軟體,選擇需要編程的晶元後,在「操作選擇」中調入文件。如下圖: 圖 1 調入需要編程的文件 1.1.2 第二步:填寫文件地址 注意,如果文件是否自帶備用區(OOB)數據,直接填地址即可。 產品應用筆記 ?2014Guangzhou ZHIYUAN Electronics Stock CO., LTD. 1 廣州致遠電子股份有限公司 編程器應用文檔 NAND Flash 編程解析 圖 2 填寫文件地址 1.1.3 第三步:選擇 ECC 演算法 如果文件沒有備用區數據,請指明 ECC 演算法,目前 SmartPRO III 軟體支持 10 多種 主流的 ECC。 產品應用筆記 ?2014Guangzhou ZHIYUAN Electronics Stock CO., LTD. 2 廣州致遠電子股份有限公司 編程器應用文檔 NAND Flash 編程解析 圖 3 選擇 ECC 演算法 1.1.4 第四步:設置壞塊管理策略 壞塊管理涉及到 NAND Flash 的燒錄良率,SmartPRO III 軟體完全按照各半導體公 司的標准標注壞塊的方法對 NAND Flash 壞塊進行標注,絕對不會誤操作。 產品應用筆記 ?2014Guangzhou ZHIYUAN Electronics Stock CO., LTD. 3 廣州致遠電子股份有限公司 編程器應用文檔 NAND Flash 編程解析 圖 4 設置壞塊管理策略 1.1.5 第五步:保存工程 點擊 「保存工程」 , 1 分鍾後可以得到您設置 NAND Flash 的所有管理項的批處理文 件了。 圖 5 保存工程 1.1.6 第六步:一鍵量產 以後每次燒錄 NAND Flash 的時候,調入保存好的工程文件,一鍵量產! 圖 6 一鍵量產 產品應用筆記 ?2014Guangzhou ZHIYUAN Electronics Stock CO., LTD. 4 廣州致遠電子股份有限公司 編程器應用文檔 NAND Flash 編程解析 2. NAND Flash 編程小結 雖然 NAND Flash 有這些特殊的地方,但隨著人們對「大數據」的追求,應用將越 來越廣,高效、穩定的編程工具將能大幅提高由研發到生產的導入效率,為產品市場化 提供有效保障。
