S5PV210的NandFlash控制器部分:
1.如图是S5PV210的NandFlash的控制框图:
结构框图中关键点:SFR(我们后续编程的关键,编程时就是通过读写SFR来产生Nand接口时序以读写Nand芯片的) + Nand interface(硬件接口,将来和Nand芯片的相应引脚进行连接) + ECC生成器
S5PV210的Nand控制器的主要寄存器:
NFCONF、NFCONT、NFCMMD、NFADDR、NFDATA、NFMECCD0&NFMECCD1、NFSECCD、NFSTAT
2.Nand芯片本身通过Nand接口电路来存取数据,Nand接口电路和SOC之间通过Nand接口时序来通信。Nand接口时序相对复杂,如果要SoC完全用软件来实现Nand接口时序有一些不好(主要是:第一很难保证时序能满足、容易不稳定;第二代码很难写)。解决方案是:在SoC内部集成一个Nand控制器(实质就是一块硬件电路,这个硬件电路完全满足Nand接口时序的操作,然后将接口时序的操作寄存器化)
SOC和Nand芯片之间通信,在SoC没有Nand控制器时需要SoC自己来处理接口时序,编程很麻烦,需要程序员看Nand芯片的接口时序图,严格按照接口时序图中编程(尤其要注意各个时间参数);在SoC有Nand控制器时SoC只需要编程操控Nand控制器的寄存器即可,Nand控制器内部硬件会根据寄存器值来生成合适的Nand接口时序和Nand芯片通信。所以在有Nand控制器时编程要简单很多,我们读写Nand芯片时再也不用关注Nand接口时序了,只要关注SoC的Nand控制器的寄存器即可。
3.硬件原理图:
看数据手册的引脚封装,好像和原理图的Nand有些不一样,之后详细分析代码看能不能解开疑惑。
下一节,我们就开始分析代码。