從零開始之uboot、移植uboot2017.01(一、移植前的准備)


 

手邊的是一個S5PV210的開發板,想嘗試移植一個比較新的uboot

 

下載最新版本uboot2018.

ftp://ftp.denx.de/pub/u-boot/

編譯器下載

http://www.veryarm.com/arm-none-linux-gnueabi-gcc

 

交叉編譯工具鏈的安裝

在/usr/local/下面創建一個arm的文件夾,把交叉編譯工具解壓到下面去。

2.為了方便今后使用,把該路徑導入到環境變量中。

把上面路徑添加到run的家目錄下的.bashrc文件的最后面

vi ~/.bashrc export PATH=$PATH:/usr/local/arm/gcc-arm-none-eabi-5_4-2016q3/bin

3.嘗試編譯

3.1.失敗,編譯器和uboot版本不匹配

本想移植比較新的uboot2018.05,結果編譯器不支持,新版本的uboot要gcc6以上才可以,很尷尬。

3.2.退而求其次,移植一個2017年的吧。

下載一個2017年1月版本的uboot

解壓好uboot,添加好架構和交叉編譯工具鏈

 

 

3.3.出現dtc錯誤

Your dtc is too old, please upgrade to dtc 1.4 or newer

安裝設備樹編譯鏈

 apt-get install device-tree-compiler

3.4.采用四核,靜默編譯。一次通過,說明起碼編譯器沒問題,才能考慮接下來的移植。

 

4.清理一下前面的編譯

make distclen

5.因為uboot沒有為S5PV210適配相應的單板,所以我們要自己找一個相似的移植。

 

其中有兩塊開發板比較相似,smdkc100和goni,因為smdkc100部分寄存器的基地址和s5pv210的不一樣,移植更麻煩一下些,所以我們從goni上開始移植。

拷貝

(1)這里拷貝一份s5p_goni_defconfig的配置文件

 

cp configs/s5p_goni_defconfig configs/smdkv210_defconfig


將CONFIG_TARGET_S5P_GONI=y 修改為 CONFIG_TARGET_SMDKV210這個值會指明編譯的是哪個開發板

修改前:

CONFIG_ARM=y
CONFIG_ARCH_S5PC1XX=y
CONFIG_TARGET_S5P_GONI=y
CONFIG_DEFAULT_DEVICE_TREE="s5pc1xx-goni"
CONFIG_SYS_CONSOLE_IS_IN_ENV=y
CONFIG_HUSH_PARSER=y
CONFIG_SYS_PROMPT="Goni # "

修改后:

CONFIG_ARM=y
CONFIG_ARCH_S5PC1XX=y
CONFIG_TARGET_SMDKV210=y
CONFIG_DEFAULT_DEVICE_TREE="s5pc1xx-goni"
CONFIG_SYS_CONSOLE_IS_IN_ENV=y
CONFIG_HUSH_PARSER=y
CONFIG_SYS_PROMPT="Goni # "

2.拷貝一份配置頭文件

cp include/configs/s5p_goni.h include/configs/smdkv210.h

3.拷貝一份單板相關的備份,將來我們在這里修改

cp board/samsung/goni/ board/samsung/smdkv210 -arf


修改smdkv210目錄下面的Kconfig文件


if TARGET_SMDKV210
 
config SYS_BOARD
        default "smdkv210"    
 
config SYS_VENDOR
        default "samsung"
 
config SYS_SOC
        default "s5pc1xx"
 
config SYS_CONFIG_NAME
        default "smdkv210"
 
endif

SYS_BOARD代表board/目錄下的板子類型 (對應第一步)
SYS_VENDOR代表baord/(代表 board/samsung/smdkv210文件夾)
SYS_SOC代表SOC類型(因為這里沒有我們的s5pv210,只能維持s5pc1xx)
SYS_CONFIG_NAME代表include/configs/目錄下的頭文件 (對應第二步)

4. 配置文件添加

因為我們的SOC是固定的s5pc1xx,所以到這個目錄向下增加我們的smdkv210單板配置


cd arch/arm/mach-s5pc1xx
vi Kconfig

if ARCH_S5PC1XX
 
choice
        prompt "S5PC1XX board select"
        optional
 
config TARGET_S5P_GONI
        bool "S5P Goni board"
        select OF_CONTROL
 
config TARGET_SMDKV210
        bool "SMDKV210 board"
        select OF_CONTROL
 
 
config TARGET_SMDKC100
        bool "Support smdkc100 board"
        select OF_CONTROL
 
endchoice
 
config SYS_SOC
        default "s5pc1xx"
 
source "board/samsung/smdkv210/Kconfig"
source "board/samsung/goni/Kconfig"
source "board/samsung/smdkc100/Kconfig"
 
endif

拷貝一份GONI的config文件,改成我們的TARGET_SMDKV210(注意這里的名字和第一步的要一致)

拷貝一份source,改成我們的smdkv210的目錄。


基本配置完畢。

先清理掉之前的配置

make clean
make distclean
 
make smdkv210_defconfig
make

編譯通過,生成了對應的uboot.bin文件說我目前為止我們的修改都ok

run@hostname:~/work/u-boot-2017.01$ make clean
run@hostname:~/work/u-boot-2017.01$ make distclean
run@hostname:~/work/u-boot-2017.01$ make smdkv210_defconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  SHIPPED scripts/kconfig/zconf.tab.c
  SHIPPED scripts/kconfig/zconf.lex.c
  SHIPPED scripts/kconfig/zconf.hash.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
#
# configuration written to .config
#
run@hostname:~/work/u-boot-2017.01$ make -s -j4
arch/arm/dts/s5pc1xx-goni.dtb: Warning (unit_address_vs_reg): Node /memory has a reg or ranges property, but no unit name
arch/arm/dts/s5pc1xx-goni.dtb: Warning (unit_address_vs_reg): Node /pinctrl@e0200000/gph0 has a reg or ranges property, but no unit name
run@hostname:~/work/u-boot-2017.01$ ls
api        doc       lib          smdkv210.h       u-boot.cfg.configs
arch       drivers   Licenses     snapshot.commit  u-boot.dtb
board      dts       MAINTAINERS  System.map       u-boot-dtb.bin
cmd        examples  Makefile     test             u-boot.lds
common     fs        net          tools            u-boot.map
config.mk  include   post         u-boot           u-boot-nodtb.bin
configs    Kbuild    README       u-boot.bin       u-boot.srec
disk       Kconfig   scripts      u-boot.cfg       u-boot.sym
run@hostname:~/work/u-boot-2017.01$





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM