1. 程式人生 > >記憶體(RAM或ROM)和FLASH儲存的真正區別總結

記憶體(RAM或ROM)和FLASH儲存的真正區別總結

1.什麼是記憶體
     什麼是記憶體呢?在計算機的組成結構中,有一個很重要的部分,就是儲存器。儲存器是用來儲存程式和資料的部件,對於計算機來說,有了儲存器,才有記憶功能,才能保證正常工作。儲存器的種類很多,按其用途可分為主儲存器和輔助儲存器,主儲存器又稱記憶體儲器(簡稱記憶體),輔助儲存器又稱外儲存器(簡稱外存)。外存通常是磁性介質或光碟,像硬碟,軟盤,磁帶,CD等,能長期儲存資訊,並且不依賴於電來儲存資訊,但是由機械部件帶動,速度與CPU相比就顯得慢的多。記憶體指的就是主機板上的儲存部件,是CPU直接與之溝通,並用其儲存資料的部件,存放當前正在使用的(即執行中)的資料和程式,它的物理實質就是一組或多組具備資料輸入輸出和資料儲存功能的積體電路,記憶體只用於暫時存放程式和資料,一旦關閉電源或發生斷電,其中的程式和資料就會丟失。


2.記憶體工作原理:
記憶體是用來存放當前正在使用的(即執行中)的資料和程式,我們平常所提到的計算機的記憶體指的是動態記憶體(即DRAM),動態記憶體中所謂的'動態',指的是當我們將資料寫入DRAM後,經過一段時間,資料會丟失,因此需要一個額外設電路進行記憶體重新整理操作。


具體的工作過程是這樣的:一個DRAM的儲存單元儲存的是0還是1取決於電容是否有電荷,有電荷代表1,無電荷代表0。但時間一長,代表1的電容會放電,代表0的電容會吸收電荷,這就是資料丟失的原因;重新整理操作定期對電容進行檢查,若電量大於滿電量的1/2,則認為其代表1,並把電容充滿電;若電量小於1/2,則認為其代表0,並把電容放電,藉此來保持資料的連續性。 


ROM也有很多種,PROM是可程式設計的ROM,PROM和EPROM(可擦除可程式設計ROM)兩者區別是,PROM是一次性的,也就是軟體灌入後,就無法修改了,這種是早期的產品,現在已經不可能使用了,而EPROM是通過紫外光的照射擦出原先的程式,是一種通用的儲存器。另外一種EEPROM是通過電子擦出,價格很高,寫入時間很長,寫入很慢。


從一有計算機開始,就有記憶體。記憶體發展到今天也經歷了很多次的技術改進,從最早的DRAM一直到FPMDRAM、EDODRAM、SDRAM等,記憶體的速度一直在提高且容量也在不斷的增加。


3.ROM和RAM指的都是半導體儲存器
1)ROM是Read Only Memory的縮寫
     是一種半導體記憶體,其特性是一旦儲存資料就無法再將之改變或刪除。通常用在不需經常變更資料的電子或電腦系統中,資料並且不會因為電源關閉而消失。
     只能讀出事先所存資料的固態半導體儲存器。英文簡稱ROM。ROM所存資料,一般是裝入整機前事先寫好的,整機工作過程中只能讀出,而不像隨機儲存器那樣能快速地、方便地加以改寫。ROM所存資料穩定 ,斷電後所存資料也不會改變;其結構較簡單,讀出較方便,因而常用於儲存各種固定程式和資料。除少數品種的只讀儲存器(如字元發生器)可以通用之外,不同使用者所需只讀儲存器的內容不同。
     為便於使 用和大批 量 生產 ,進一步發展了可程式設計只讀儲存器(PROM)、可擦可程式設計序只讀儲存器(EPROM)和電可擦可程式設計只讀儲存器(EEPROM)。EPROM需用紫外光長時間照射才能擦除,使用很不方便。20世紀 80 年代製出的 EEPROM ,克服了EPROM的不足,但整合度不高 ,價格較貴。於是又開發出一種新型的儲存單元結構同 EPROM 相似的快快閃記憶體儲器 。其整合度高、功耗低 、體積小 ,又能線上快速擦除 ,因而獲得飛速發展,並有可能取代現行的硬碟和軟盤而成為主要的大容量儲存媒體。大部分只讀儲存器用金屬-氧化物-半導體(MOS)場效應管制成。


