嵌入式啟動之一 資源有限型系統啟動

2022-07-07 21:24:10 字數 952 閱讀 9564

啟動即是晶元上電復位要執行的程式,啟動作為乙個模組獨立於作業系統而在,因為作業系統需要通過啟動這個模組來載入和引導的。所以啟動的英文術語是boot loader。我對boot loader的定義包括兩部分:1.載入os 2. 為了讓os能夠正常執行所要做的硬體和軟體初始化工作。

我們常常看到boot loader這個詞語用於arm引導linux,x86引導windows等等。可見一般意義上,能用上boot loader都是一些計算能力強並外掛程式sdram的soc方案。那我們咱們去理解記憶體資源有限型的嵌入式系統的啟動呢?就以51為例。

51體系soc一般都是內建k位元組級別的nor flash用於執行**,並內建一塊k級別較小的ram用於資料讀寫。很明顯這種系統跑不了linux這種高大上的系統,那51的啟動都幹嘛呢?我們從程式開發流程說起:

1)編寫程式,編譯,鏈結成可執行檔案。一般在keil整合環境中。

2)keil的二進位制工具(類似gcc的objcopy)解釋1)中的可執行檔案,抽取code和data資料,生成帶有載入位址的.hex格式檔案。記住是載入位址,而不是執行位址。

3)燒寫.hex檔案資料到nor flash,其根據的是檔案中的載入位址。一般來說,**段的載入位址和執行位址是一樣的,這樣才能在nor flash中跑起來。但是data是要放在內建ram區域才能可讀寫的,可是ram掉電會消失啊。所以data是先載入到nor flash的。即data的執行位址在ram區域,而載入位址在flash區域。

4)上電復位後,啟動**會進行硬體初始化,例如時鐘,看門狗,串列埠等等

5)準備好棧,然後把data從載入的地方copy到ram的執行區域(鏈結位址)

6)初始化好bss,然後就jump到主程式開始跑啦。

簡單的嵌入式系統一般沒有os,就是上面的流程。這種系統的**量一般比較小,全部放到內建的nor flash中,沒有外掛程式的nand flash或者card。它可以支援讀寫卡,但是**只放到內建的nor flash,而沒有放到外接的卡中。

嵌入式啟動之二 資源寬裕型嵌入式系統

記憶體資源寬裕型作業系統一般都外掛程式sdram,而且cpu的計算能力都比較強,比如基於cortex a mips 74k等核心的soc。下圖是兩種嵌入式系統架構的差別 圖1,對於資源緊缺型系統,內建flash和ram。上電之前就已經通過燒寫工具將 寫到內建flash nor flas 而iram用...

嵌入式系統啟動

嵌入式系統在啟動時,引導 作業系統的執行和應用程式的載入主要有兩種架構,一種是直接從nor flash啟動的架構,另一種是直接從nand flash啟動的架構。1.從nor flash啟動 nor flash具有晶元內執行 xip,execute in place 的特點,在嵌入式系統中常做為存放啟...

嵌入式開發手記(一)嵌入式系統啟動過程

s5pv210啟動詳解 soc詳解。2.bl1,bl2 為 bootloder1,bootloder 2.1 1 cpu 上電後先從內部 irom 類似sram 中讀取預先設定的 bl0 執行。這一段 irom 首先做了一些基本的初始化 cpu時鐘 關看門狗 這一段 irom 是三星出廠前設定的,三...