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

2021-07-05 18:23:14 字數 1852 閱讀 3027

part 1  arm啟動流程

一、 2440 啟動

(檢視s3c2440a.pdf 文件)

(注:左為norflash啟動,右為從nandflash啟動)

1.1 處理器上電後,從0位址啟動。

nandflash啟動:

1.2 nandflash不能直接參與arm處理器的統一編址,bootsram(stepipng stone)為片內ram

第一步:啟動時, 處理器會把nand flash 前4k的內容複製到boottsram中,再執行bootsam中的**。

第二步:被複製的前4k**除了要做初始化工作外,還需要將nand flash中剩下的那部分bootloader複製到記憶體中,4k執行完後,處理器接著執行記憶體中的**。

二、6410啟動方式

(手冊s3c6410x.pdf)

搜尋booting

1、 6410支援nor flash(已經不用)、onenand(兼備nand flash和nor特性) 、 modem、irom(包括nand flash以及sd卡啟動方式等)中啟動。

2、位址布局

3、nand flash啟動步驟(irom啟動中的一種)

第一步:將irom對映到映象中

第二步:處理器從irom中取指令(硬體廠商固化在的初始化軟體bl0)

第三步:bl0將bootloaer中的前8k(bl1)複製到stepping stone中

第四步:前8k拷貝剩下的bootloader拷貝到sdram(記憶體)中,繼續執行記憶體中的**。

三、210 啟動方式

1、位址布局

2、nandflash啟動流程

第一步:irom中的bl0將nandflash中的bl1(16k)拷貝到iram中。

第二步:由bl1將bl2拷貝到iram中

第三步:若bl2超出80k,則剩餘部分有bl1拷貝到sram記憶體中。

part3    uboot工作流程

(以s3c2440為例)

分析方法:

第一步:找程式入口

1、首先找到頂層目錄的makefile

2、找到相應開發板的配置選項(如smdk2440_comfig)

3、根據配置項中的開發板名稱,在board中找到其目錄,找到相關的檔案

4、開啟其鏈結器指令碼u-boot.lds,找到程式的入口程式檔案。

第二步:第一階段**分析(bl1)

start.s,彙編部分

(原則:只關係做了什麼不關係怎麼做的)

完成的工作:

1、設定中斷向量表

2、設定處理器為svc模式

3、重新整理i/d cache

4、關閉mmu和cache

(lowlevel中)

5、初始化系統時鐘、串列埠、簡單初始化nand flash

6、記憶體初始化

(返回)

7、複製nand flash中的bootloader到記憶體中

8、設定堆疊(為c程式設計做準備)

9、清除bss段

(注:利用好反彙編分析**的方法)

第三步:第二階段**分析(在記憶體中執行的**

原則:注重硬體初始化部分,而弱化軟體初始化部分

1、初始化串列埠

2、lcd初始化

3、網絡卡初始化

4、初始化led

5、執行使用者輸入的命令

ARM 裸機 02 ARM裸機開發流程

執行在不同平台上的程式,開發過程不盡相同。為了更好地理解 arm 裸機的開發流程,我們先和比較熟悉的 windows linux 應用程式開發對比。不同平台程式開發流程對比示意 編譯嵌入式程式的平台稱為宿主機,譬如執行 ubuntu 系統的 pc。執行嵌入式程式的平台稱為目標機,譬如 arm 開發板...

ARM裸機開發快速體驗

一。linux平台 自己寫makefile 自己寫lds指令碼 自己搭建除錯環境 二。裸機開發流程 1 編寫裸機程式 2 除錯裸機程式 3 編譯 鏈結 格式轉換成二進位制映像 1.安裝交叉工具鏈 把課程裡面的工具包拷貝到linux,解壓arm linux gcc到根目錄 c 交叉工具在usr loc...

ARM裸機開發(五)SPI

以下裸機程式基於gt2440,編譯器為arm linux gcc 4.4.3。程式結構 本程式只有乙個spi.s檔案。程式流程 首先上電復位進入復位異常,在復位異常裡依次呼叫子程式關閉看門狗 初始化系統時鐘 初始化串列埠,最後呼叫spi傳送資料,spi傳送的資料在程式裡指定,對於本程式傳送資料為乙個...