U-Boot顶层Makefile结合生成结果分析(imx6ull)

本文详细讲述了如何使用make编译U-Boot,包括生成u-boot.bin和u-boot-nodtb.bin的过程,以及Makefile的调用机制。通过追踪Makefile,揭示了u-boot.bin的生成依赖于u-boot-nodtb.bin的复制,并指出修改U-Boot内容需从.o文件入手。
摘要由CSDN通过智能技术生成

说明

全篇以提出问题和解决问题的方式进行分析,自顶向下。

一、编译uboot

1.使用make编译uboot

make V=1 	//打印编译的命令具体信息,对于分析问题非常重要

2.分析结果

  最后会生成很多 u-boot.* 的文件,内容见下面:
在这里插入图片描述
说明:
  1. u-boot.bin是机器可执行文件(二进制文件);
  2. u-boot.imx是u-boot.bin加上imx6ull的头部文件(二进制文件);
  3. u-boot.map是内存映射文件;
  4. u-boot.cfg是配置相关文件;
  5. u-boot.lds是链接文件;

  其中.bin文件是在MCU中最终的文件,也是imx6ull芯片的uboot最终文件。

二、问题的提出和解决

1.u-boot.bin如何生成?

  打开uboot源码文件(基于正点原子提供的NXP官方U-Boot源码),在源码文件夹下找到Makefile,并打开:
在这里插入图片描述
  找到第一个目标为 _all:
在这里插入图片描述
   _all 依赖于 all,接着找以 all 为目标的依赖(后面的同理继续):
在这里插入图片描述
在这里插入图片描述
   找到当前位置出现 u-boot.bin (继续找):
在这里插入图片描述
   打开第一步编译的详细信息终端,确定u-boot.bin的依赖和生成命令:
在这里插入图片描述
   这一条信息表明u-boot.bin由u-boot-nodtb.bin复制而来

2.u-boot-nodtb.bin如何生成?

在这里插入图片描述
   u-boot由各种.o文件通过链接到地址0x878000000而成:
在这里插入图片描述
   上面的命令中所包含的.o文件和.o文件所在的目录表明,u-boot的生成和这些东西直接相关,如果要修改u-boot的内容应该从这些文件进行入手。

三、关于Makefile调用Makefile.build

   在文件Kbuild.include中可以找到一个变量build:
在这里插入图片描述

   在这个变量中包含了Makefile.build这个文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值