bootloader詳解(ARM學習計畫)

2021-06-27 10:03:02 字數 894 閱讀 1416

參考

分析arm的兩種啟動方式

從nor flash啟動:

nor flash一般為1m空間,程式可直接在nor flash中執行,位址對映為0

只需保證bootloader放在nor flash的0位址,arm一上電會從nor flash的0位址執行

從nand flash啟動:

arm一上電nand flash的最前4k的內容會被寫進soc的sram(起步階石,大小4k)

位址對映為0,arm從0位址取指執行,而一般的bootloader會大於4k,所以bootloader

會被分成stage1與stage2。

一.stage1分析

1.無論bootloader的大小,前4k會被拷進sram,完成硬體初始化

3.設定堆疊

4.pc跳轉至sdram執行stage2(多為c函式)

需要設定跳轉到相對位址

__asm__ __volatile__ (

"ldr r0, =main\n"

"mov lr, pc\n"

"mov pc, r0\n"

: :

: "r0"

);

這樣可以確保程式跳轉到的是相對於鏈結位址的sdram裡的main函式,而不是sram裡的main函式

二.stage2分析(喚醒作業系統)

1.初始化本階段需要使用到的硬體裝置

2.檢測系統記憶體對映

3.將kernel映像和根檔案系統映像從nand flash拷貝到sdram空間

4.為核心設定啟動引數

5.呼叫核心

三.s3c2410a.s分析

s3c2410a.s是s3c2410的啟動**,可以看作bootloader的一部分

ARM裸機開發 bootloader 內部看ARM

一 嵌入式大彙總 1 晶元 s3c2440 s3c6410 s5pv210 2 arm核 a8 arm9 arm11 3 指令架構 armv7 armv6 2440使用的是arm9的核,核心使用的是armv4的指令架構 6410使用的是arm11的核,核心使用的是armv6的指令架構 210使用的是...

ARM裸機開發(四) bootloader的設計

part 1 arm啟動流程 一 2440 啟動 檢視s3c2440a.pdf 文件 注 左為norflash啟動,右為從nandflash啟動 1.1 處理器上電後,從0位址啟動。nandflash啟動 1.2 nandflash不能直接參與arm處理器的統一編址,bootsram stepipn...

ARM9 Bootloader的啟動流程

bootloader啟動大多數都分為兩個階段.第乙個階段主要包含依賴於cpu的體系結構硬體初始化的 通常都用組合語言來實現。這個階段的任務有 1 基本的硬體裝置初始化 遮蔽所有的中斷 關閉處理器內部指令 資料cache等 2 為第二階段準備ram空間。3 如果是從某個固態儲存煤質中,則複製bootl...