uboot 2017 01初次編譯

2021-10-05 14:06:02 字數 2867 閱讀 2431

首先配置makefile 中的交叉編譯工具

ch),$(arch))

#cross_compile ?= 這裡加#進行注釋掉

endif

// 新增後面兩句

arch = arm

cross_compile = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-

首先需要配置, 配置檔案看

/configs 檔案, 找到相同的晶元或者類似的(同一廠家, 系列的)

make ***_defconfig

接著 make -j4

報錯 lib/asm-offsets.c:1:0: error: bad value (armv5) for -march= switch

也是因為交叉編譯工具沒有配置好, 所以才會導致的,

編譯完成之後, 生成uboot.bin 將其進行燒錄, 然後看現象查詢問題.

output_format("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")

output_arch(arm)

entry(_start) // 這個就是程式的入口

sections

. = align(4);

.rodata :

. = align(4);

.data :

經過搜尋, 發現程式的入口在

arch/arm/lib/vector.s檔案中

這個和以前接觸的其他版本的uboot不一樣, 以前的uboot入口是在start.s, 這個版本是在vector.s中,

因此需要注意,

因為需要編譯後的在u-boot.bin中新增

16位元組的頭, 因此

只需要在_start: 一開始處新增空的16位元組即可

_start:

.word 0x2000

.word 0x0

.word 0x0

.word 0x0

#ifdef config_sys_dv_nor_boot_cfg

.word config_sys_dv_nor_boot_cfg

#endif

當編譯的時候 ,出現

syntax error

這個是使用了// 進行注釋, 解決的方式就是/* 還有 */ 進行注釋,

還有 在新增config_***的時候報出

error: you must add new config options using kconfig

the following new ad-hoc config options were detected:

config_arm920t

config_mini2440

config_nand_s3c2440

config_rtc_s3c24x0

config_s3c2440

config_s3c24x0

config_s3c24x0_serial

config_sys_hush_parser

config_sys_s3c2440_nand_hwecc

config_zero_bootdelay_check

please add these via kconfig instead. find a suitable kconfig

file and add a 『config』 or 『menuconfig』 option.

解決的方式就是在makefile 中注釋掉

#	$(srctree)/scripts/check-config.sh u-boot.cfg \

# $(srctree)/scripts/config_whitelist.txt $ 1>&2

_text_phy_base 只是在老的版本中的

start.s中定義的

_text_phy_base:

.word cfg_phy_uboot_base 根據追蹤, 即可看到_text_phy_base: 真實的資料. 這個好像就是實體地址

_text_base 在老的版本中是在makefile 中進行設定的虛擬位址

在uboot.2013.10版本中

.globl _text_base

_text_base:

.word config_sys_text_base // 對應的實體地址

在uboot 版本中, 也許是自己沒有分析對, 因此, 這裡沒有找到

_text_base 中的定義,

但是在***.h 會包含

/* text base */

#define config_sys_text_base 0x34800000 對應的實體地址

因此咱們可以自己模仿2013.10版本中,定義這個_text_base變數,將其放在

start.s中即可

.globl _text_base

_text_base:

.word config_sys_text_base

我們在清bss段的時候,需要兩個變數,

咱們可以這麼進行定義

.globl _bss_start

_bss_start:

.word __bss_start

.globl _bss_end

_bss_end:

.word _end

編譯報錯:

error: internal_relocation (type: offset_imm) not fixed up

應該是包含了錯誤的變數資訊

Uboot 2017 01 啟動流程分析

2017.01 uboot包含兩個階段的啟動,乙個是spl啟動,乙個是正常的啟動我們稱為第二階段uboot。當然,我們也可以選擇使用spl和不使用。在編譯的過程中,是先編譯第二階段uboot,然後在編譯spl的。這兩個階段的編譯時分離的。擁有不同的配置,所以許多地方的巨集是和spl的不一樣。而且鏈結...

01 uboot2017 01啟動過程概述

u boot2017.01啟動過程分析pdf u boot2017.01原始碼分析及啟動命令解析 啟動過程6部分內容如下 01 u boot2017.01 啟動過程概述 02 u boot2017.01 spl階段分析 03 u boot2017.01 u boot階段分析 04 u boot201...

u boot編譯分析

在頂層目錄下執行完 make smdk2410 config 命令後,就把u boot給配置好了,接著就可以在執行 make all 或者 make 命令去編譯u boot了,完成後就可以燒寫到開發板去執行了。在makefile中的all目標是第乙個目標,因為makefile將第乙個目標設為預設目標...