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

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

如上圖模型,當程序的容量大于4K的時候,NAND的前4K的程序?qū)挥布詣右龑У?440的SRAM中去執(zhí)行,我們把編寫好的SDRAM驅(qū)動程序裝入前4K代碼,并初始化使NAND中4K以后的代碼拷貝到SDRAM
NAND的接口也和其他的RAM-LIKE芯片大不相同,比如內(nèi)存、網(wǎng)卡等芯片都是有地址線的,他們是由CPU統(tǒng)一編址的,而NAND就不一樣了,它的地址和CPU發(fā)出的地址是不一樣的。

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