<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          uboot(bootloader)相關的知識點匯總

          共 4660字,需瀏覽 10分鐘

           ·

          2021-08-23 23:15

          掃描二維碼

          獲取更多精彩

          嵌入式雜牌軍

                                                               

                                                          編輯|追夢星空

                                                     公眾號|嵌入式雜牌軍


          ? 編 者 悟 語

              

                習慣可以讓人重復對自己有利的東西從而讓自身得以提升,也可以讓人不斷重復錯誤的事情從而給自身帶來諸多的困擾(習慣久了就成了類似無意識的東西,無意識的對,也無意識的錯)。


          文 章 導 讀


              今天給小伙伴們匯總下uboot相關的內(nèi)容,主要涉及它的定義、啟動方式、操作方式、目錄結構、編譯調(diào)試等內(nèi)容!

              閱讀過程中有什么問題可以后臺交流哈,!


          1 嵌入式存儲設備的分區(qū)情況



              在引出uboot之前先看下uboot在存儲設備中的位置。


              ① 第一分區(qū):存放uboot。


              ② 第二分區(qū):存放uboot要傳給系統(tǒng)內(nèi)核的參數(shù)。


              ③ 第三分區(qū):系統(tǒng)內(nèi)核。


              ④ 第四分區(qū):根文件系統(tǒng)。


          2 uboot 相關的知識點



              1)定義


              Bootloader是操作系統(tǒng)運行之前執(zhí)行的一小段程序,通過這一小段程序,可以初始化硬件設備/建立內(nèi)存空間映射表,從而建立適當?shù)南到y(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核做好準備。

           

              uboot是bootloader的一種,下面內(nèi)容可能出現(xiàn)混用的情況。


              2)uboot啟動方式


              ① 網(wǎng)絡啟動。


              主要用于調(diào)試,通常需要安裝nfs和tftp服務,用于掛載根文件系統(tǒng),內(nèi)核鏡像

          u-boot.bin等內(nèi)容,因為是掛載,硬件重新上電,一般并不會保存掛載的內(nèi)容。


              ② 磁盤啟動。


              這種方式主要是用在臺式機和服務器上的,這些計算機都使用BIOS引導,并且使用磁盤作為存儲介質,這里面兩個重要的用來啟動linux的有LILO和GRUB。


              ③ Flash啟動。


              將uboot、內(nèi)核鏡像及應用程序等組成的程序文件下載到Flash中,上電自動引導。


              3)Bootloader的兩種操作模式

                  

              ① 啟動加載模式,也稱為自主模式。


              Bootloader從目標機上的某個固態(tài)存儲設備上將操作系統(tǒng)加載到RAM中運行,整個過程沒有用戶介入。


              ② 下載模式。


              目標機上的Bootloader通過串口/網(wǎng)絡等方式從主機下載/掛載到目標機(如uImage/u-boot.bin/根文件系統(tǒng))。

              從目標機下載的文件,Bootloader會將其先放在目標機的RAM中,然后在放在目標機的Flash等固態(tài)存儲設備中。

            

              4)uboot的目錄結構

              


              ① board文件夾。


              board文件夾中存放開發(fā)板相關的配置文件,每一個開發(fā)板都以子文件夾的形式出現(xiàn)。



              此文件夾下的每個文件里面都找到一個腳本文件u-boot.lds,此文件中內(nèi)容描述了對應型號uboot代碼的入口點、各段代碼存放位置(數(shù)據(jù)段、代碼段、bss段)以及對齊方式等內(nèi)容,感興趣的小伙伴可以看看。


              ② commom文件夾。


              它存放的是u-boot行下支持的命令,每一個命令對應一個文件。


              ③ cpu文件夾。


              此文件夾中存放特定cpu架構相關的目錄,每一款cpu架構都對應了一個子目錄。


              ④ doc文件夾。


              doc是文檔目錄,有u-boot非常完善的文檔。


               drivers文件夾。


              此文件夾下存放的是u-boot支持的各種設備的驅動程序。


               fs文件夾。



              它用于存放支持的文件系統(tǒng)的源碼,其中最常用的是JFFS2文件系統(tǒng)。


               include文件夾。


              它存放u-boot使用的頭文件,還有各種硬件平臺支持的匯編文件,系統(tǒng)配置文件和文件系統(tǒng)支持的文件。


              net文件夾。


              它存放的是與網(wǎng)絡協(xié)議相關的代碼,bootp協(xié)議、TFTP協(xié)議、NFS文件系統(tǒng)得實現(xiàn)。


              tooles文件夾。


              它存放的是生成u-boot相關工具。

             

              ⑩ u-boot.bin與u-boot.spec及u-boot.map。



              前兩個是生產(chǎn)的uboot的程序文件,常用的是u-boot.bin文件。


              u-boot.map可以查看uboot編譯存儲的信息,遇到問題時可以去這里看看。

               

          3 uboot 的編譯與調(diào)試



              1)uboot的編譯

              

              uboot的編譯不管什么方式一般都是落實到Makefile上。


              ① 用現(xiàn)有的IDE編譯。

             

              Linux開發(fā)的編譯一般都支持局部編譯,比如你可以單獨編譯內(nèi)核,你可以單獨編譯uboot,你也可以將程序進行全部編譯。


              為了節(jié)省時間,在調(diào)試時,局部編譯,并將代碼下載到硬件中去測試是比較不錯的選擇。


              ② 直接編譯uboot。


              即用make命令對uboot進行編譯,此時涉及到一個問題,編譯環(huán)境變量存在交叉編譯等條件的限制。此時有兩種編譯方式:


              要么編寫腳本利用現(xiàn)有IDE的環(huán)境變量,將變量路徑填入腳本,進入uboot去編譯。

              要么自己搭建編譯環(huán)境,設置好環(huán)境變量。


              2)uboot的調(diào)試

              

              ① 利用printf打印調(diào)試信息。


              標準的uboot中printf已經(jīng)用puts等函數(shù)重寫了可以直接用于調(diào)試。


              ② 開啟DEBUG宏。


              uboot啟動時的打印可以開啟DEBUG宏,DEBUG位于include/common.h中。


              ③ 利用help命令。



              進入uboot后,輸入help命令即可列出uboot支持的命令,可以嘗試下如何使用。


               添加自己的uboot命令。



              可以通過help命令查出uboot已有的命令,然后進入到uboot源碼下用grep命令查看一下此命令的功能實現(xiàn),仿照此實現(xiàn)實現(xiàn)自己的功能函數(shù),添加打印提示,命令觸發(fā)等內(nèi)容即可。


              今天就到這吧,希望對小伙伴有所幫助哈,喜歡的話歡迎轉發(fā)、點贊、分享、在看、轉載哈,


          相關推薦


          推薦一款Linux下好用的截圖工具shutter——shutter的安裝、配置與使用


          Linux中消息隊列的使用


          Linux下的共享內(nèi)存編程


          專輯分享


          Linux專輯


          C語言專輯


          軟實力專輯


          軟件推薦專輯


              歡迎關注我的公眾號,一起擼代碼,玩技術!
          瀏覽 152
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  艹逼网止| 靠逼网站在线观看 | 天天操天天撸 | 色欲国产精品毛片大全 | 艹逼视频免费观看 |