目前的arm處理器都支援多種啟動模式,s3c6410和以前的samsung的arm處理器一樣,通過外部管腳om[4:0]的拉高拉低來決定是從哪個儲存裝置上啟動。我認為s3c6410的user manual並沒有說的很清楚,所以我在最開始使用的時候,也對其啟動模式有一些誤解,下面就我個人的理解,介紹一下s3c6410的啟動。
先讀一下s3c6410 user manual的第3章 system controller,在123頁列了一張表,如圖:
om[4:0]:選擇啟動裝置及時鐘源。om[0]為0選擇xxtlpll,為1選擇xextclk。
xselnand:選擇nand啟動或者是onenand啟動。0為onenand,1為nand。
從表中可以看出,s3c6410好像並不支援nandflash啟動,因為boot device中沒有nandflash裝置。當om[4:0]為0000x/0001x/0010x/0011x的時候,boot device是reserved,我想這裡是samsung在6410中有意要隱瞞什麼。如果你用過s3c6400,你應該知道在s3c6400 user manual中也有這麼一張表,描述了s3c6400的啟動模式,具體s3c6400的啟動模式也是在第3章 system controller,在第107頁的表,如圖:
我想和s3c6410的表對照一下就會發現,兩個處理器的啟動模式是相容的,我認為s3c6410應該相容s3c6400的啟動模式,只不過 samsung在s3c6410 user manual中隱藏了s3c6400中所支援nandflash啟動模式,目的可能是samsung不希望在s3c6410中使用nandflash啟動,而要推崇irom的啟動模式。個人理解啊!
下面來總結一下s3c6410所支援的啟動模式:
1. norflash啟動
通過nor flash啟動,此時om[4:1]為0100或0101,對應8bit和16bit。
2. nandflash啟動
雖然在s3c6410 user manual中沒有提到,但是也是支援的,從s3c6400 user manual可以找到。om[4:1]四個硬體管腳決定了nandflash啟動,以及支援的nandflash的型別,包括大page和小page,位址週期為3,4,5。當然,xselnand管腳也要為1。
3. onenand啟動
首先xselnand管腳為0,其次om[4:1]為0110,為onenand啟動模式。
4. modem啟動
5. irom啟動
當om[4:1]為1111的時候,從internal rom中啟動,此時gpn[15:13]用於識別裝置的型別。這種模式以前沒見過,這裡具體介紹一下。
irom模式可以支援movinand,sd/mmc,inand,onenand和nand等。關於irom的引導,具體過程如圖:
1. 處理器上電後,當om[4:1]=1111時,執行irom中的程式,這個程式被稱為bootloader0(bl0),它會做一些初始化的工作。
2. 然後根據gpn[15:13]的管腳設定,選擇從相應的裝置(sd/mmc/onenand/nand)中的指定區域讀取4kb的程式到steppingstone中執行,這段**被稱為bootloader1(bl1)。
3. bl1可以初始化系統時鐘,uart,sdram等裝置,然後拷貝bootloader2(bl2)到sdram中。
4. 跳轉到sdram中的bl2,繼續執行,bl2可以支援更強大的功能,可以將os載入到sdram中,然後執行os。
整個過程中,irom是最先被執行的,它會首先做一些初始化,具體irom的流程如下:
1. 禁用watch-dog
2. 初始化tcm
3. 初始化裝置拷貝函式,用於拷貝bl1到steppingstone中
4. 初始化棧區域
5. 初始化pll
6. 初始化指令cache
7. 初始化堆區域
8. 拷貝bl1到steppingstone中
9. 驗證bl1
10. 跳轉到steppingstone中執行
還是看一下流程圖吧,理解起來會更直觀一些,irom啟動流程如圖:
S3C6410啟動模式介紹
from 目前的arm處理器都支援多種啟動模式,s3c6410和以前的samsung的arm處理器一樣,通過外部管腳om 4 0 的拉高拉低來決定是從哪個儲存裝置上啟動。我認為s3c6410的user manual並沒有說的很清楚,所以我在最開始使用的時候,也對其啟動模式有一些誤解,下面就我個人的理...
S3C6410啟動模式介紹
s3c6410啟動模式介紹 目前的arm處理器都支援多種啟動模式,s3c6410和以前的samsung的arm處理器一樣,通過外部管腳om 4 0 的拉高拉低來決定是從哪個儲存裝置上啟動。我認為s3c6410的user manual並沒有說的很清楚,所以我在最開始使用的時候,也對其啟動模式有一些誤解...
S3C6410啟動模式介紹
目前的arm處理器都支援多種啟動模式,s3c6410和以前的samsung的arm處理器一樣,通過外部管腳om 4 0 的拉高拉低來決定是從哪個儲存裝置上啟動。我認為s3c6410的user manual並沒有說的很清楚,所以我在最開始使用的時候,也對其啟動模式有一些誤解,下面就我個人的理解,介紹一...