norflash需要很長(zhǎng)的時(shí)間進(jìn)行抹寫亏拉,但是它提供完整的尋址與數(shù)據(jù)總線损晤,并允許隨機(jī)存取存儲(chǔ)器上的任何區(qū)域灸促,這使得它非常適合取代老式的rom芯片瓦侮。當(dāng)時(shí)rom芯片主要用來存儲(chǔ)幾乎不需要更新的代碼异旧,例如電腦的BIOS或機(jī)上盒(set-top-box)的固件意述。norflash可以忍受一萬到一百萬抹寫循環(huán),它同時(shí)也是早期的可移除式快閃存儲(chǔ)媒體的基礎(chǔ)吮蛹。
norflash簡(jiǎn)單來說是sdram和nand的中間品荤崇,它能像sdram一樣直接讀,但又得像nand一樣編程擦寫潮针。因此程序可以直接在nor里跑术荤,速度要比sdram慢一些,往nor里面寫數(shù)據(jù)必須先擦除每篷,因?yàn)閚or的每一位只能由1變?yōu)?瓣戚。nor可讀不可直接寫的特性可以用來判斷是nor啟動(dòng)還是nand啟動(dòng),因?yàn)閚and啟動(dòng)的話焦读,前4k是可寫的子库,我們寫入數(shù)據(jù)再讀取出來應(yīng)該是沒有問題的,而nor啟動(dòng)的話矗晃,讀出的數(shù)據(jù)必然是錯(cuò)誤的刚照。
NorFlash的硬件接線:
首先,如果做過sdram實(shí)驗(yàn)的朋友應(yīng)該知道喧兄,NorFlash與sdram很相似无畔,只不過sdram位寬為32,NOR為16吠冤。在硬件連接上浑彰,Nor的地址線與cpu的地址線錯(cuò)開1位,sdram錯(cuò)開2位拯辙。簡(jiǎn)單分析一下:
32位的CPU地址線為32位郭变,每一個(gè)地址對(duì)應(yīng)1個(gè)byte颜价,地址的步長(zhǎng)為1byte
0x0000 0000 對(duì)應(yīng)第1個(gè)地址空間大小為1bytes
0x0000 0001 對(duì)應(yīng)第2個(gè)地址空間大小為1bytes
32位的sdram,每一個(gè)地址對(duì)應(yīng)于4個(gè)byte诉濒,地址步長(zhǎng)為4byte
0x0000 0000 對(duì)應(yīng)第1個(gè)地址空間大小為4bytes
0x0000 0001 對(duì)應(yīng)第2個(gè)地址空間大小為4bytes
16位的nor周伦,每一個(gè)地址對(duì)應(yīng)于2個(gè)byte,地址步長(zhǎng)為2byte
0x0000 0000 對(duì)應(yīng)第1個(gè)地址空間大小為2bytes
0x0000 0001 對(duì)應(yīng)第2個(gè)地址空間大小為2bytes
因此未荒,CPU的地址與它們的地址是錯(cuò)位的专挪。
CPU的4個(gè)連續(xù)地址 如 0 1 2 3 均對(duì)應(yīng)于sdram的 0地址
CPU的2個(gè)連續(xù)地址 如 0 1 ? 均對(duì)應(yīng)于nor 的 0地址
假如我想取sdram 0地址的 第二個(gè)byte 地址如何寫?對(duì)于sdram和nor具體的每一個(gè)byte是無法尋址的呀片排,但是arm有一個(gè)叫存儲(chǔ)管理器的東西寨腔,它大概會(huì)幫我們實(shí)現(xiàn)單字節(jié)的讀寫,至于sdram和nor支不支持單字節(jié)讀寫率寡,我們后邊在分析迫卢。