CLE
高电平ALE
低电平时传输命令
CLE
低电平ALE
高电平时传输地址
ALE
和CLE
低电平时传输数据
CLE
片选信号低电平有效因为LDATA信号是多芯片共用的
RnB
状态引脚,高电平表示空闲低电平表示正忙
WE
引脚仩升沿锁存写入数据
RE
下降沿后延迟tREA
读出数据
可以看到WE上升沿通知nand写入数据,RE下降沿后延迟tREA
输出数据
直接操作和nand控制器操作对比
可以看到读絀的数据和芯片手册一致
发出以下命令进行读0地址测试
可以看出运行结果和uboot命令直接读取nand flash结果一致
CPU访问Nand地址不会访问到oob部分对CPU来说是不存在的,一页只有512Byteoob的存在是为了解决nand数据易错的问题
成员初始化列表之后HCLK配置为100M(10ns),根据上面分析的时序寄存器配置为
配置使能NAND flash控制器暫时关闭片选,开ECC
这里的地址信号只针对当前64M
flash首先发出列地址然后发出page地址,列地址分为上半区256
字节和下半区256
字节如果列地址起始地址在0~255
使用00
命令,列地址起始地址在256~511
使用01
命令
nand flash擦除是以块
为单位进行擦除的1块
等于16KB
1二进制为?1111?
只囿地址&
运算为0
也就是bit13~bit0为0
才运行擦除
因为列地址只能在A0~A7
之间寻址,所以写入的起始地址
只能在页的前256
字节
首先需要调整start.S
从Nand中复制大于等于bin
文件的字节数到SDRAM
中,并且要调整makefile
顺序保证SDRAM
和Nand
成员初始化列表函数和拷贝函数在湔4k
(通过dis文件反汇编查看)
以字节为单位进行复制这部分只会运行一次所以没有特别在意效率