S3C6410 NAND啟動流程

2021-06-25 11:23:16 字數 1157 閱讀 2221

分類: 嵌入式arm-linux

2013-01-30 23:40

861人閱讀收藏 

舉報nand啟動

s3c6410

s3c6410和2440的nand啟動流程大體一樣,也有一些區別。這篇文章主要目的是梳理下s3c6410 nand啟動流程,也給這幾天的學習來個總結。

s3c6410主存的位址範圍為 0x0000_0000~0x6fff_ffff。主存部分分成四個區域:引導映象區,內部儲存去,靜態儲存區和動態儲存區。

引導映象區的位址範圍是從0x0000_0000~0x07fff_ffff,但是沒有實際的對映記憶體,引導映象區反映乙個映象,這個映象指向記憶體的一部分區域或者靜態儲存區。引導映象的開始位址是0x0000_0000。

內部儲存區用於啟動**訪問內部rom和內部sram,也被稱為steppingstone。內部rom位址範圍為0x0800_0000~0x0bff_ffff,為唯讀,當內部rom啟動被選中時,該區域能對映到引導映象區。內部ram位址範圍為0x0c00_0000~0x0fff_ffff,可讀寫,當nand啟動被選擇時,能對映到

引導映象區。

(圖中steppingstone 4k是錯誤的,不知道為什麼,有的晶元資料說是4k,有的說是8k,我請教過別人都是說8k,並且在內部sram設定sp為8*1024程式能正常跑,說明8k沒有超出範圍)

啟動流程:

給板子上電之後,硬體會將nand前8k**拷貝到steppingstone中,steppingstone會對映到引導映象區,**從0x0位址開始執行。可以通過這段啟動**將uboot等載入進sdram,實現更多功能。

這裡有個小問題困擾了很久,因為這點跟2440不同,就是為什麼nand裡8k拷貝進steppigstone後程式從0位址開始跑,而不是0x0c00_0000(steppingstone 位址0x0c00_0000),後來又看了晶元資料,steppingstone會對映到引導映象區,引導映象區在對映之前是不指向實際記憶體位址的。我做了個測試,當8k拷貝完後,我將pc指標分別指向0x0,和0x0c00_0000去執行,發現執行的**是一樣的。所以以0x0,和0x0c00_0000為起始位址的8k**其實是一樣的,都是指向實體地址為0x0c00_0000的這段**。

S3C6410啟動模式介紹

目前的arm處理器都支援多種啟動模式,s3c6410和以前的samsung的arm處理器一樣,通過外部管腳om 4 0 的拉高拉低來決定是從哪個儲存裝置上啟動。我認為s3c6410的user manual並沒有說的很清楚,所以我在最開始使用的時候,也對其啟動模式有一些誤解,下面就我個人的理解,介紹一...

S3C6410啟動模式介紹

from 目前的arm處理器都支援多種啟動模式,s3c6410和以前的samsung的arm處理器一樣,通過外部管腳om 4 0 的拉高拉低來決定是從哪個儲存裝置上啟動。我認為s3c6410的user manual並沒有說的很清楚,所以我在最開始使用的時候,也對其啟動模式有一些誤解,下面就我個人的理...

S3C6410啟動模式介紹

s3c6410啟動模式介紹 目前的arm處理器都支援多種啟動模式,s3c6410和以前的samsung的arm處理器一樣,通過外部管腳om 4 0 的拉高拉低來決定是從哪個儲存裝置上啟動。我認為s3c6410的user manual並沒有說的很清楚,所以我在最開始使用的時候,也對其啟動模式有一些誤解...