www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 技術(shù)學(xué)院 > 技術(shù)前線
[導(dǎo)讀]U-Boot提供命令行接口(CLI),允許開發(fā)者實(shí)時(shí)查看硬件信息、修改啟動(dòng)參數(shù)、讀寫存儲(chǔ)設(shè)備等操作。例如,通過(guò)串口或網(wǎng)絡(luò)連接可實(shí)時(shí)調(diào)試內(nèi)存狀態(tài)或監(jiān)控系統(tǒng)運(yùn)行,部分工業(yè)設(shè)備仍依賴其硬實(shí)時(shí)響應(yīng)能力。

U-Boot(通用引導(dǎo)加載程序)在嵌入式系統(tǒng)中的作用主要包括硬件初始化、引導(dǎo)操作系統(tǒng)內(nèi)核、提供調(diào)試工具及固件升級(jí)支持,具體功能如下:

硬件初始化

U-Boot在系統(tǒng)啟動(dòng)時(shí)負(fù)責(zé)初始化CPU、內(nèi)存、串口、網(wǎng)卡等核心硬件組件,為操作系統(tǒng)運(yùn)行奠定基礎(chǔ)。例如,它會(huì)設(shè)置處理器模式、內(nèi)存控制器參數(shù)、時(shí)鐘頻率等關(guān)鍵硬件狀態(tài)。 ?

引導(dǎo)操作系統(tǒng)

U-Boot可從閃存、SD卡、網(wǎng)絡(luò)等多種介質(zhì)加載操作系統(tǒng)內(nèi)核(如Linux),并將其從存儲(chǔ)設(shè)備復(fù)制到內(nèi)存中啟動(dòng)。它支持自定義啟動(dòng)參數(shù)(如內(nèi)存分配、命令行參數(shù)等),并處理內(nèi)核鏡像的加載與驗(yàn)證。 ?

系統(tǒng)調(diào)試與維護(hù)

U-Boot提供命令行接口(CLI),允許開發(fā)者實(shí)時(shí)查看硬件信息、修改啟動(dòng)參數(shù)、讀寫存儲(chǔ)設(shè)備等操作。例如,通過(guò)串口或網(wǎng)絡(luò)連接可實(shí)時(shí)調(diào)試內(nèi)存狀態(tài)或監(jiān)控系統(tǒng)運(yùn)行,部分工業(yè)設(shè)備仍依賴其硬實(shí)時(shí)響應(yīng)能力。 ?

固件升級(jí)支持

U-Boot支持通過(guò)網(wǎng)絡(luò)或本地存儲(chǔ)升級(jí)固件,適用于需要遠(yuǎn)程維護(hù)的嵌入式設(shè)備。例如,智能電網(wǎng)終端通過(guò)保留必要驅(qū)動(dòng)模塊實(shí)現(xiàn)快速固件更新。

uboot是用來(lái)干什么的,有什么作用?

uboot 屬于bootloader的一種,是用來(lái)引導(dǎo)啟動(dòng)內(nèi)核的,它的最終目的就是,從flash中讀出內(nèi)核,放到內(nèi)存中,啟動(dòng)內(nèi)核

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

uboot是怎樣引導(dǎo)啟動(dòng)內(nèi)核的?

uboot剛開始被放到flash中,板子上電后,會(huì)自動(dòng)把其中的一部分代碼拷到內(nèi)存中執(zhí)行,這部分代碼負(fù)責(zé)把剩余的uboot代碼拷到內(nèi)存中,然后uboot代碼再把kernel部分代碼也拷到內(nèi)存中,并且啟動(dòng),內(nèi)核啟動(dòng)后,掛著根文件系統(tǒng),執(zhí)行應(yīng)用程序。

uboot啟動(dòng)的大過(guò)程是怎么樣的?

uboot啟動(dòng)主要分為兩個(gè)階段,主要在start.s文件中,第一階段主要做的是硬件的初始化,包括,設(shè)置處理器模式為SVC模式,關(guān)閉看門狗,屏蔽中斷,初始化sdram,設(shè)置棧,設(shè)置時(shí)鐘,從flash拷貝代碼到內(nèi)存,清除bss段等,bss段是用來(lái)存儲(chǔ)靜態(tài)變量,全局變量的,然后程序跳轉(zhuǎn)到start_arm_boot函數(shù),宣告第一階段的結(jié)束。

第二階段比較復(fù)雜,做的工作主要是1.從flash中讀出內(nèi)核。2.啟動(dòng)內(nèi)核。start_arm_boot的主要流程為,設(shè)置機(jī)器id,初始化flash,然后進(jìn)入main_loop,等待uboot命令,uboot要啟動(dòng)內(nèi)核,主要經(jīng)過(guò)兩個(gè)函數(shù),第一個(gè)是s=getenv("bootcmd"),第二個(gè)是run_command(s...),所以要啟動(dòng)內(nèi)核,需要根據(jù)bootcmd環(huán)境變量的內(nèi)容啟動(dòng),bootcmd環(huán)境變量一般指示了從某個(gè)flash地址讀取內(nèi)核到啟動(dòng)的內(nèi)存地址,然后啟動(dòng),bootm。

