剛剛接觸
s5pv210
,看了官方的資料手冊感覺跟以前用的
stm32
微控制器根本不在乙個層面上,當然兩者的用途不同,不具備可比性。
可能之前習慣使用
stm32
等微控制器,現在接觸
s5pv210
還有點不太適應,尤其搞不懂
s5pv210
norflash
很貴,所以現在很多的嵌入式系統傾向於不使用
norflash
,直接用
nandflash+dram+soc
內建sram。
直接進入主題看看
s5pv210
的啟動過程。
首次看一張圖
首先解釋一下我認為的bl0、bl1、bl2:
(1)bl0:是指s5pv210的irom中固化的啟動**;
(2)bl1:是指在iram自動從外擴儲存器(nand /sd/usb)中拷貝的uboot.bin二進位制檔案的頭**;
(3)bl2:是指在**重定向後在記憶體中執行的的uboot的完整**;
(4)三者之間關係是:(interal rom固話**)bl0將bl1(bootloader的前16kb)載入到iram;bl1然後在iram中執行將bl2(其實整個bootloader)載入到sdram(ddr);bl2載入核心;bl就是bootloader的簡寫;
注意這裡的
bl1/bl2
的大小是有限制的,由內部
sram
決定,也就是圖中的
96kb
,而bl1
的大小是
16kb
,而bl2
的最大值為
80kb
第一步:
irom
可以做最初的啟動:初始化系統時鐘,驅動特殊控制器和啟動裝置(
mmc/onenand/nand/essd/nor)。
第二步:
irom
可以引導**可以把
boot-loader
載入到sram
,這個boot-loader
被稱為bl1
。之後irom
會在安全啟動(引導)的模式下檢查驗證
bl1的完整性。
第三步:
bl1將被執行:
bl1會載入剩下的叫做
bl2的
boot-loader
。之後bl1
會在安全模式下檢查驗證
bl2的完整性。
第四步:
bl2將被執行:
bl2在初始化
dram
(記憶體)控制器後把
os資料載入到
sdram。
第五步
接下來是對
bl0工作內容的介紹,官方的文件如下
bl0引導啟動的順序:
(1).
關看門狗
(2).
初始化指令告訴緩衝儲存器
(3).
初始化棧區域
(4).
初始化堆區域
(5).
初始化塊裝置複製函式
(6).
初始化pll
鎖相環和設定
soc系統時鐘
(7).
複製bl1
到內部的
sram
(16kb)
(8).
核查bl1
的校驗和,如果檢查錯誤,
irom
將會嘗試第二個啟動(從二通道)
(9).
檢查是否為安全啟動模式,如果安全關鍵值已經寫在
s5pv210,
那麼就是安全啟動模式,如果是安全啟動模式,核查
bl1的完整性。
(10).
跳轉到bl1執行
看了以上的說明可以看出bl0內的固化**其實還有乙個很重要的作用就是識別啟動介質,這個識別就用到了晶元的om pin,所以再看一下啟動說明
從流程圖可以看到上電後執行內部
sram
的**,做出各種初始化動作,接下來判斷晶元是否處於睡眠狀態,這個主要和晶元的低功耗有關,之後在經過一輪初始化後根據
om pin
識別介質,並開始第一次引導,如果失敗會進行第二次引導也就是圖中的
go to 2nd boot
,進入通道
2了繼續執行,假設成功了,就順利跑到
bl1部分,
bl1主要是初始化板子與載入
bl2的**,然後執行
bl2的**。
bl2主要是初始化
sdram
然後引導核心。這就是整個
boot
的流程。
上面沒有第一次引導失敗怎麼辦,官方給出了很詳細的流程,上圖。
在第乙個引導失敗後,會進行第二次引導,例如
sd卡有兩個通道,通道0用於
1st boot
,通道2
用於2nd boot
(s5pv210
有多個sd
卡控制介面,也就是所謂的通道),如果第二次引導都失敗的話,就會嘗試通過串列埠和
usb進行引導,如果還是引導失敗的話則終止引導過程(估計是板子要「假死
」了)qaq。這就是
s5pv210
的boot
基本情況。對於使用
mmc裝置(
sd卡)啟動的的,要在特定位置設定
mmc卡的資料資訊,主要是三個全域性變數,如下表所示(一般來說不設定也沒有多大問題,不用
rom內部的函式就是了):
S5PV210的啟動過程
初步認識irom和iram s5pv210含有乙個內64k的irom和96k的iram,系統啟動時主要依靠它們,irom和iram所處的儲存空間見下圖 s5pv210有irom,且只能從irom啟動,不再支援原來的直接從外部介質啟動方式。irom bl0 執行完畢後,根據om 5 0 確定外部啟動介...
s5pv210的啟動過程
s5pv210的啟動方式 sd0啟動,sd2啟動,usb啟動 上電後,先從64kb的irom中讀取預先設定的 bl0,這部分 初始化了soc 內部的東西,包括關看門狗,初始化指令icache,初始化棧,初始化堆,初始化塊裝置賦值函式,設定soc時鐘系統,賦值bl1到內部iram 16kb 檢查bl1...
S5PV210的啟動詳解2
disable the watch dog timer initialize the instruction cache initialize the stack region see memory map on chap 2.5 initialize the heap region.see mem...