參考
分析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...