uboot的移植分析3

2021-08-04 16:30:57 字數 1604 閱讀 7808

從零開始的uboot的系統移植3

接上節的uboot的系統移植的2開始說明:

繼續makefile的分析

1、如何移植uboot,就是懂他的規則和含義就可以了,環境變數也要弄懂;

arch   和 cross_compile環境變數:

1.1、接下來匯出了兩個很重要的環境變數

乙個是arch:上面匯出的,植來自於我們的配置過程,他的植會影響後面cross_compile環境變數

arch:  定義我們當前編譯的目標cpu的架構:

arm     這裡主要用arm的架構

cross_compile是被arch所確定的,那麼我們只能在arm的分支去設定cross_compile值

不一定非得全部路徑,相對路徑也是可以的。

如果已經將工具鏈匯出到環境變數,並且已經設定了符號鏈結,這樣他就可以直接用

arm-linux- 就可以直接找到。

是我們定義交叉工具鏈的字首:

就是方便我們移植時,不用把所有的都修改:

用字首加上我們的字尾,來定義編譯過程中用到的各種交叉工具鏈。

ps: 我們把字首和字尾分開還有乙個原因:在不同的cpu架構上的交叉編譯工具鏈,

只是字首不一樣,

字尾都是一樣的。(136-182行makefile來確定)(確定的方法就是根據條件編譯)

我們實際執行時:我們可以在makefile中更改設定cross_compile的植,也可以在編譯

時用 make cross_compile=***x  來覆蓋傳參的植。

2、#include $(toptree)/config.mk

在這裡新增乙個makefile主makefile185行

這個檔案主要是定義了編譯工具的使用,

我們已經定義了字首,字尾就像上圖所示的直接加上字首的結尾寫上。

我們還有配置生成的autoconfig.mk,裡面全部都是config_***   = y

這裡面就包含了開發板的配置專案。

autoconfig.mk不是原始碼提供的,是配置過程自動生成的,(後面的.h所生成)

這個檔案的作用就是用來指導整個uboot的編譯過程(跟核心的編譯有一點像)這個檔案的內容

其實就是很多config_***開頭的巨集定義。其實就是配置過程中的變數。這些巨集或者說變數

會影響uboot的編譯過程的走向,原理就是條件編譯;y就是編譯,n就是不編譯,m就是模組編譯

同乙個**包含了各種不同開發板的適用**,用條件編譯進行區別。

配置過程也是需要原材料產生的,include/configs/***.h標頭檔案。在x210位include/configs/x210_sd.h

這個標頭檔案裡面全部都是巨集定義,就是我們對自己開發板的移植過程。每乙個開發板都對應

每乙個.h檔案,可能有一些是自己原廠生產的,就需要拿大眾的進行修改,這個標頭檔案裡面

每乙個巨集定義都十分重要。這些配置的巨集定義就是這裡的標頭檔案。

UBOOT的移植分析2

uboot的移植分析2 a uboot的編譯方式2 1 原地編譯 編譯複雜專案 makefile提供2種編譯管理的方法,預設情況下編譯出來的資料夾 的.c和.o檔案是存放在這些目錄裡面的,就是預設情況下編譯出來的情況,但是我們 有些時候並不希望生成的.o檔案把整個資料夾汙染了 壞處 1 汙染了原始檔...

U Boot移植日誌(3) 新增命令

u boot在定義指令時按模組化設計,指令的結構設計在 common command.c中定義,而各條指令的相關函式在單獨的檔案中 common cmd commandname.c,其中commandname為各指令名。要新增自己的指令可以按以下步驟 1 建立一函式do mycommandname,...

uboot移植 uboot啟動回顧

一 uboot啟動的第一階段start.s 路徑uboot cpu s5pc11x start.s 1 include 標頭檔案包含,config.件原始碼中不存 在,配置後自動生成 路徑 include linux config.h 2 include 標頭檔案包含,version.件原始碼中不存...