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傳送的資料在程式裡指定,對於本程式傳送資料為乙個...