S3c2451開發板的啟動過程詳解

2021-08-01 20:36:58 字數 4824 閱讀 1732

開發板

啟動過程

sram,static random access memory  就是靜態隨即儲存器

srom static read only memory 靜態

唯讀儲存器

rom ,唯讀儲存器

ram,隨即儲存器

dram,英文全稱

dynamic random access memory

,即動態隨機訪問儲存器

sdram,同步動態隨機儲存器 同步就是需要同步時鐘

nor flash 和 

nand flash 

是現在市場上兩種主要的非易失快閃儲存器技術。

注:開發板 sram          64kb

(手冊p34) (

64kb for internal sram buffer(8kb internal buffer for booting))

sdram         256mb

nandflash     256mb

sram

是英文static ram的縮寫,它是一種具有靜止訪問功能的記憶體,不需要重新整理電路即能儲存它內部儲存的資料。這樣

他不需要初始化就能夠直接使用

。這與我們在外部擴充套件的大容量的sdram是不一樣的,外部大容量的

sdram是需要初始化後才能使用的

,這點大家務必要搞清楚。這點在我做過移植的處理器:s3c2410(arm920t),s3c2440(arm920t),at91rm9200(arm920t),at91sam9260(arm926t)上都是這樣的。在

s3c2440

這顆cpu

上這個sram

大小為4kb,datasheet

裡把它叫做

stepping stone,江湖人稱

「起步石」。

1)介面區別:

nor flash位址線和資料線分開,來了位址和控制訊號,資料就出來。

nand flash位址線和資料線在一起,需要用程式來控制,才能出資料。

通俗的說,就是光給位址不行,要先命令,再給位址,才能讀到nand的資料。而且都是在乙個匯流排完成的。

結論是:

arm無法從

nand

直接啟動。除非裝載完程式,才能使用

nand flash.

2)效能區別

nor的傳輸效率很高,在1~

4mb的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的效能。 

nand

結構能提供極高的單元密度,可以達到高儲存密度,並且寫入和擦除的速度也很快。應用

nand

的困難在於

flash

的管理和需要特殊的系統介面。

● nor的讀速度比

nand

稍快一些。

● nand的寫入速度比

nor快很多。

● nand的

4ms擦除速度遠比

nor的

5s快。

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

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

nandflash和

norflash

是不同的

:norflash像記憶體一樣是直接掛在系統匯流排上的,這樣有足夠多的位址線使得

cpu能夠定址到每乙個儲存單元上去,這也意味著

cpu能夠直接通過匯流排訪問

norflash

上儲存的內容

,同時他還支援xip(即片上執行,不用將**搬到記憶體中,直接在

norflash

上就能執行

)。 而

nandflash

它並不是直接掛載系統匯流排上,而是通過

nandflash

控制器(

這個一般整合在

cpu內部

)來完成讀寫操作的。如果我們把

norflash

的那種定址方式叫直接定址的話

(不是彙編裡的那個直接定址,這裡指

cpu能夠直接通過位址線訪問儲存器的儲存單元

),那麼這裡的

nandflash

就是間接定址

(這裡需要

nandflash

控制器來定址

)。所以

我們在使用nandflash之前,一定要初始化

nandflash

控制器。

理解上面的這點後,就不難理解,為什麼系統能夠從norflash直接啟動,而不能直接從

nandflash

啟動。

這是因為,arm在

cpu復位時,

cpu缺省會到

0x0000 0000

位址處去取指令

,而如果我們是從norflash啟動的話(一般

norflash會掛到

bank0,ngcs0上),

s3c2440 cpu

就會把norflash

的空間掛接到

0x0000 0000

這段記憶體空間上。這時

cpu就能夠

直接從norflash上取指令執行,啟動了

。而如果是nandflash, 因為

nandflash他不能直接掛到系統匯流排

上,並且他的讀寫,擦除操作必須依賴nandflash控制器,這也就意味著

nandflash

的儲存空間永遠不能對映到

0x0000 0000

這個位址上去。

1)irom

(nor flash)(0x0000 0000)

2)sram             (0x3000 0000) 3)

sdram            (0x4000 0000) 1、

開發板上一般都用sdram做記憶體,

