嵌入式 BootLoader 技術內幕

2021-08-02 14:22:17 字數 1439 閱讀 7653

在專用的嵌入式板子執行 gnu/linux 系統已經變得越來越流行。乙個嵌入

式 linux 系統從軟體的角度看通常可以分為四個層次:

引導引導程式。包括固化在韌體(firmware)中的 boot **(可選),和

boot loader 兩大部分。

linux 核心。特定於嵌入式板子的定製核心以及核心的啟動引數。

檔案系統。包括根檔案系統和建立於 flash 記憶體裝置之上檔案系統。通常用 ram disk 來作為 root fs。

使用者應用程式。特定於使用者的應用程式。有時在使用者應用程式和核心層之間可能還會包括乙個嵌入式圖形使用者介面。常用的嵌入式 gui 有:microwindows 和 minigui 懂。

boot loader 所支援的 cpu 和嵌入式板每種不同的 cpu 體系結構都有不同的 boot loader。有些 boot loader 也支援多種體系結構的 cpu,比如 u-boot 就同時支援 arm 體系結構和 mips 體系結構。除了依賴於 cpu 的體系結構外,boot loader 實際上也依賴於具體的嵌入式板級裝置的配置。這也就是說,對於兩塊不同的嵌入式板而言,即使它們是基於同一種 cpu 而構建的,要想讓執行在一塊板子上的 boot loader 程式也能執行在另一塊板子上,通常也都需要修改 boot loader 的源程式。

boot loader 的安裝媒介(installation medium)

系統加電或復位後,所有的 cpu 通常都從某個由 cpu 製造商預先安排的位址上取指令。比如,基於 arm7tdmi core 的 cpu 在復位時通常都從位址0x00000000 取它的第一條指令。而基於 cpu 構建的嵌入式系統通常都有某種型別的固態儲存裝置(比如:rom、eeprom 或 flash 等)被對映到這個預先安排的位址上。因此在系統加電後,cpu 將首先執行 boot loader 程式。

用來控制boot loader的裝置或機制

主機和目標機之間一般通過串列埠建立連線,boot loader 軟體在執行時通常會通過串列埠來進行 i/o,比如:輸出列印資訊到串列埠,從串列埠讀取使用者控制字元等。

boot loader 的啟動過程是單階段(single stage)還是多階段(multi-stage)

通常多階段的 boot loader 能提供更為複雜的功能,以及更好的可移植性。從固態儲存裝置上啟動的 boot loader 大多都是 2 階段的啟動過程,也即啟動過程可以分為 stage 1 和 stage 2 兩部分。至於在 stage 1 和 stage 2具體完成哪些任務將在下面幾篇討論。

boot loader的操作模式 (operation mode)

嵌入式系統 Boot Loader 技術內幕

used i continue 當前頁已經是乙個被對映到 ram 的有效位址範圍 但是還要看看當前頁是否只是 4gb 位址空間中某個位址頁的別名?if u32 addr 0 當前頁已經是乙個被對映到 ram 的有效位址範圍 而且它也不是 4gb 位址空間中某個位址頁的別名。if memory map...

嵌入式Bootloader小述

bootloader的概念 bootloader就是在作業系統核心執行之前執行的一段程式,類似於pc機中的bios程式。bootloader的功能就是完成硬體裝置的初始化 建立記憶體空間的對映圖的功能,將系統的軟硬體環境帶到乙個合適的狀態,為最終呼叫系統核心做好準備。嵌入式中的bootloader一...

嵌入式 Bootloader的作用

關於bootloader的作用,老師教我們把它當作pc的bios來理解,但其實不完全是這麼回事。文章參考 bootloader是系統加電後執行的第一段 一般它只在系統啟動時非常短的時間內執行。在pc中,整個bootloader由bios 主機板上固化的一段程式 位於硬碟mbr區的os loader一...