2)RAM是Random Access Memory的縮寫。
   又稱為隨機存取儲存器;儲存單元的內容可按需隨意取出或存入,且存取的速度與儲存單元的位置無關的儲存器。這種儲存器在斷電時將丟失其儲存內容,故主要用於儲存短時間使用的程式。


簡單地說,在計算機中,RAM 、ROM都是資料儲存器。RAM 是隨機存取儲存器,它的特點是易揮發性,即掉電失憶。ROM 通常指固化儲存器(一次寫入,反覆讀取),它的特點與RAM 相反。ROM又分一次性固化、光擦除和電擦除重寫兩種型別。 
     
     ROM在系統停止供電的時候仍然可以保持資料,而RAM通常都是在掉電之後就丟失資料,典型的RAM就是計算機的記憶體。 


4.RAM分為兩大類:
1)一種稱為靜態RAM(Static RAM/SRAM),SRAM速度非常快,是目前讀寫最快的儲存裝置了,但是它也非常昂貴,所以只在要求很苛刻的地方使用,譬如CPU的一級緩衝,二級緩衝。


2)另一種稱為動態RAM(Dynamic RAM/DRAM),DRAM保留資料的時間很短,速度也比SRAM慢,不過它還是比任何的ROM都要快,但從價格上來說DRAM相比SRAM要便宜很多,計算機記憶體就是DRAM的。 


DRAM分為很多種,常見的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等,這裡介紹其中的一種DDR RAM。


DDR RAM(Date-Rate RAM)也稱作DDR SDRAM,這種改進型的RAM和SDRAM是基本一樣的,不同之處在於它可以在一個時鐘讀寫兩次資料,這樣就使得資料傳輸速度加倍了。這是目前電腦中用得最多的記憶體,而且它有著成本優勢,事實上擊敗了Intel的另外一種記憶體標準-Rambus DRAM。在很多高階的顯示卡上,也配備了高速DDR RAM來提高頻寬,這可以大幅度提高3D加速卡的畫素渲染能力。 


5.再不明白的請看例子:
舉個例子,手機軟體一般放在EEPROM中,我們打電話,有些最後撥打的號碼,暫時是存在SRAM中的,不是馬上寫入通過記錄(通話記錄儲存在EEPROM中),因為當時有很重要工作(通話)要做,如果寫入,漫長的等待是讓使用者忍無可忍的。
FLASH儲存器又稱快閃記憶體,它結合了ROM和RAM的長處,不僅具備電子可擦除可程式設計(EEPROM)的效能,還不會斷電丟失資料同時可以快速讀取資料(NVRAM的優勢),U盤和MP3裡用的就是這種儲存器。在過去的20年裡,嵌入式系統一直使用ROM(EPROM)作為它們的儲存裝置,然而近年來Flash全面代替了ROM(EPROM)在嵌入式系統中的地位,用作儲存Bootloader以及作業系統或者程式程式碼或者直接當硬碟使用(U盤)。 


目前Flash主要有兩種NOR Flash和NADN Flash。


NOR Flash的讀取和我們常見的SDRAM的讀取是一樣,使用者可以直接執行裝載在NOR FLASH裡面的程式碼,這樣可以減少SRAM的容量從而節約了成本。


NAND Flash沒有采取記憶體的隨機讀取技術,它的讀取是以一次讀取一塊的形式來進行的,通常是一次讀取512個位元組,採用這種技術的Flash比較廉價。使用者不能直接執行NAND Flash上的程式碼,因此好多使用NAND Flash的開發板除了使用NAND Flah以外,還作上了一塊小的NOR Flash來執行啟動程式碼。 


一般小容量的用NOR Flash,因為其讀取速度快,多用來儲存作業系統等重要資訊,而大容量的用NAND FLASH,最常見的NAND FLASH應用是嵌入式系統採用的DOC(Disk On Chip)和我們通常用的'閃盤',可以線上擦除。目前市面上的FLASH 主要來自Intel,AMD,Fujitsu和Toshiba,而生產NAND Flash的主要廠家有Samsung和Toshiba。
------------------------------------------------------------黃金分界線----------------------------------------------------------------------------------------


