jollen.org

Jollen 的 Blog
Jollen's email: jollen # jollen.org
more:  Jollen's Training

關於 U-Boot 的程式整體進入點

.作者:jollen/
.日期:January 30, 2007 11:41 PM


關於 U-Boot 的程式進入點,我以 SMDK2410 平臺為例來說明。首先,在每張 board 的目錄下,都會有一個 linker script,程式的整體進入點可以閱讀此檔案得知。以 SMDK2410 來說,我們應該由 <U-Boot>/board/smdk2410/u-boot.lds 檔案看起,以下是其內容節錄:

ENTRY(_start)
SECTIONS
{
        . = 0x00000000;

        . = ALIGN(4);
        .text      :
        {
          cpu/arm920t/start.o   (.text)
          *(.text)
        }

在 linker script 的 SECTIONS 命令區塊中,.text section 一開始被放進 <U-Boot>/cpu/arm920t/start.o 檔,所以能了解到此檔案是整個 U-Boot 程式的進入點。因此,「整體的 U-Boot 啟動流程,是由 <U-Boot>/cpu/arm920t/start.o 檔案開始的」,start.o 是 U-Boot for ARM9 整個程式碼中,唯一的 assembly code,其原始程式的檔名為 start.S

所以,由 <U-Boot>/cpu/arm920t/start.S 開始研讀,是了解 U-Boot 整個執行過程的起始點。另外,附帶一提,就概念上來說,start.S 最主要的工作是:

  • 設定中斷向量表
  • 設定 processor
  • Initialization Sequence
  • Relocation

因此,我們把 start.S 也稱為「hardware bring-up code」,而且是「前期」的硬體帶動碼(bring-up code)。在 U-Boot 的 cpu/ 目錄下,可以看到 U-Boot 為各種不同的處理器所撰寫的 bring-up code,可見 U-Boot 真的是一個「萬用 bootloader」。

下篇日記,我將會分享 start.S 的研讀筆記,歡迎對 U-Boot 有興趣的朋友來信指教。

Tags:

純手工打造說明:技術專欄文章為 Jollen 原創,內容皆為人工撰寫,無 AI 生成。轉載請註明出處與作者,並全文引用。轉載時請在文章開頭或結尾明顯處註明「本文出處:https://www.jollen.org,已取得原作者同意並授權使用。」
訂閱電子報:不定期 Jollen's Blog 精選文章隨 Moko365 電子報寄送;請透過 Moko365 電子報訂閱(可隨時取消)。

Copyright(c) 2001–2007 www.jollen.org. All rights reserved.
Last update: 2026-07-22