u-boot配置/编译过程

1. u-boot配置过程

make xxx.config

   MKCONFIG    := $(SRCTREE)/mkconfig
   export MKCONFIG

-----》》执行mkconfig

    1).确定开发板名称BOARD_NAME .

      CONFIG_NAME="${1%_config}"
      [ "${BOARD_NAME}" ] || BOARD_NAME="${1%_config}"

    2).创建到平台/开发板相关的头文件的链接

      ln -s ${LNPREFIX}arch-${soc} asm/arch

        ln -s ${LNPREFIX}proc-armv asm/proc

    3).创建顶层Makefile包含的文件include/config.mk

          [ "${vendor}" ] && echo "VENDOR = ${vendor}"
          [ "${soc}"    ] && echo "SOC    = ${soc}"
           exit 0 ) > config.mk

    4).创建开发板板相关的头文件include/config.h

           > config.h        # Create new config file

2.u-boot编译、连接过程

  1).包含了配置过程中制作出来的config.mk文件,其中定义了ARCH,CPU,BOARD,SOC...

    # load ARCH, BOARD, and CPU configuration
    include $(obj)include/config.mk//作出来的config.mk
    export    ARCH CPU BOARD VENDOR SOC DDR3LIB DDRTYPE   

      # load other configuration
      include $(TOPDIR)/config.mk //包含顶层的config.mk 确定了编译器.编译选项 BOARDDIR LDFLAGS

      config.mk中定义了TEXT_BASE (uboot开始位置)  

    把所有的OBJS 。LIBS所表示的.o,.a文件生成

  # U-Boot objects....order is important (i.e. start must be first)
    OBJS  = $(CPUDIR)/start.o

    .......

    LIBS-y += lib/libgeneric.o
    LIBS-y += lib/lzma/liblzma.o
    LIBS-y += lib/lzo/liblzo.o
    LIBS-y += lib/zlib/libz.o

    

    得到ELF格式的u-boot ,最后转换为二进制格式U-BOOT.bin   LDFLAGS确定连接方式

    UNDEF_LST=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
        sed  -n -e ‘s/.*\($(SYM_PREFIX)_u_boot_list_.*\)/-u\1/p‘|sort|uniq`;\
        cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \
            $$UNDEF_LST $(__OBJS) \
            --start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
            -Map u-boot.map -o u-boot

  在u-boot.lds 代码中 (指定各种段)

  SECTIONS
{
 . = 0x00000000;
 . = ALIGN(4);
 .text :
 {
  __image_copy_start = .;
  arch/arm/cpu/armv7/start.o (.text*)////start.S为uboot入口
  *(.text*)
 }
 . = ALIGN(4);

3.总结uboot 编译流程:

          (1)首先编译start.S

          (2)对于平台/开发板相关的每个目录,通用目录都使用它们各自的Makefile生成相应的库 .a .o

          (3)将生成的.a .o ,文件按照comfig.mk文件中指定的代码段起始地址. u-boot.lds连接脚本进行连接

          (4)上一步,得到ELF格式UBOOT,Makefie会把其转换为二进制格式

时间: 2024-08-02 02:52:37

u-boot配置/编译过程的相关文章

Nginx 下载和配置编译过程

一 . Nginx是用C编写的程序,因此您首先需要在系统上安装一个编译器工具,如GNU编译器集合(GCC)二. 安装nginx 1.http://nginx.org/en/download.html 选择 nginx-1.16.0 pgp 复制链接 2.wget http://nginx.org/download/nginx-1.16.0.tar.gz 3.tar -zxvf nginx-1.16.0.tar.gz 4.mv nginx-1.16.0 /usr/local/src 5.yum i

Android源码编译过程

http://my.oschina.net/zhoulc/blog/170698 http://jingyan.baidu.com/article/c85b7a641200e0003bac95a3.html 注意: 1,不要使用64位ubuntu 2,务必分配4g或者以上的swap空间 系统定制基本流程:获取源码 --> 修改源码(包括修改和裁剪)--> 编译修改后的源码 --> 得到目标系统文件 --> 移植系统 --> 测试成功 --> 完成 一,源码下载 谷歌搜索

Ubuntu 14.04 64位机上不带CUDA支持的Caffe配置编译操作过程

Caffe是一个高效的深度学习框架.它既可以在CPU上执行也可以在GPU上执行. 下面介绍在Ubuntu上不带CUDA的Caffe配置编译过程: 1.      安装BLAS:$ sudo apt-get install libatlas-base-dev 2.      安装依赖项:$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-devlibopencv-dev libboost-all-dev libhdf5-s

u-boot的启动、编译过程和命令添加

MCU:s5pv210 开发板:unsp210 u-boot:1.3.4 一.简介 U-Boot是一种支持多架构,多操作系统的Bootloader(启动引导程序) u-boot目前最新版本是:http://ftp.denx.de/pub/u-boot/ 二.启动过程 嵌入式Bootloader的启动过程可以分为单阶段(Single-Stage)和多阶段(Multi-Stage) 通常多阶段的Bootloader能够提供更复杂的功能,及更好的可读性和移植性. 从外部存储设备上启动的Bootload

2.4、uboot配置和编译过程详解

2.4.1.uboot主Makefile分析1 2.4.1.1.uboot version分析 (1)uboot版本号分为3个级别: VERSION:主版本号 PATCHLEVEL:次版本号 SUBLEVEL:再次版本号 EXTRAVERSION:另外附加的版本信息 这四个用.隔开共同构成了最终的版本号. (2)Makefile中版本号最终生成了一个变量U_BOOT_VERSION,这个变量记录了Makefile中配置的版本号 (3)include/version_autogenerated.h

linux内核的配置机制及其编译过程

linux内核的配置机制及其编译过程 国嵌第一天第三节:讲解的是内核在X86平台上的配置.安装过程,制作自己的Linux系统,并双系统启动. <Linux系统移植>第四章 http://blog.csdn.net/zhengmeifu/article/details/7682373 Linux内核具有可定制的特点,具体步骤如下: 1.1.1 配置系统的基本结构 Linux内核的配置系统由三个部分组成,分别是: 1.Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义 Lin

uboot主Makefile分析(t配置和编译过程详解)

1.编译uboot前需要三次make make distcleanmake x210_sd_configmake -j4 make distclean为清楚dist文件. make x210_sd_config  跳转执行mkconfig用来配置并生成config.mk(board/samsung/x210目录下为指定链接地址的与主uboot目录的config.mk不同) autuconfig.mk 2.框图 3.uboot主Makefile分析 3.1.uboot version确定(Make

uboot配置和编译过程详解【转】

本文转载自:http://blog.csdn.net/czg13548930186/article/details/53434566 uboot主Makefile分析1 1.uboot version确定(Makefile的24-29行) Makefile代码部分: [plain] view plain copy VERSION = 1 PATCHLEVEL = 30 SUBLEVEL = 4 EXTRAVERSION = U_BOOT_VERSION = $(VERSION).$(PATCHL

u-boot配置和编译过程详解

备注:分析的是OK210开发板自带的uboot_smdkv210,可能有些部分和其他版本不太一样,但是原理都类似. 编译u-boot的步骤 make forlinx_linux_config make 首先生成配置文件,然后编译源码,依次看看这些命令都干了些什么事情 配置过程 #forlinx add forlinx_linux_config : unconfig @$(MKCONFIG) $(@:_config=) arm s5pc11x smdkc110 samsung s5pc110 li