問題1:什麼是DRAM、SRAM、SDRAM?
答:名詞解釋如下
DRAM--------動態隨即存取器,需要不斷的重新整理,才能儲存資料,而且是行列地址複用的,許多都有頁模式
SRAM--------靜態的隨機儲存器,加電情況下,不需要重新整理,資料不會丟失,而且一般不是行列地址複用的
SDRAM-------同步的DRAM,即資料的讀寫需要時鐘來同步


問題2:為什麼DRAM要重新整理,SRAM則不需要?
答:這是由RAM的設計型別決定的,DRAM用了一個T和一個RC電路,導致電容會漏電和緩慢放電,所以需要經常重新整理來儲存資料


問題3:我們通常所說的記憶體用的是什麼呢?這三個產品跟我們實際使用有什麼關係?
答:記憶體(即隨機存貯器RAM)可分為靜態隨機儲存器SRAM,和動態隨機儲存器DRAM兩種。我們經常說的“
記憶體”是指DRAM。而SRAM大家卻接觸的很少。


問題4:為什麼使用DRAM比較多、而使用SRAM卻很少?


答:1)因為製造相同容量的SRAM比DRAM的成本高的多,正因為如此,才使其發展受到了限制。因此目前SRAM基本上只用於CPU內部的一級快取以及內建的二級快取。僅有少量的網路伺服器以及路由器上能夠使用SRAM。


   2)儲存單元結構不同導致了容量的不同:一個DRAM儲存單元大約需要一個電晶體和一個電容(不
包括行讀出放大器等),而一個SRAM儲存單元大約需要六個電晶體。DRAM和SDRAM由於實現工藝問題,容量
較SRAM大,但是讀寫速度不如SRAM。


問題5:用得最多的DRAM有什麼特點呢?它的工藝是什麼情況?(通常所說的記憶體就是DRAM)


答:1)DRAM需要進行週期性的重新整理操作,我們不應將SRAM與只讀儲存器(ROM)和Flash Memory相混淆,因為SRAM是一種易失性儲存器,它只有在電源保持連續供應的情況下才能夠保持資料。“隨機訪問”是指儲存器的內容可以以任何順序訪問,而不管前一次訪問的是哪一個位置。


2)DRAM和SDRAM由於實現工藝問題,容量較SRAM大。但是讀寫速度不如SRAM,但是現在,SDRAM的速度也已經很快了,時鐘好像已經有150兆的了。那麼就是讀寫週期小於10ns了。


3)SDRAM雖然工作頻率高,但是實際吞吐率要打折扣。以PC133為例,它的時鐘週期是7.5ns,當CAS latency=2 時,它需要12個週期完成8個突發讀操作,10個週期完成8個突發寫操作。不過,如果以交替方式訪問Bank,SDRAM可以在每個週期完成一個讀寫操作(當然除去重新整理操作)。


4)其實現在的主流高速儲存器是SSRAM(同步SRAM)和SDRAM(同步DRAM)。目前可以方便買到的SSRAM最大容量是8Mb/片,最大工作速度是166MHz;可以方便買到的SDRAM最大容量是128Mb/片,最大工作速度是133MHz。


問題6:用得比較少但速度很快,通常用於伺服器cache的SRAM有什麼特點呢?


答:1)SRAM是靜態的,DRAM或SDRAM是動態的,靜態的是用的雙穩態觸發器來儲存資訊,而動態的是用電子,要不時的重新整理來保持。SRAM是Static Random Access Memory的縮寫,中文含義為靜態隨機訪問儲存器,它是一種型別的半導體儲存器。“靜態”是指只要不掉電,儲存在SRAM中的資料就不會丟失。


2)SRAM其實是一種非常重要的儲存器,它的用途廣泛。SRAM的速度非常快,在快速讀取和重新整理時能夠保持資料完整性。SRAM內部採用的是雙穩態電路的形式來儲存資料。所以SRAM的電路結構非常複雜。


3)從電晶體的型別分,SRAM可以分為雙極性與CMOS兩種。從功能上分,SRAM可以分為非同步SRAM和同步SRAM(SSRAM)。非同步SRAM的訪問獨立於時鐘,資料輸入和輸出都由地址的變化控制。同步SRAM的所有訪問都在時鐘的上升/下降沿啟動。地址、資料輸入和其它控制訊號均於時鍾訊號相關。




