u boot啟動流程

2021-10-18 22:58:33 字數 1146 閱讀 4431

uboot是用來幹什麼的,有什麼作用?

uboot 屬於bootloader的一種,是用來引導啟動核心的,它的最終目的就是,從flash中讀出核心,放到記憶體中,啟動核心

所以,由上面描述的,就知道,uboot需要具有讀寫flash的能力。

uboot是怎樣引導啟動核心的?

uboot剛開始被放到flash中,板子上電後,會自動把其中的一部分**拷到記憶體中執行,這部分**負責把剩餘的uboot**拷到記憶體中,然後uboot**再把kernel部分**也拷到記憶體中,並且啟動,核心啟動後,掛著根檔案系統,執行應用程式。

uboot啟動的大過程是怎麼樣的?

uboot啟動主要分為兩個階段,主要在start.s檔案中,第一階段主要做的是硬體的初始化,包括,設定處理器模式為svc模式,關閉看門狗,遮蔽中斷,初始化sdram,設定棧,設定時鐘,從flash拷貝**到記憶體,清除bss段等,bss段是用來儲存靜態變數,全域性變數的,然後程式跳轉到start_arm_boot函式,宣告第一階段的結束。

第二階段比較複雜,做的工作主要是1.從flash中讀出核心。2.啟動核心。start_arm_boot的主要流程為,設定機器id,初始化flash,然後進入main_loop,等待uboot命令,uboot要啟動核心,主要經過兩個函式,第乙個是s=getenv(「bootcmd」),第二個是run_command(s…),所以要啟動核心,需要根據bootcmd環境變數的內容啟動,bootcmd環境變數一般指示了從某個flash位址讀取核心到啟動的記憶體位址,然後啟動,bootm。

uboot在接受到啟動命令後,要做的主要是,1,讀取核心頭部,2,移動核心到合適的載入位址,3,啟動核心,執行do_bootm_linux

do_bootm_linux主要做的為,1,設定啟動引數,在特定的位址,儲存啟動引數,函式分別為setup_start_tag,setup_memory_tag,setup_commandline_tag,setup_end_tag,根據名字我們就知道具體的段內儲存的資訊,memory中為板子的記憶體大小資訊,commandline為命令列資訊,

2,跳到入口位址,啟動核心

啟動的函式為the_kernel(0,bd->bi_arch_number,bd->bi_boot_param)

bd->bi_arch_number為板子的機器碼,bd->bi_boot_param為啟動引數的位址

uboot啟動流程概述 uboot啟動流程

u boot系統啟動流程 大多數bootloader都分為stage1和stage2兩大部分,u boot也不例外。依賴於cpu體系結構的 如裝置初始化 等 通常都放在stage1,且可以用組合語言來實現,而stage2則通常用c語言來實現,這樣可以實現複雜的功能,而且有更好的可讀性和移植性。2.1...

u boot啟動流程

uboot啟動流程分析 華清遠見嵌入式學院講師。uboot是嵌入式系統中最常用的bootloader,這裡我們以s3c2410為例分析一下uboot的啟動流程。首先通過uboot的鏈結檔案,我們可以看到uboot執行是執行的第一段 在start.s中。entry start sections ali...

uboot啟動流程

華清遠見嵌入式學院 講師。uboot是嵌入式系統中最常用的bootloader,這裡我們以s3c2410為例分析一下uboot的啟動流程。首先通過uboot的鏈結檔案,我們可以看到uboot執行是執行的第一段 在start.s中。entry start sections align 4 rodata...