在嵌入式设备中开发中,硬件设计上常常因为成本的原因,而选择NAND FLASH作为程序存储设备,在进行U-BOOT移植就需要对此设备进行驱动移植,而其中有一项就是对NAND FLASH配置寄存器NFCONF TACLS、TWRPH0、TWRPH1值的设置,这里将自己的理解记录下来。
一、硬件数据手册资料说明:
1. CPU:S3C2440A Revision 1.3
2. NAND Flash:K9F2G08U0C Rev. 0.2
二、时序分析
1. S3C2440A手册中的时序
2. NAND FLASH K9F2G08U0C手册中的时序
3. NAND FLASH K9F2G08U0C手册中的时序要求
4. 因为在NAND FLASH中没有找到与S2C2440A 图6-4中读写时序图,所以这里以S3C2440A 图6-3来对比计算。因此可得如下公式
4.1 对于CLE
4.1.1 TACLS_d = tcls - twp = 12 -12 = 0ns
4.1.2 TWRPH0_d = twp = 12ns
4.1.3 TWRPH1_d = tclh = 5ns
4.2 对于ALE
4.2.1 TACLS_d = tals - twp = 12 -12 = 0ns
4.2.2 TWRPH0_d = twp = 12ns
4.2.3 TWRPH1_d = talh = 5ns
4.3 由以上得知,不管是CLE,还是ALE,TACLS_d = 0ns、TWRPH0_d = 12ns、TWRPH1_d = 5ns
5. S3C2440A 配置寄存器NFCONF关于TACLS、TWRPH0、TWRPH1的描述
6. 如果FCLK = 400MHz,对于时钟分频系数FCLK:HCLK:PCLK = 1:4:8,则HCLK = 100MHz = 10ns;则根据步骤5的公式有
6.1 TACLS_d = 0ns ≤ HCLK x TACLS = 10 * TACLS ==> TACLS ≥ 0
6.2 TWRPH0_d = 12ns ≤ HCLK x (TWRPH0 + 1) = 10 * (TWRPH0 + 1) ==> TWRPH0 ≥ 1
6.3 TWRPH1_d = 5ns ≤ HCLK x (TWRPH1 + 1) = 10 * (TWRPH1 + 1) ==> TWRPH0 ≥ 0
7. 根据步骤6计算得出的值对S3C2440A的配置寄存器NFCONF TACLS、TWRPH0、TWRPH1进行初始化