系统运行步骤
2016-07-20 13:03
295 查看
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 $< $@
启动过程
目录结构:
平台相关: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 $< $@
启动过程
| |||||||||||||
| |||||||||||||
| |||||||||||||
|
相关文章推荐
- Codeforces-Round-#363-Fix-a-Tree
- java基于TCP的socket数据包拆分方法
- NYOJ_123_士兵杀敌(四)插线问点
- Qualcomm平台camera调试移植入门
- Qualcomm平台camera调试移植入门
- Python读取写入TXT正确姿势
- 报到!初开博客
- redis数据类型Set的常用命令
- uboot的启动流程
- maven打包排除指定文件(jar包)
- HDU1394 Minimum Inversion Number(线段树)
- 第五部分:UI基本布局 & 引入布局(LinearLayout、RelativeLayout、FrameLayout、TableLayout)
- linux内核的编译过程
- Python基础之 urllib模块urlopen()与urlretrieve()的使用方法详解。
- 服装消费3.0时代的试验者: Pretty Yes 通过穿搭问答解决中产女性的时尚衣着问题
- 机器学习 刀光剑影 之屠龙刀_腾讯大数据
- 内核的调试方法
- HTML5基础学习笔记(十三)
- 基于hibernate的HibernateCallback分页技术
- iOS中tableview 两级cell的展开与收回(一)