記憶體資源寬裕型作業系統一般都外掛程式sdram,而且cpu的計算能力都比較強,比如基於cortex a、mips 74k等核心的soc。
下圖是兩種嵌入式系統架構的差別:
圖1,對於資源緊缺型系統,內建flash和ram。
上電之前就已經通過燒寫工具將**寫到內建flash(nor flas)。而iram用於data讀寫。
圖2是資源寬裕型系統。其**都放在外接儲存介質中,如nand。sd卡等,包含引導os的啟動**、os、根檔案系統和使用者資料。
上電後的執行過程是:
1)irom中有第一階段的啟動**,一般稱為boot loader 0(bl0),
其作用是為了引導nand flash中的啟動**到iram中,而nand flash中的啟動**是為了引導os**,稱為bl1。
bl0上電執行。這時sdram尚未初始化,所以其須要將bl1搬到iram中執行。bl0的**量比較小,主要是固化nand flash和card的讀驅動**。由於其要支援不同的啟動介質。
因為受成本約束,iram也不可能非常大。那bl0搬bl1的大小通常是固定的,一定要小於iram大小。而引導os的啟動**往往超過iram大小。所以引導os的啟動**又再分為兩部分,一般分是由bl0搬到iram,即bl1;剩下的一部分稱為bl2。uboot就是這樣。
2)bl0引導bl1到iram後,把控制權交給bl1。bl1初始化好sdram,接著將bl2搬到sdram。
3)bl1將控制權交給bl2,bl2接著引導os,最後把控制權交給os。
其實。為了支援不同的啟動模式。如上電復位,看門狗中斷,睡眠喚醒等等。在2)中,bl1會將自身bl1和bl2一起搬到sdram。可見bl1可能執行在iram中,也有可能執行在sdram中,乙份**僅僅有乙個鏈結位址。怎麼能夠在兩個不同的虛擬位址上執行呢?答案就是bl1一定是位置無關的,gcc編譯選項是-fpic。
接下來的博文會具體分析uboot的**細節---基於s5pv210,歡迎關注。
嵌入式學習資源
初識 embedded visual c evc開發例項一 視窗切換 evc開發例項二 儲存資訊 一 evc開發例項二 儲存資訊 二 evc開發例項三 瀏覽器視窗 自編寫ce程序檢視程式 也論 embedded visual c 如何從桌面系統下安裝wince平台下pocket pc應用程式 boo...
嵌入式學習資源
初識 embedded visual c evc開發例項一 視窗切換 evc開發例項二 儲存資訊 一 evc開發例項二 儲存資訊 二 evc開發例項三 瀏覽器視窗 自編寫ce程序檢視程式 也論 embedded visual c 如何從桌面系統下安裝wince平台下pocket pc應用程式 boo...
初識嵌入式 嵌入式開發概述
1 什麼是嵌入式技術 1 嵌入式軟體與非嵌入式軟體的區別?答 嵌入式軟體是結合作業系統之上做的開發 非嵌入式軟體是做的裸機開發。裸機 沒有作業系統 2 嵌入式開發與微控制器開發的區別?答 區別 是否有作業系統。拓展 答 優點 解決了軟體的移植性 解決了開發人員的能力的劃分問題。提供了豐富的網路協議 ...