uboot啟動(dòng)的內(nèi)核為uImage,這種格式的內(nèi)核是由兩部分組成:真正的內(nèi)核和內(nèi)核頭部組成,頭部中包括內(nèi)核中的一些信息,比如內(nèi)核的加載地址,入口地址。

uboot在接受到啟動(dòng)命令后,要做的主要是,1,讀取內(nèi)核頭部,2,移動(dòng)內(nèi)核到合適的加載地址,3,啟動(dòng)內(nèi)核,執(zhí)行do_bootm_linux

do_bootm_linux主要做的為,1,設(shè)置啟動(dòng)參數(shù),在特定的地址,保存啟動(dòng)參數(shù),函數(shù)分別為setup_start_tag,setup_memory_tag,setup_commandline_tag,setup_end_tag,根據(jù)名字我們就知道具體的段內(nèi)存儲(chǔ)的信息,memory中為板子的內(nèi)存大小信息,commandline為命令行信息,

2,跳到入口地址,啟動(dòng)內(nèi)核

啟動(dòng)的函數(shù)為the_kernel(0,bd->bi_arch_number,bd->bi_boot_param)

bd->bi_arch_number為板子的機(jī)器碼,bd->bi_boot_param為啟動(dòng)參數(shù)的地址

總結(jié):uboot到底是干嘛的,對(duì)應(yīng)下面uboot必須要解決哪些問(wèn)題!

1)uboot主要作用是用來(lái)啟動(dòng)操作系統(tǒng)內(nèi)核。體現(xiàn)在uboot最后一句代碼就是啟動(dòng)內(nèi)核。

2)uboot還要負(fù)責(zé)部署整個(gè)計(jì)算機(jī)系統(tǒng)。體現(xiàn)在uboot最后的傳參。

3)uboot中還有操作Flash等板子上硬件的驅(qū)動(dòng)。例如串口要打印,ping網(wǎng)絡(luò)成功,擦除、燒寫flash是否成功等。

4)uboot還得提供一個(gè)命令行界面供人來(lái)操作。很簡(jiǎn)單,至少你能看到。

計(jì)算機(jī)系統(tǒng)的組成部件非常多,不同的計(jì)算機(jī)系統(tǒng)組成部件也不同。但是所有的計(jì)算機(jī)系統(tǒng)運(yùn)行時(shí)需要的主要核心部件都是3個(gè)東西:CPU + 外部存儲(chǔ)器(Flash/硬盤) + 內(nèi)部存儲(chǔ)器(DDR SDRAM/SDRAM/SRAM)。而一般的PC機(jī)啟動(dòng)過(guò)程為:PC上電后先執(zhí)行BIOS程序(實(shí)際上PC的BIOS就是NorFlash),BIOS程序負(fù)責(zé)初始化DDR內(nèi)存,負(fù)責(zé)初始化硬盤,然后從硬盤上將OS鏡像讀取到DDR中,然后跳轉(zhuǎn)到DDR中去執(zhí)行OS直到啟動(dòng)(OS啟動(dòng)后BIOS就無(wú)用了)。

嵌入式系統(tǒng)和PC機(jī)的啟動(dòng)過(guò)程幾乎沒(méi)有兩樣,只是BIOS成了uboot,硬盤成了Flash。

3 uboot必須解決哪些問(wèn)題?

3.1自身可開機(jī)直接啟動(dòng)

1)一般的SoC都支持多種啟動(dòng)方式,譬如SD卡啟動(dòng)、NorFlash啟動(dòng)、NandFlash啟動(dòng)等?????uboot要能夠開機(jī)啟動(dòng),必須根據(jù)具體的SoC的啟動(dòng)設(shè)計(jì)來(lái)設(shè)計(jì)uboot

2)uboot必須進(jìn)行和硬件相對(duì)應(yīng)的代碼級(jí)別的更改和移植,才能夠保證可以從相應(yīng)的啟動(dòng)介質(zhì)啟動(dòng)。uboot中第一階段的start.S文件中具體處理了這一塊。

3.2能夠引導(dǎo)操作系統(tǒng)內(nèi)核啟動(dòng)并給內(nèi)核傳參

1)uboot的終極目標(biāo)就是啟動(dòng)內(nèi)核。