flash

(nor

、nand

)來當做

rom。其中

nand flash

沒有位址線,一次至少要讀一頁

(512b).

其他兩個有位址線

2、nandflash不用來執行**,只用來儲存**,

norflash

,sdram

可以直接執行**.

講到啟動系統,那麼需要哪些儲存介質才行呢?首先得有啟動介質,也就是

掉電後**不會丟失並且上電後就能執行

(不需要初始化,否則怎麼執行呢),我們知道記憶體是不行的,記憶體掉電後資料就清空了。norflash就能掉電後資料不丟失,並且可以匯流排式訪問(掛在匯流排上就可以使用,不需要初始化)。所以

norflash

可以作為啟動介質,但這傢伙

一般比較小,因為貴嘛,所以**一般執行在記憶體,容量大,便宜

。現在一般開發板內容都用ddr2. 理論上 有

norflash

和ddr2

就可以了,但三星還另外加了一塊

sram

。為什麼要加

sram

呢?因為norflash只能讀,不能寫,那麼就不能進行資料交換,而

ddr2

此時還不能用,那麼只能用

sram

來儲存全域性資料和設定棧空間

。所以210的儲存結構為

irom(

類似於norflash+sram+ddr2

的結構)。

注:irom與

norflash

功能作用相似,但結構不同,我們開發板不用

norflash

,都用irom。

剛上電時,首先執行irom內的固化程式(不能人工改變),按照

irom

內的命令,

cpu會自動從

nand flash

中讀取前8kb

的資料放置在

片內sram裡

(0x4000 0000

),同時把這段片內sram對映到

ngcs0

片選的空間(即

0x00000000

)。cpu是從

0x00000000

開始執行,也就是

nand flash

裡的前8

kb內容。因為

nand flash

連位址線都沒有,不能直接把

nand

對映到0x00000000

,只好使用片內sram做乙個載體

。通過這個載體把

nandflash中大**複製到

ram(

一般是sdram)

中去執行。

注:上電時移植的8k就是

superboot的8k

,主要作用

將主程式拷貝到ram (一般是

sdram)

中執行,同時還有初始化記憶體(sdram),關閉看門狗,初始化時鐘等作用。

0x3000 0000

)中,當然我們前面講過

sdram

必須要先初始化,才能應用,其實就是給

sdram

分配(0x3000 0000

)位址。這些初始化操作是在移植的

8k中完成的。因此我們可以直接執行

sdram

的我們自己寫的程式。

nand flash

複製到sdram

中。如果執行的**

<8kb,程式直接在

sram

中執行。

如果執行的**>8kb,要把**完整的搬到

sdram

中執行。

注意:我們會發現,剛開始點亮led燈時,我們沒有寫時鐘程式,為什麼燈還是能點亮,這是因為在移植8k到

sram

時,就開啟時鐘了,我們自己編寫的時鐘程式,只是覆蓋了

superboot

的時鐘程式。

s3c2440 nandflash啟動過程分析

有很多同學在移植u boot時,都會對s3c2440從nandflash啟動的過程非常迷惑。這裡發這個帖子給大家介紹一下它的啟動流程。大部分arm9的cpu內部都整合有乙個sram,sram是英文static ram的縮寫,它是一種具有靜止訪問功能的記憶體,不需要重新整理電路即能儲存它內部儲存的資料...

s3c2440啟動過程詳解

一 位址空間的分配 3 nandflash不用來執行 只用來儲存 norflash,sdram可以直接執行 4 s3c2440總共有8個記憶體banks 6個記憶體bank可以當作rom或者sram來使用 留下的2個bank除了當作rom 或者sram,還可以用sdram 各種記憶體的讀寫方式不一樣...

S3C2410 S3C2440開發板相關書籍

1 arm處理器裸機開發實戰 機制而非策略 王小強 主編 電子工業出版社 實驗平台 tq2440。裸跑中的經典教程,有注釋,例項多而實用,是目前市場上最受好評的2440 裸跑教程。讓您從微控制器51入手arm 從此再無憂。2.c os ii原理與arm應用程式設計 張勇 方勤 蔡鵬 許波 著 3.嵌...