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

2021-08-01 06:56:46 字數 1299 閱讀 2327

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啟動的核心為uimage,這種格式的核心是由兩部分組成:真正的核心和核心頭部組成,頭部中包括核心中的一些資訊,比如核心的載入位址,入口位址。

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為啟動引數的位址

gulp是用來幹什麼的?(概念)

當我們在使用gulp的時候,gulp到底用來幹什麼呢?編譯 sass 合併優化壓縮 css 校驗壓縮 js 優化新增檔案指紋 md5 元件化頭部底部 include html 實時自動重新整理 壓縮靜態資源 變更靜態資源 給靜態資源新增 md5 修改預處理樣式後自動編譯 sass,less 合併雪碧...

FFT是幹什麼的

fft在演算法競賽中就有乙個用途 加速多項式乘法 暴言 簡單來說,形如 a0x0 a1x1 a2x2 anxna0x0 a1x1 a2x2 anxn 的代數表示式叫做多項式,可以記作f x a0x0 a1x1 a2x2 anxnf x a0x0 a1x1 a2x2 anxn,其中a0,a1,ana0...

npm是幹什麼的

網上的 npm 教程主要都在講怎麼安裝 配置和使用 npm 卻很少告訴新人 npm 是幹什麼的?為什麼要使用 npm?今天我就來講講這個話題。本文目標讀者是 不太了解 npm 的新人 老司機請繞道。社群共享 麻煩npm的思路大概是這樣的 這些可以被使用的 被叫做 包 package 這就是 npm名...