2)linux內(nèi)核在設(shè)計(jì)的時(shí)候,設(shè)計(jì)為可以被傳參。也就是說(shuō)我們可以在uboot中事先給linux內(nèi)核準(zhǔn)備一些啟動(dòng)參數(shù)放在內(nèi)存中特定位置然后傳給內(nèi)核,內(nèi)核啟動(dòng)后會(huì)到這個(gè)特定位置去取uboot傳給他的參數(shù),然后在內(nèi)核中解析這些參數(shù),這些參數(shù)將被用來(lái)指導(dǎo)linux內(nèi)核的啟動(dòng)過(guò)程。

3.3能提供系統(tǒng)部署功能

1)uboot必須能夠被人借助而完成整個(gè)系統(tǒng)(包括uboot、kernel、rootfs等的鏡像)在Flash上的燒錄下載工作。

2)裸機(jī)教程中刷機(jī)(ARM裸機(jī)第三部分)就是利用uboot中的fastboot功能將各種鏡像燒錄到iNand中,然后從iNand啟動(dòng)。

U-boot是一種開源bootloader, 作用是用來(lái)引導(dǎo)操作,以及給開發(fā)人員提供測(cè)試調(diào)試工具。本身算是個(gè)精簡(jiǎn)的Linux系統(tǒng),主要是負(fù)責(zé)硬件的初始化和引導(dǎo),本身帶有一些工具,作為引導(dǎo)程序,常作為嵌入式設(shè)備的引導(dǎo)。當(dāng)真正的系統(tǒng)開始運(yùn)行的時(shí)候U-boot就把管理權(quán)限交了出去。

選擇U-Boot的理由: ① 開放源碼; ② 支持多種嵌入式操作系統(tǒng)內(nèi)核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android; ③ 支持多個(gè)處理器系列,如PowerPC、ARM、x86、MIPS; ④ 較高的可靠性和穩(wěn)定性; ⑤ 高度靈活的功能設(shè)置,適合U-Boot調(diào)試、操作系統(tǒng)不同引導(dǎo)要求、產(chǎn)品發(fā)布等; ⑥ 豐富的設(shè)備驅(qū)動(dòng)源碼,如串口、以太網(wǎng)、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、鍵盤等; ⑦ 較為豐富的開發(fā)調(diào)試文檔與強(qiáng)大的網(wǎng)絡(luò)技術(shù)支持;

U-BOOT工作模式

U-Boot的工作模式有啟動(dòng)加載模式和下載模式。啟動(dòng)加載模式是Bootloader的正常工作模式,嵌入式產(chǎn)品發(fā)布時(shí),Bootloader必須工作在這種模式下,Bootloader將嵌入式操作系統(tǒng)從FLASH中加載到SDRAM中運(yùn)行,整個(gè)過(guò)程是自動(dòng)的。下載模式就是Bootloader通過(guò)某些通信手段將內(nèi)核映像或根文件系統(tǒng)映像等從PC機(jī)中下載到目標(biāo)板的FLASH中。用戶可以利用Bootloader提供的一些命令接口來(lái)完成自己想要的操作。

當(dāng)前測(cè)試uboot命令的開發(fā)板是友善之臂tin441,使用三星的EXYNOS4412,本篇文章重點(diǎn)是介紹uboot命令行的命令功能,用法,使用的uboot版本是2010.12,是友善之臂官方提供的uboot。

uboot

1.硬件管理 uboot要能夠進(jìn)行Soc級(jí)(Soc內(nèi)部外設(shè))和板級(jí)(Soc外部外設(shè))硬件管理。 uboot中實(shí)現(xiàn)了一部分硬件的控制能力(uboot中初始化了一部分硬件),因?yàn)閡boot為了完成一些任務(wù)必須讓這些硬件工作。譬如uboot要實(shí)現(xiàn)刷機(jī)必須能驅(qū)動(dòng)iNand,譬如uboot要在刷機(jī)時(shí)LCD上顯示進(jìn)度條就必須能驅(qū)動(dòng)LCD,譬如uboot能夠通過(guò)串口提供操作界面就必須驅(qū)動(dòng)串口。譬如uboot要實(shí)現(xiàn)網(wǎng)絡(luò)功能就必須驅(qū)動(dòng)網(wǎng)卡芯片。 2.能夠完成鏡像燒錄(刷機(jī)) uboot要能夠被借助完成刷機(jī)操作。參考下SD卡刷機(jī)的步驟: a.燒錄uboot到SD卡中。 有2種燒寫方法:一種是在windows中用刷卡工具去制作啟動(dòng)SD卡;另一種是在linux中用dd命令。制作完SD后將SD卡插入開發(fā)板,然后開機(jī)就可以進(jìn)入uboot界面。 b.使用uboot的fastboot命令,并借助PC中的fastboot軟件完成包括uboot、kernel、rootfs等的鏡像的燒錄。 從上面就可以看出,刷機(jī)依靠的是uboot的fastboot命令,將鏡像寫到相應(yīng)的FLASH中。 3.uboot的“生命周期” uboot的入口就是開機(jī)自動(dòng)啟動(dòng),uboot的唯一出口就是啟動(dòng)內(nèi)核。uboot還可以執(zhí)行很多別的任務(wù)(譬如燒錄系統(tǒng)),但是其他任務(wù)執(zhí)行完后都可以回到uboot的命令行繼續(xù)執(zhí)行uboot命令,而啟動(dòng)內(nèi)核命令一旦執(zhí)行就回不來(lái)了。 4.uboot要提供命令式shell界面 shell是用戶操作接口的意思。shell有命令行的shell,如windows下的cmd,如linux下的終端;也有GUI式的shell,比如常用的windows下的各種界面。shell是一種封裝后留出來(lái)的接口,uboot也要有這樣的一個(gè)接口。 shell的原理是:由消息接收、解析、執(zhí)行構(gòu)成的一個(gè)死循環(huán)。我之前用過(guò)3D打印機(jī)的固件(firmware)也是這樣的模式。 uboot的shell使用的也是行緩沖的模式。也就是以回車鍵(換行鍵)作為一個(gè)命令輸入的結(jié)束。對(duì)應(yīng)的其他緩沖模式還有無(wú)緩沖和全緩沖:無(wú)緩沖就是輸入一個(gè)字符就當(dāng)做一個(gè)命令處理;全緩沖就是無(wú)論輸入什么都緩沖起來(lái)知道緩沖區(qū)滿了才做一次處理。

