1. 程式人生 > 其它 >UBoot的編譯與燒寫

UBoot的編譯與燒寫

每當我們學習任何編譯語言之前,第一節課都是介紹我們要學習的是什麼,以及編譯語言和工具,最後寫一個小程式編譯並執行就算入門,也就是所謂的“Hello, world!”。這裡也不例外,帶想學習UBoot的小夥伴學習UBoot的編譯和燒寫(主要是記錄一下個人學習的過程),也就是UBoot的“Hello, world!”。
首先我們要弄明白是什麼是U-Boot,注意我們常說的UBoot就是U-boot。

一、準備材料

可以根據自己的需要準備相應材料,以下是我自己使用的:
開發環境:VMware
作業系統:ubuntu
開發版:湃兔i2S-6UB
燒寫工具:SD卡

二、環境配置

學習ARM架構的移植和應用開發主要用到的工具是交叉編譯工具,所以需要在ubuntu安裝配置交叉編譯鏈工具。
交叉編譯器的安裝配置

https://www.cnblogs.com/jzcn/p/14889438.html
注意:安裝交叉編譯器時需要注意版本號,有的開發版會提供自己更改的交叉編譯器,我使用的版本號是6.2的,如下圖所示:

三、下載UBoot檔案

這裡主要是下載開發版對應的UBoot檔案,每個開發版都有對應的下載地址,一般都會在相應的學習資料裡,如果沒有的小夥伴可以找相應的店家。
這裡是湃兔的下載地址http://i2som-zh.oss-cn-beijing.aliyuncs.com/i2SOM-iMX-uboot-904f545.tar.gz
下載完成後將檔案拷貝到linux系統下進行解壓,解壓後會的目錄如下圖所示:

注意:編譯時一定要在當前路徑下才能編譯

四、編譯UBoot

1.清理專案工程

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean

2.設定UBoot的預設配置檔案

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- i2som_imx6ull_14x14_emmc_defconfig

編譯完成後會生成“.config”,如下圖所示:

注意:湃兔的預設配置檔案是“i2som_imx6ull_14x14_emmc_defconfig”,不同廠商的預設配置檔案有所不同,可與根據相應的資料檢視。如湃兔官網的說明,如下圖所示

3.編譯UBoot專案工程

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8

編譯完成後會生成u-boot.imx檔案,如下圖所示:

注意:到這裡UBoot的編譯就算完成了,如果細心的小夥伴就會發現,為啥我的命令會長一些。每個指令中都用“ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-”,這是設定編譯器為交叉編譯器。
以後在做UBoot移植時會經常用到這些編譯指令。為了使編譯指令簡介一些,可以在Makefile檔案中新增ARCH和CROSS_COMPILE的配置,以後就可以編譯時就可以省掉命令中的“ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-”部分,如下圖所示:

四、燒寫UBoot

將編譯好的u-boot.imx拷貝到SD卡中,SD卡的格式是VFAT格式,不然開發版會識別不了。拷貝完成後將SD卡插入開發版,然後進入UBoot執行更新命令。
湃兔通過SD卡更新UBoot命令

update uboot mmc 0 1 u-boot.imx

更新過程如下圖所示:

更新完成後,可以通過啟動時的第一行日誌的編譯時間觀察是燒寫成功,如下圖所示:

到這裡“Hello, world!”也算是完成,有興趣的小夥伴可以進行UBoot的移植學習了。
注意:每個廠商的燒寫過程可能不一樣,使用不同開發版的小夥伴可以去相應的學習資料中查詢自己的燒寫過程。

五、參考資料

湃兔資料:https://wiki.i2som.com/pages/viewpage.action?pageId=65576
原子哥的視屏教程:https://www.bilibili.com/video/BV12E411h71h?p=4&share_source=copy_web