系统运行步骤

15 篇文章 0 订阅
12 篇文章 0 订阅

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 $< $@


启动过程





















0x80000000

 




DRAM

 








0x0

 





BL1: 中断和SVC stack

BL2: 时钟和内存初始化



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_27205523

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值