最後要說明的一點:
       SRAM不應該與SDRAM相混淆,SDRAM代表的是同步DRAM(Synchronous DRAM),這與SRAM是完全不同的。SRAM也不應該與PSRAM相混淆,PSRAM是一種偽裝成SRAM的DRAM。 
------------------------------------------------------------黃金分界線----------------------------------------------------------------------------------------


關於Nor和Nand的介紹和區別,在網路上有很多,如果不是經常用的話,還真的無法說出個所以然來。我也是轉帖網路上的,目的是經常能看看。


         NOR和NAND是現在市場上兩種主要的非易失快閃記憶體技術。Intel於1988年首先開發出NOR flash技術,徹底改變了原先由EPROM和EEPROM一統天下的局面。緊接著,1989年,東芝公司發表了NAND flash結構,強調降低每位元的成本,更高的效能,並且象磁碟一樣可以通過介面輕鬆升級。但是經過了十多年之後,仍然有相當多的硬體工程師分不清NOR和NAND快閃記憶體。


相“flash儲存器”經常可以與相“NOR儲存器”互換使用。許多業內人士也搞不清楚NAND快閃記憶體技術相對於NOR技術的優越之處,因為大多數情況下快閃記憶體只是用來儲存少量的程式碼,這時NOR快閃記憶體更適合一些。而NAND則是高資料儲存密度的理想解決方案。 


一.儲存區別比較
  NOR的特點是晶片內執行(XIP, execute In Place),這樣應用程式可以接在flash快閃記憶體內執行,不必再把程式碼讀到系統RAM中。


NOR的傳輸效率很高,在1~4MB的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的效能。


  NAND結構能提供極高的單元密度,可以達到高儲存密度,並且寫入和擦除的速度也很快。應用NAND的困難在於flash的管理和需要特殊的系統介面。