bootloader 與 uboot的區(qū)別

BootLoader是嵌入式設(shè)備中用來(lái)啟動(dòng)操作系統(tǒng)內(nèi)核的一段程序。 uboot(universal bootloader)是一種可以用于多種嵌入式CPU的BootLoader程序,換言之,uboot是bootloader的一個(gè)子集。 uboot的核心作用就是啟動(dòng)操作系統(tǒng)內(nèi)核,uboot的本質(zhì)就是一段裸機(jī)程。

首先uboot可以說(shuō)是一個(gè)裸機(jī)程序,提到裸機(jī)程序直覺(jué)就是可以驗(yàn)證功能,所以u(píng)boot提供了強(qiáng)大的命令行,支持了各種硬件相關(guān)的驅(qū)動(dòng)程序,所以先跑起來(lái)uboot很重要。

然后就是一些功能不方便kernel去做的,比如升級(jí)就更加的高效。因?yàn)?a href="/tags/uboot" target="_blank">uboot里面去操作FLASH等有更高的效率

若設(shè)置了 u-boot 啟動(dòng)時(shí)等待任意鍵輸入幾秒,若有輸入,則退出自啟動(dòng)模式而進(jìn)入命令行模式。

help:顯示所有命令及其說(shuō)明;

help 命令:顯示命令詳細(xì)的使用說(shuō)明;

pri:查看所有環(huán)境變量,包括開機(jī)等待任意輸入的時(shí)延(秒)、串口波特率(baudrate)、本地 IP 地址(ipaddr)、tftp 服務(wù)器端的 IP 地址(serverip)、自啟動(dòng)命令字符串(bootcmd,一般不用動(dòng))等等;

setenv <環(huán)境變量> <要設(shè)置的值>:修改某一個(gè)環(huán)境變量為要設(shè)置的值,要設(shè)置的值 若是字符串則要加雙引號(hào);

saveenv:將當(dāng)前所有設(shè)置過(guò)的環(huán)境變量保存,掉電不丟失;

reset:復(fù)位;

dhcp:執(zhí)行 DHCP 服務(wù),獲取 IP 地址,驗(yàn)證網(wǎng)絡(luò)功能;

setenv my:恢復(fù)系統(tǒng)的所有環(huán)境變量為默認(rèn),即使之前用戶重設(shè)的環(huán)境變量都恢復(fù)默認(rèn);

protext on/off 0~10000:對(duì) Nor Flash 區(qū)域 [0x0 ~ 0x10000] 設(shè)置為寫保護(hù)或取消寫保護(hù);

movi:對(duì) EMMC 進(jìn)行操作;

run bootcmd:,執(zhí)行 bootcmd ,其是一個(gè)環(huán)境變量,為一段字符串形式的命令;上電后 u-boot 若處于自啟動(dòng)模式最后執(zhí)行則執(zhí)行的多條命令,默認(rèn)為 下載內(nèi)核、設(shè)備樹和運(yùn)行內(nèi)核的多個(gè)命令,可以根據(jù)需要增加命令,以分號(hào)分隔。

boadinfo:查詢板子信息命令

內(nèi)存操作命令:內(nèi)存操作命令md讀,mw寫,nm修改內(nèi)存值,mm也是寫但是會(huì)自增地址,cp拷貝,cmp對(duì)比內(nèi)存值。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀
關(guān)閉