以下知识点是根据韦老大的教程所做的笔记,板子是S3C2410。
About NorFlash and NandFlash
NOR |
NAND |
|
接口 |
RAM-like,引脚多 |
引脚少,复用 |
容量 |
小,1M,2M,32M |
大,128M,256M,1G |
读 |
简单 |
复杂 |
写 |
发出特定指令,复杂 |
复杂 |
价格 |
贵 |
便宜 |
质量 |
几乎没有坏块 |
可能有坏块,发生位反转 |
1.读数据
md.b 0
2.读ID NOR手册上
往地址555H写入AAH
往地址2AAH写入55H 解锁完成
往地址555H写入90H
读0地址得到厂家ID: C2H
读1地址得到设备ID:22DAH 或 225BH
退出读ID状态 往任意地址写入F0
如果芯片的接口是A1接到NOR的A0,那么发出的命令要左移一位,NOR才能接收到555这个地址
例如:555H<<1
U-BOOT操作:
往地址AAAH写AAH |
mw.w aaa aa |
往地址554H写55H |
mw.w 554 55 |
往地址AAAH写90H |
mw.w aaa 90 |
读0地址得到厂家ID: C2H |
md.w 0 1 |
读2地址得到设备ID: 22DAH 或 225BH |
md.w 2 1 |
退出读ID状态 往任意地址写入F0 |
mw.w 0 f0 |
3.规范
MOR有两种规范 :
①JEDEC:通过发出命令来读写ID,发送命令,与内核的数组(jedec_table包含nor的各种信息)进行比较一下,发送数据,老式
②CFI:本身就包含了nor容量规格等信息
进入CFI模式 |
往55H写入98H |
读数据 |
读10H得到0051 读11H得到0052 读12H得到0059 读27H得到容量 (该值的2^n就是容量) |
退出CFI模式 |
往任意地址写入F0 |
如果芯片的接口是A1接到NOR的A0,那么发出的命令要左移一位,NOR才能接收到555这个地址
例如:555H<<1
U-BOOT操作:
进入CFI模式 |
往AAH写入98H |
mw.w aa 98 |
读数据 |
读20H得到0051 读22H得到0052 读24H得到0059 读41H得到容量 (该值的2^n就是容量) |
md.w 20 1 md.w 22 1 md.w 24 1 md.w 41 1 |
退出CFI模式,往任意地址写入F0 |
Mw.w 0 f0 |
4.写数据
2410读数据uboot操作
往地址AAAH写AAH |
mw.w aaa aa |
往地址554H写55H |
mw.w 554 55 |
往地址AAAH写90H |
mw.w aaa 90 |
读0地址得到厂家ID: C2H |
md.w 0 1 |
读2地址得到设备ID: 22DAH 或 225BH |
md.w 2 1 |
退出读ID状态 往任意地址写入F0 |
mw.w 0 f0 |
以下是imx257的nand读写数据的操作,