u-boot學習(一):u-boot概述

我們知道對於PC機,使用電腦時我們首先按下開機按鍵,然後等待電腦的啓動,開機完成後,我們會進行各種需要的操作,如qq聊天、寫CSDN博客等。其實這個過程是:啓動BIOS程序,由BIOS程序引導Windows操作系統,再由操作系統識別C盤D盤等硬盤,最後運行應用程序QQ、CSDN等。對嵌入式系統來說,對應BIOS的是Bootloader程序,由Bootloader程序啓動Linux內核,再由內核掛載“根文件系統”,最後運行應用程序。這裏所說的u-boot是Bootloader中的一種,除了u-boot外,還有LILO、GRUB、Vivi等等。

上面的分析可以看出嵌入式系統的幾個層次,以及各層次的關係

1.用戶應用程序
2.文件系統
3.Linux內核
4.Bootloader引導加載程序

什麼是Bootloader?
1.bootloader是指操作系統的啓動加載程序。
2.在操作系統內核運行之前運行的一段小程序,主要負責初始化硬件空間,初始化內存空間,調整系統的軟硬件環境,以便操作系統內核啓動。
3.不同的硬件以及不同的配置bootloader是不一樣的。
4.不同的CPU也有不同的bootloader,有些也支持多種CPU。
5.嵌入式系統通常把固態存儲設備地址映射好,bootloader就放在這個地址,這樣系統復位之後,就可以首先執行這段程序。

內核程序比較大,不可能放在內存中,而是放在Flash中,而Bootloader的主要作用就是引導內核,也就是從Flash中讀出內核,然後把它加載到內存中。因此,它至少要有能夠讀Flash的功能、初始化SDRAM的功能,並能夠啓動內核。這些基本的功能就構成了所謂的啓動加載模式功能。那麼內核又是怎麼存放到Flash上面去的呢,有可能是芯片出廠時直接燒寫到了芯片上的,但更多的可能是開發過程中通過u-boot燒寫到芯片上去的。那麼u-boot除了有讀Flash外,還必須有寫Flash的功能,通過什麼寫呢,所以還可能需要網卡、USB等等爲開發方便而支持的功能,這就是所謂的下載模式功能。除此之外,u-boot的功能還包括給內核傳遞參數等細節性的內容,以後的學習中會詳細的總結。

瞭解了u-boot的作用後,就是使用u-boot了,下面給出u-boot的初步體驗:

所用開發板是JZ2440。

解壓 tar xjf u-boot-1.1.6.tar.bz2
打補丁 cd u-boot-1.1.6; patch -p1 < …/u-boot-1.1.6_jz2440.patch
配置 make 100ask24x0_config
編譯 make

上面的步驟完成後,如果執行結果無誤,會生成一個u-boot.bin的二進制文件,它就是可以直接燒入ROM、NOR Flash的文件,把該文件下載到開發板上就可以體驗使用u-boot 了。其實,除了u-boot.bin二進制文件外,還有u-boot的ELF格式的可執行文件,u-boot的Motorola S_Record格式的可執行文件。除此之外,還會生成一些工具文件,如tool子目錄下面的mkimage文件,將它複製到/usr/local/bin目錄下,在編譯內核時會使用mkimage來生成u-boot格式的內核映像文件uImage(這一點在後面會提到)。

將u-boot.bin文件下載到開發板上後,啓動它,然後就能夠使用u-boot內的命令了,如print查看環境變量、hlep查看幫助信息、set設置環境變量等等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章