本文主要是關(guān)于nor flash的相關(guān)介紹,并著重對nor flash打開電源方式及原理應(yīng)用進行了詳盡的闡述。
nor flash
nor flash是現(xiàn)在市場上兩種主要的非易失閃存技術(shù)之一。Intel于1988年首先開發(fā)出NOR Flash 技術(shù),徹底改變了原先由EPROM(Erasable Programmable Read-Only-Memory電可編程序只讀存儲器)和EEPROM(電可擦只讀存儲器Electrically Erasable Programmable Read - Only Memory)一統(tǒng)天下的局面。緊接著,1989年,東芝公司發(fā)表了NAND Flash 結(jié)構(gòu),強調(diào)降低每比特的成本,有更高的性能,并且像磁盤一樣可以通過接口輕松升級。NOR Flash 的特點是芯片內(nèi)執(zhí)行(XIP ,eXecute In Place),這樣應(yīng)用程序可以直接在Flash閃存內(nèi)運行,不必再把代碼讀到系統(tǒng)RAM中。NOR 的傳輸效率很高,在1~4MB的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響到它的性能。NAND的結(jié)構(gòu)能提供極高的單元密度,可以達到高存儲密度,并且寫入和擦除的速度也很快。應(yīng)用NAND的困難在于Flash的管理需要特殊的系統(tǒng)接口。通常讀取NOR的速度比NAND稍快一些,而NAND的寫入速度比NOR快很多,在設(shè)計中應(yīng)該考慮這些情況。
flash閃存是非易失存儲器,可以對稱為塊的存儲器單元塊進行擦寫和再編程。任何flash器件的寫入操作只能在空或已擦除的單元內(nèi)進行,所以大多數(shù)情況下,在進行寫入操作之前必須先執(zhí)行擦除。NAND器件執(zhí)行擦除操作是十分簡單的,而NOR則要求在進行擦除前先要將目標塊內(nèi)所有的位都寫為0。由于擦除NOR器件時是以64~128KB的塊進行的,執(zhí)行一個寫入/擦除操作的時間為5s,與此相反,擦除NAND器件是以8~32KB的塊進行的,執(zhí)行相同的操作最多只需要4ms。執(zhí)行擦除時塊尺寸的不同進一步拉大了NOR和NAND之間的性能差距,統(tǒng)計表明,對于給定的一套寫入操作(尤其是更新小文件時),更多的擦除操作必須在基于NOR的單元中進行。這樣,當選擇存儲解決方案時,設(shè)計師必須權(quán)衡以下的各項因素。l 、NOR的讀速度比NAND稍快一些。2、 NAND的寫入速度比NOR快很多。3 、NAND的4ms擦除速度遠比NOR的5s快。4 、大多數(shù)寫入操作需要先進行擦除操作。5 、NAND的擦除單元更小,相應(yīng)的擦除電路更少。此外,NAND的實際應(yīng)用方式要比NOR復雜的多。NOR可以直接使用,并可在上面直接運行代碼;而NAND需要I/O接口,因此使用時需要驅(qū)動程序。不過當今流行的操作系統(tǒng)對NAND結(jié)構(gòu)的Flash都有支持。此外,Linux內(nèi)核也提供了對NAND結(jié)構(gòu)的Flash的支持。
什么是nor flash方式打開電源
flash閃存是非易失存儲器,可以對稱為塊的存儲器單元塊進行擦寫和再編程。任何flash器件的寫入操作只能在空或已擦除的單元內(nèi)進行,所以大多數(shù)情況下,在進行寫入操作之前必須先執(zhí)行擦除。NAND器件執(zhí)行擦除操作是十分簡單的,而NOR則要求在進行擦除前先要將目標塊內(nèi)所有的位都寫為0。
norflash的啟動方式
電子產(chǎn)品如果沒有了電,就跟廢品沒什么區(qū)別,是電賦予了他們生命,然而程序則是他們的靈魂。
小時候一直很好奇,一個個死板的電子產(chǎn)品為什么一上電以后就能夠工作了呢?為什么一個小小芯片就能夠運行我們編寫的程序呢?一個開發(fā)板從剛上電到整個操作系統(tǒng)能夠運行起來是怎么辦到的呢?這些東西困擾了好久,參考了好多資料現(xiàn)在才慢慢弄明白其中一些原理。
我們現(xiàn)在接觸的大多數(shù)電子產(chǎn)品都是使用數(shù)字電路設(shè)計出來的,數(shù)字電路的精髓就是兩個數(shù)字:0和1,這兩個數(shù)字千變?nèi)f化的組合創(chuàng)造了計算機世界的繽紛多彩,不管是cpu、內(nèi)存還是其他外設(shè)都是通過0和1的變化來進行記錄、交互以及計算。硬件是怎么操作這兩個數(shù)字以及這兩個數(shù)字是怎么控制硬件工作的,這里不進行討論,那都是一些二極管、三極管、與非門、信號放大取樣編碼等等知識,所以這里將對一個個功能完整的芯片,從上電以后,他們通過電信號完成各種操作的過程進行解析。如果有玩過單片機的同學應(yīng)該知道,一個cpu加上一個電源,然后外接一個外部晶振就能夠做成一個最小系統(tǒng)了,單片機就能夠在他可憐的64k或者128k內(nèi)存中運行起來了,這些簡單的控制芯片雖然有它的存在價值,但是它不能滿足日益復雜的計算需求,所以需要更快的運算速度以及更大的運行內(nèi)存,因此我們會用到更復雜的處理器,比如mips、arm等。下面將使用arm s3c2440 處理器分析上電啟動的過程。
作為一個嵌入式產(chǎn)品,它的多樣性讓它更具有可玩性,以及更容易適應(yīng)不同的需求,它不像我們的PC啟動方式相對比較單一(ROM啟動),arm啟動方式有從norfalsh啟動、nandflash啟動、SD卡啟動和UBS啟動等,但是他們的啟動原理都是大同小異的。
開始之前,先理清幾個概念:
SDRAM(Synchronous Dynamic Random Access Memory):同步動態(tài)隨機存取存儲器,同步是指Memory工作需要步時鐘,內(nèi)部的命令的發(fā)送與數(shù)據(jù)的傳輸都以它為基準;動態(tài)是指存儲陣列需要不斷的刷新來保證數(shù)據(jù)不丟失;隨機是指數(shù)據(jù)不是線性依次存儲,而是由指定地址進行數(shù)據(jù)讀寫,簡單的說,它就是cpu使用的外部內(nèi)存,即我們常說的內(nèi)存條。
SRAM是英文Static RAM的縮寫,它是一種具有靜止存取功能的內(nèi)存,不需要刷新電路即能保存它內(nèi)部存儲的數(shù)據(jù),速度比SDRAM快,一般用作高速緩沖存儲器(Cache)。
norflash:非易失閃存,是一種外部存儲介質(zhì),芯片內(nèi)執(zhí)行(XIP,eXecute In Place),這樣應(yīng)用程序可以直接在flash閃存內(nèi)運行,不必再把代碼讀到系統(tǒng)RAM中,由于它有地址總線,cpu可以直接從norflash中取指,直接從FLASH中運行程序,但是工藝復雜,價格比較貴,容量較小(1~4M),NOR的傳輸效率很高
nandflash:它也是非易失閃存(掉電不丟失)的一種,但是它雖然有數(shù)據(jù)總線,但是沒有地址總線,所以cpu不能直接從nandflash中取指運行,由于它價格便宜,所以常常用來存儲大量數(shù)據(jù),和我們常說的硬盤類似。
下面將解析nandflash啟動和norflash啟動兩種方式(arm s3c2440),其他啟動方式將在uboot代碼部分分析。
一、 Nandflash啟動
首先必須把一個正確的bootload燒寫到nandflash的最低位置,即從0x000開始燒寫。當我們選擇從nandflash啟動開發(fā)板的時候,開發(fā)板就會啟動連接nandflash的電路結(jié)構(gòu),當開發(fā)板一上電的時候,Nand Flash控制器會自動的把Nand Flash上的前4K數(shù)據(jù)搬移到CPU的內(nèi)部RAM中(SRAM-cache),這個內(nèi)部RAM我們通常稱作stepping stone,同時把這段片內(nèi)SRAM映射到nGCS0片選的空間(即0x00000000),CPU從內(nèi)部RAM的0x00000000位置開始啟動(執(zhí)行),這個過程不需要程序干涉的。
這個過程就是啟動過程的stage1,它將nandflash的前4看內(nèi)容拷貝到stepping stone中,然后從stepping stone的第一條指令開始執(zhí)行,這4k內(nèi)容里面的指令將會完成以下幾個動作:
1.硬件設(shè)備初始化
2. 加載U-Boot第二階段代碼到SDRAM空間
3. 設(shè)置好棧
4. 跳轉(zhuǎn)到第二階段stage2代碼入口
從下圖我們可以看到,板子重置以后,內(nèi)存的映射關(guān)系。從圖中可以看到以下幾點:
1.剛開始bank0~bank5是只能映射SROM的,而bank6和bank7才能夠接SDRM,而且每個bank最大接128M的SDRM,所以決定了S3C2440的最大可外接SDRAM是256M;
2.從圖中我們可以看到bank6的起始地址是0x3000_0000, 所以我們在執(zhí)行stage1的第二個動作(加載U-Boot第二階段代碼到SDRAM空間)時,需要將uboot代碼放到0x3000_000~0x4000_0000區(qū)間內(nèi)(SDRAM內(nèi)),才能從SDRAM中正常執(zhí)行stage2;
3.當沒有選擇從nandflash啟動時,Boot internal SRAM(4k)的起始地址是0x4000_0000, 當選擇從nandflash啟動時,Boot internal SRAM(4k)的起始地址是0x00, 因為我們的開發(fā)板沒有外接SROM,所以bank1~bank5都是空閑的,而bank0的位置將被Boot internal SRAM(4k)替代,也就是說bank0的前4k就是stepping stone(起步石),板子上電以后,在nandflash的啟動模式下,S3C2440在硬件上會完成下圖中的地址映射,并自動將nandflash中的前4k拷貝到stepping stone中,并從stepping stone的開始地址(0x00)獲取到第一條指令并執(zhí)行。
經(jīng)過上面的分析后,我們可以將上面兩圖合并成下圖所示:
前面說了nandflash啟動過程中第一個代碼搬移,下面將解析第二個代碼搬移,這4k代碼首先會設(shè)置cpu運行模式,關(guān)看門狗,設(shè)置時鐘,關(guān)中斷,初始化內(nèi)存,初始化nandflash,設(shè)置堆棧,然后將整個bootload搬運到SDRAM中,并跳轉(zhuǎn)到SDRAM中執(zhí)行。
基本過程如下圖所示:
關(guān)于4k代碼的執(zhí)行過程將會在后面詳細解釋,而且在新的uboot-2015中,這4k代碼是由uboot_spl.bin完成的,下面將基于uboot-2015.10 列出uboot從上電到啟動內(nèi)核的整個過程進行概述:
二、norflash啟動
其實理解了nandflash的啟動方式,norflash的啟動也就好理解多了,首先需要知道的是norflash是可以在片上執(zhí)行代碼(XIP)的,也就是說,我們只需要將bootload燒寫到norflash的開始地址,當開發(fā)板上電以后,從內(nèi)存映射圖可以知道,nor flash會被映射到0x00000000地址(就是nGCS0,這里就不需要片內(nèi)SRAM來輔助了,所以片內(nèi)SRAM的起始地址還是0x40000000,不會改變),然后cpu從0x00000000開始執(zhí)行(也就是在Norfalsh中執(zhí)行)整個uboot,直到引導內(nèi)核啟動。
從norflash啟動可以省事多了,不僅如此,我們自己編寫的裸機程序需要調(diào)試,一般也是直接燒寫到norflash中進行的,因為只要我們將編譯好的可執(zhí)行文件放到norflash的開始,開發(fā)板上電以后就會從norflash的第一條指令開始取指執(zhí)行,我們后面寫裸機程序的調(diào)試就是用這種方式進行的。
從norflash啟動雖然從開發(fā)的角度會很方便(其實也方便不了多少),但是從產(chǎn)品的角度卻增加了它的成本,畢竟norflash還是相對較貴的,我們明明只要一塊nandflash就足夠啟動整個開發(fā)板了,就沒必要在產(chǎn)品中添加一塊norflash了,只要代碼改改就能省下不少成本,何樂不為。而且nandflash對產(chǎn)品是必不可少的,因為后面還要存放內(nèi)核和文件系統(tǒng),起碼需要幾十兆的空間,用norflash來存儲也不現(xiàn)實。
也許你會想,能不能只用norflash,不用nandflash和SDRAM行不行呢,畢竟norflash即可以存儲,也可以運行程序的啊,從理論來說是可以的,但是了解一下他們的市場價格、運行速度和工作原理,應(yīng)該就會知道答案了。
結(jié)語
關(guān)于nor flash的相關(guān)介紹就到這了,如有不足之處歡迎指正。
-
存儲器
+關(guān)注
關(guān)注
38文章
7530瀏覽量
164416 -
NOR flash
+關(guān)注
關(guān)注
2文章
91瀏覽量
23068
發(fā)布評論請先 登錄
相關(guān)推薦
什么是串行Nor Flash?串行Nor Flash的結(jié)構(gòu)和參數(shù)特性
![什么是串行<b class='flag-5'>Nor</b> <b class='flag-5'>Flash</b>?串行<b class='flag-5'>Nor</b> <b class='flag-5'>Flash</b>的結(jié)構(gòu)和參數(shù)特性](https://file1.elecfans.com/web2/M00/A1/9B/wKgZomT2jjuAHjqBAAAufd_ZrBg830.png)
NAND Flash和NOR Flash的差別
![NAND <b class='flag-5'>Flash</b>和<b class='flag-5'>NOR</b> <b class='flag-5'>Flash</b>的差別](https://file1.elecfans.com/web2/M00/A2/80/wKgZomT-1hGAewBOAAGz4eFlWrQ231.jpg)
NAND FLASH與NOR FLASH的技術(shù)對比
![NAND <b class='flag-5'>FLASH</b>與<b class='flag-5'>NOR</b> <b class='flag-5'>FLASH</b>的技術(shù)對比](https://file1.elecfans.com/web2/M00/A5/EC/wKgaomUP7X2AEegbAAIy6S7z82s018.jpg)
NOR Flash主要廠商及產(chǎn)品
旺宏并行串行NOR Flash對比參考指南
nand nor flash區(qū)別
NOR FLASH的原理及應(yīng)用
![<b class='flag-5'>NOR</b> <b class='flag-5'>FLASH</b>的原理及應(yīng)用](https://file.elecfans.com/web2/M00/4A/06/pYYBAGKhvIuAH2Q5AAAkfNBR408732.png)
NOR Flash供需持續(xù)緊張,中芯長電搶奪NOR Flash測試設(shè)備訂單
NAND Flash與NOR Flash的區(qū)別
NOR falsh、NAND flash、SDEMMC、QSPI flash、SPI flash
![<b class='flag-5'>NOR</b> falsh、NAND <b class='flag-5'>flash</b>、SDEMMC、QSPI <b class='flag-5'>flash</b>、SPI <b class='flag-5'>flash</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
NOR Flash和NAND FLASH的區(qū)別是什么
![<b class='flag-5'>NOR</b> <b class='flag-5'>Flash</b>和NAND <b class='flag-5'>FLASH</b>的區(qū)別是什么](https://file.elecfans.com//web2/M00/2E/DA/pYYBAGHvwfyAUS7dAAGNph3qf_c291.png)
NAND Flash和NOR Flash的區(qū)別
![NAND <b class='flag-5'>Flash</b>和<b class='flag-5'>NOR</b> <b class='flag-5'>Flash</b>的區(qū)別](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論