uboot:README文件
目录结构:
平台相关:arch board
平台无关:common doc driver fs tools
配置和编译:
配置:make xxx_config xxx是开发板的名字
比如: make origen_config
顶层目录Makefile
MKCONFIG := $(SRCTREE)/mkconfig
%_config:: unconfig
@$(MKCONFIG) -A $(@:_config=) ===> mkconfig -A origen
$1 $2
分析 mkconfig文件:
line=`egrep -i "^[[:space:]]*${2}[[:space:]]" boards.cfg`
line = origen arm armv7 origen samsung exynos
set ${line} ====> origen arm armv7 origen samsung exynos
$1 $2 $3 $4 $5 $6
arch=arm
cpu=armv7
board=origen
vendor=samsung
soc=exynos
113 cd ./include
114 rm -f asm
115 ln -s ../arch/${arch}/include/asm asm
rm -f asm/arch
ln -s ${LNPREFIX}arch-${soc} asm/arch
if [ "${arch}" = "arm" ] ; then
rm -f asm/proc
ln -s ${LNPREFIX}proc-armv asm/proc
fi
ARCH= arm
CPU=armv7
SOC=exynos
BOARD=origen
VENDOR=samsung > config.mk 在inclue中创建一个config.mk的文件
BOARDDIR=${vendor}/${board} ====> BOARDDIR=samsung/origen
> config.h 创建一个config.h的文件
echo "#define CONFIG_SYS_ARCH \"${arch}\"" >> config.h
echo "#define CONFIG_SYS_CPU \"${cpu}\"" >> config.h
echo "#define CONFIG_SYS_BOARD \"${board}\"" >> config.h
[ "${vendor}" ] && echo "#define CONFIG_SYS_VENDOR \"${vendor}\"" >> config.h
[ "${soc}" ] && echo "#define CONFIG_SYS_SOC \"${soc}\"" >> config.h
cat << EOF >> config.h
#define CONFIG_BOARDDIR board/$BOARDDIR
#include <config_cmd_defaults.h>
#include <config_defaults.h>
#include <configs/${CONFIG_NAME}.h>
#include <asm/config.h>
#include <config_fallbacks.h>
#include <config_uncmd_spl.h>
总结: mkfconfig功能, 在include 目录中创建两个文件config.h config.mk
编译:
180 include $(obj)include/config.mk
181 export ARCH CPU BOARD VENDOR SOC 到处为全局变量
ALL-y += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map
all: $(ALL-y) $(SUBDIR_EXAMPLES)
SUBDIR_TOOLS = tools
OBJS = $(CPUDIR)/start.o ===> arch/arm/cpu/armv7/start.o
LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).o ===> board/samsung/origen/liborigen.o
LIBBOARD := $(addprefix $(obj),$(LIBBOARD)) 添加前缀
LIBS := $(addprefix $(obj),$(sort $(LIBS-y))) 依赖的各类源文件
$(obj)u-boot.lds 依赖的链接脚本
$(obj)u-boot: depend \
$(SUBDIR_TOOLS) $(OBJS) $(LIBBOARD) $(LIBS) $(LDSCRIPT) $(obj)u-boot.lds
$(GEN_UBOOT)
$(obj)u-boot.bin: $(obj)u-boot
$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
启动过程
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||||||||||||
|
|
|
| ||||||||||
| |||||||||||||
|
|
|
| ||||||||||
| |||||||||||||
|
|
| |||||||||||
| |||||||||||||
|
|
|
| ||||||||||
| |||||||||||||
| |||||||||||||
| |||||||||||||
|
|
|