二.效能比較


  flash快閃記憶體是非易失儲存器,可以對稱為塊的儲存器單元塊進行擦寫和再程式設計。任何flash器件的寫入操作只能在空或已擦除的單元內進行,所以大多數情況下,在進行寫入操作之前必須先執行擦除。NAND器件執行擦除操作是十分簡單的,而NOR則要求在進行擦除前先要將目標塊內所有的位都寫為0。


    由於擦除NOR器件時是以64~128KB的塊進行的,執行一個寫入/擦除操作的時間為5s,與此相反,擦除NAND器件是以8~32KB的塊進行的,執行相同的操作最多隻需要4ms。


    執行擦除時塊尺寸的不同進一步拉大了NOR和NADN之間的效能差距,統計表明,對於給定的一套寫入操作(尤其是更新小檔案時更多的擦除操作必須在基於NOR的單元中進行。這樣,當選擇儲存解決方案時,設計師必須權衡以下的各項因素。


  ● NOR的讀速度比NAND稍快一些。


    ● NAND的寫入速度比NOR快很多。


  ● NAND的4ms擦除速度遠比NOR的5s快。


    ● 大多數寫入操作需要先進行擦除操作。


    ● NAND的擦除單元更小,相應的擦除電路更少。


三.介面差別


NOR flash帶有SRAM介面,有足夠的地址引腳來定址,可以很容易地存取其內部的每一個位元組。


NAND器件使用複雜的I/O口來序列地存取資料,各個產品或廠商的方法可能各不相同。8個引腳用來傳送控制、地址和資料資訊。


NAND讀和寫操作採用512位元組的塊,這一點有點像硬碟管理此類操作,很自然地,基於NAND的儲存器就可以取代硬碟或其他塊裝置。


四.容量和成本


NAND flash的單元尺寸幾乎是NOR器件的一半,由於生產過程更為簡單,NAND結構可以在給定的模具尺寸內提供更高的容量,也就相應地降低了價格。


NOR flash佔據了容量為1~16MB快閃記憶體市場的大部分,而NAND flash只是用在8~128MB的產品當中,這也說明NOR主要應用在程式碼儲存介質中,NAND適合於資料儲存,NAND在CompactFlash、Secure Digital、PC Cards和MMC儲存卡市場上所佔份額最大。


五.可靠性和耐用性


採用flahs介質時一個需要重點考慮的問題是可靠性。對於需要擴充套件MTBF的系統來說,Flash是非常合適的儲存方案。可以從壽命(耐用性)、位交換和壞塊處理三個方面來比較NOR和NAND的可靠性。


六.壽命(耐用性)


在NAND快閃記憶體中每個塊的最大擦寫次數是一百萬次,而NOR的擦寫次數是十萬次。NAND儲存器除了具有10比1的塊擦除週期優勢,典型的NAND塊尺寸要比NOR器件小8倍,每個NAND儲存器塊在給定的時間內的刪除次數要少一些。


七.位交換問題


  所有flash器件都受位交換現象的困擾。在某些情況下(很少見,NAND發生的次數要比NOR多),一個位元位會發生反轉或被報告反轉了。


  一位的變化可能不很明顯,但是如果發生在一個關鍵檔案上,這個小小的故障可能導致系統停機。如果只是報告有問題,多讀幾次就可能解決了。


  當然,如果這個位真的改變了,就必須採用錯誤探測/錯誤更正(EDC/ECC)演算法。位反轉的問題更多見於NAND快閃記憶體,NAND的供應商建議使用NAND快閃記憶體的時候,同時使用EDC/ECC演算法。


這個問題對於用NAND儲存多媒體資訊時倒不是致命的。當然,如果用本地儲存裝置來儲存作業系統、配置檔案或其他敏感資訊時,必須使用EDC/ECC系統以確保可靠性。  


八.壞塊處理


NAND器件中的壞塊是隨機分佈的。以前也曾有過消除壞塊的努力,但發現成品率太低,代價太高,根本不划算。


NAND器件需要對介質進行初始化掃描以發現壞塊,並將壞塊標記為不可用。在已製成的器件中,如果通過可靠的方法不能進行這項處理,將導致高故障率。 易於使用可以非常直接地使用基於NOR的快閃記憶體,可以像其他儲存器那樣連線,並可以在上面直接執行程式碼。


由於需要I/O介面,NAND要複雜得多。各種NAND器件的存取方法因廠家而異。


在使用NAND器件時,必須先寫入驅動程式,才能繼續執行其他操作。向NAND器件寫入資訊需要相當的技巧,因為設計師絕不能向壞塊寫入,這就意味著在NAND器件上自始至終都必須進行虛擬對映。


九.軟體支援


當討論軟體支援的時候,應該區別基本的讀/寫/擦操作和高一級的用於磁碟模擬和快閃記憶體管理演算法的軟體,包括效能優化。


在NOR器件上執行程式碼不需要任何的軟體支援,在NAND器件上進行同樣操作時,通常需要驅動程式,也就是記憶體技術驅動程式(MTD),NAND和NOR器件在進行寫入和擦除操作時都需要MTD。


使用NOR器件時所需要的MTD要相對少一些,許多廠商都提供用於NOR器件的更高階軟體,這其中包括M-System的TrueFFS驅動,該驅動被Wind River System、Microsoft、QNX Software System、Symbian和Intel等廠商所採用。


驅動還用於對DiskOnChip產品進行模擬和NAND快閃記憶體的管理,包括糾錯、壞塊處理和損耗。

------------------------------------------------------------黃金分界線----------------------------------------------------------------------------------------

ram和rom:
rom:製作是寫入
prom:可寫一次
eprom/eeprom:可寫多次
flash rom:快閃記憶體(Flash Memory) 非易失快閃記憶體技術:NOR flash、NAND flash


實際應用:
RAM:
RAM有兩大類,一種稱為靜態RAM(Static RAM/SRAM),SRAM速度非常快,是目前讀寫最快的儲存裝置了,但是它也非常昂貴,所以只在要求很苛刻的地方使


用,譬如CPU的一級緩衝cache。另一種稱為動態RAM(Dynamic RAM/DRAM),DRAM保留資料的時間很短,速度也比SRAM慢,不過它還是比任何的ROM都要快,


但從價格上來說DRAM相比SRAM要便宜很多,計算機記憶體就是DRAM的。


ROM:
手機的ROM和傳統的ROM(Read Only Memory)又有些不一樣,它分為兩部分,一部分是用於系統,另外一部分是用作使用者儲存資料。而儲存卡則很好理解了


,常用的有tf卡,用於儲存使用者資料。
在過去的20年裡,嵌入式系統一直使用ROM(EPROM)作為它們的儲存裝置,然而近年來Flash全面代替了ROM(EPROM)在嵌入式系統中的地位,用作儲存


Bootloader以及作業系統或者程式程式碼或者直接當硬碟使用(U盤)。 


實際應用:
NOR Flash 的讀取和我們常見的 SDRAM 的讀取是一樣,使用者可以直接執行裝載在 NOR FLASH 裡面的程式碼,這樣可以減少 SRAM 的容量從而節約了成本。 


NAND Flash 沒有采取記憶體的隨機讀取技術,它的讀取是以一次讀取一塊的形式來進行的, 通常是一次讀取 512 個位元組,採用這種技術的 Flash 比較廉價


。使用者 不能直接執行 NAND Flash 上的程式碼,因此好多使用 NAND Flash 的開發板除了使用 NAND Flah 以外,還作上了 一塊小的 NOR Flash 來執行啟動


程式碼。
NOR主要應用在程式碼儲存介質中,NAND適合於資料儲存,NAND在CompactFlash、Secure Digital、PC Cards和MMC儲存卡市場上所佔份額最大。
NOR flash佔據了容量為1~16MB快閃記憶體市場的大部分,而NAND flash只是用在8~128MB的產品當中,這也說明NOR主要應用在程式碼儲存介質中,NAND適合於資料


儲存,NAND在CompactFlash、Secure Digital、PC Cards和MMC(多媒體儲存卡Multi Media Card)儲存卡市場上所佔份額最大。


手機市場:
    在手機市場中NOR FLASH是當之無愧的領導者,目前大部分手機使用的是NOR+PSRAM的XiP儲存架構,其中NOR FLASH用來儲存程式碼和資料,PSRAM作為MCU


和 DSP執行運算時的資料快取。隨著手機功能的日益豐富,需要更大的程式碼和資料儲存空間,這時如果選擇大容量的NOR FLASH,成本將非常昂貴,因此,一


些高階手機 中開始加入NAND來作為多媒體資料的一個儲存載體。從價效比來看,NOR FLASH的最大儲存容量不能超過1GB,否則就沒有競爭優勢了;並且,以


PSRAM的結構和特性,它的容量很難超過256MB,這種組合將成 為多媒體手機的一個限制。造成這個問題的原因主要是早期手機基帶等IC技術掌握在歐美公司


手中,他們對於成本考量並不是非常關注,而今,國內IC廠商的崛 起和手機市場的激烈競爭,使得所有的設計師開始考慮如何降低BOM COST。
    和大部分手機採用的儲存結構對比。XiP架構是現在使用最多的,而新的高速處理平臺正在向程式碼對映儲存器架構發展,也就是NAND+SDRAM方式。 雖然


NAND快閃記憶體有一些應用問題,但是NAND快閃記憶體單位bit成本加上其缺點導致的額外成本仍然要比NOR快閃記憶體的單位bit成本低。


RAM的容量又分標稱容量、實際容量和可用容量三種,標稱容量即我們看手機引數的容量,即1G、2G這些。實際容量會比標稱容量少一些,這其除了一些小量


的損耗(演算法、顆粒的不同)之外,部分手機還會被GPU佔用一部分RAM,所以一些2G的手機看到的實際容量會是1.7G~1.8G。而可用容量又會比實際容量再少


一些,是由於系統佔用以及後臺程式的佔用的原因,一般2G的手機剛開機的時候可用RAM會有1.3G左右,而1G的手機可用有400M左右。


儲存卡的標稱容量和實際容量比較接近,例如16G的儲存卡可用容量都會達到14G甚至15G。

------------------------------------------------------------黃金分界線----------------------------------------------------------------------------------------

查看了實際應用中小米手機,是使用的NAND+SDRAM方式,小米手機2:2GB DDR2 533執行記憶體(RAM)+ 閃迪出品16G儲存晶片(ROM);

三星S3C2440A開發板:

記憶體

64M,可根據需要擴充套件到128M

NAND Flash

支援大容量NAND Flash,標配256M(首家推出,真正解決大頁驅動難題,尤其適用於產品開發)

NOR Flash 一片4M NOR Flash
//////////////////////////////////////////////////////////////////////////

啟動程式碼是系統上電或者復位後執行的第一段程式碼 他的作用是在使用者程式執行之前 對系統的硬體與軟體執行環境進行必要的初始化 並在最後使程式跳轉到使用者程式 他直接面對ARM處理器核心以及硬體控制器進行程式設計。


S3C2440 支援從 NOR flash 或者 NAND Flash中啟動。NOR Flash 的特點是 程式可以直接在晶片內執行 不必將程式讀取到RAM中執行 NOR FLASH雖有這個優點 但是它的價效比遠低於NAND FLASH  因為很多系統選擇從NAND FLASH 啟動,從NAND FLASH中啟動需要先把程式拷貝到RAM中去執行。

NOR FLASH啟動: NOR FLASH --》對映到 nGCD0 其地址被對映為0x00000000
NAND_FLASH啟動:S3C2440內部自帶一塊容量為4K的bootSRAM(叫做起步階石“Steppingstone”)對映到nGCS0 其地址被對映為0x00000000
但系統上電或啟動後 程式會從0地址處開始執行 因此我們需要把啟動程式碼放在0地址處
NOR FLASH啟動:程式可以在FLASH晶片中 直接被CPU執行  沒有什麼太多說的了
NAND FLASH啟動:上電或復位後 0地址處為bootSRAM 啟動前他裡面是空的 啟動後S3C2440 先通過硬體機制將NANDFLASH的前4K內容拷貝他裡面去  然後再從0地址處開始執行 在這種情況下 我們需要保證將啟動程式碼存放在NANDFLASH開始的位置 並且啟動程式碼的大小要小於4K
如果系統的所有程式 編譯連結後大小小於4K 那麼系統的啟動程式碼中無需考慮將程式從NANDFLASH 搬運到SDRAM 中去執行這個問題  因為所有的程式在啟動時既全部由NANDFLASH 拷貝到了bootSRAM中執行了
如果系統中所編的程式編譯後大於4K 那麼系統的啟動程式碼中需要包含一段將系統的全部程式從NANDFLASH 搬運到SDRAM的程式碼
系統啟動時 只將NANDFLASH 的前4K 拷貝到了BootSRAM中,還有部分程式儲存在NAND FLASH中 是無法內執行的 所以前4K被拷貝到BootSRAM中需要有能將程式拷貝到SDRAM中的程式碼。

因此從NAND FLASH中啟動 牽涉到兩次拷貝
1:nandflash前4K --> BootSAM 自動 無需人為干擾
2:從nandflash中搬運系統到SDRAM 需要程式設計師 控制

//////////////////////////////////////////////////////////////////////////

======================開發板NAND FLASH 啟動===================================
//這一個真正的全裸程式碼。具體原理是這樣的:
//首先是設定到NAND Flash 啟動。當ARM 上電後,會自動讀取NAND Flash 
// 0x0000000地址處執行程式碼。我們將程式碼編譯聯接地址也設為0x0000000
//然後,用Jflash 燒寫時,燒寫到NAND Flash的0x0000000。那麼上電後就會
//執行你的程式碼。
1:交叉環境的建立
 按照 mini2440使用者手冊,175頁成功設定好 .
2:連上開發板與PC上的JTAG線.開發板接上電源,
 設定從NAND FLASH啟動.(一定要確定是NAND FLASH啟動)
 否則燒寫的時候不成功。
 開啟開發板電源. 

=========================開發板NOR FLASH 啟動================================

編譯u-boot,把編譯生成的新的u-boot.bin燒寫到NorFlash中。開發板上電啟動後,則在超級終端(或類似的軟體)中顯示的結果為:
U-Boot 2011.06 (Jul 30 2011 - 23:40:44)
DRAM: 64 MiB
Flash: 2 MiB
NAND: raise: Signal # 8 caught
raise: Signal # 8 caught
raise: Signal # 8 caught
raise: Signal # 8 caught
raise: Signal # 8 caught
raise: Signal # 8 caught
No NAND device found!!!
0 MiB
*** Warning - bad CRC, using defaultenvironment

In:   serial
Out:  serial
Err:  serial
Net:  CS8900-0
ZHAOCJ2440 #

從上述顯示的內容可以看出本開發板的一些基本的資訊,如DRAM為64M,NorFlash為2M,由於我沒有設定NandFlash,因此係統沒有檢測到NandFlash,命令提示符也已經修改為“ZHAOCJ2440 # ”。

總結:nor flash啟動和nand flash啟動都需要選擇啟動方式並把程式燒到相應的flash中。