首先還是啟動方式NAND Flash的過程,因為NAND Flash是不支持程序在NAND內部運行的所以要把NAND搬到內存中運行,由于S3C2440內部的SRAM只有4K,當程序遠大于4K時,這種方法是行不通的,于是我們可以讓NAND中4K之后的程序搬到SDRAM中來運行

正如數據手冊上所說,NOR的價格較NAND來說比較昂貴,再加上NOR的容量遠比NAND小的多,再比如NOR一頁的字節數也比NAND大的很多,而要在某個地址寫入數據,必須先把地址所在的頁擦除,所以更多的時候NAND用來存儲數據,NOR用來存儲程序。

如上圖模型,當程序的容量大于4K的時候,NAND的前4K的程序將會被硬件自動引導到2440的SRAM中去執行,我們把編寫好的SDRAM驅動程序裝入前4K代碼,并初始化使NAND中4K以后的代碼拷貝到SDRAM
NAND的接口也和其他的RAM-LIKE芯片大不相同,比如內存、網卡等芯片都是有地址線的,他們是由CPU統一編址的,而NAND就不一樣了,它的地址和CPU發出的地址是不一樣的。

上圖就是開發板上外接的NAND Flash,有圖很明顯可以看出,NAND是沒有地址線的,只有八位的數據線,有經驗的人很快就能聯想到,NAND正是用這僅有的八條數據線來發送命令、地址和數據的,可謂是一線多用,大大的減少了CPU用來與它連接的管角,但這也令CPU與NAND的通信變得復雜多了,可謂有利有弊。
左邊的那些管教就是用來控制數據線的輸入是命令、數據還是地址的,不要以為我們要手工控制這些引腳來告訴NAND這哥們兒我要發送的是數據還是地址啊,除非你用51才會回到那個時代,我們只要操作S3C2440的NAND Flash的內部寄存器就可以了,根據寄存器對應的功能,發送數據的時候,自然就會把對應的引腳拉高!