u-boot中的代码可裁剪

目录

 

u-boot中的代码可裁剪

核心思路

1.源代码和函数申明处添加上宏定义

2.配置宏定义

添加编译条件

直接在xxx_defconfig手动添加

通过make menuconfig添加

 

3.测试


u-boot中的代码可裁剪

u-boot支持的功能很多,代码量也是很庞大,有的应用场景因为内存资源的限制,需要对其进行必要的裁剪。

本文将介绍一下,uboot中代码实现可裁剪性的方法。

核心思路

利用条件编译,通过改变条件来改变是否将目标代码编译进u-boot。

目标

将我们自己实现的一个命令,加上条件编译,然后可以通过make menuconfig进行配置。

自己添加u-boot命令,可以参考笔者上一篇博客“u-boot中添加自己的命令”,这里不再赘述。

1.源代码和函数申明处添加上宏定义

在需要裁减的部分添加上条件编译选项,格式如下

#ifdef CONFIG_XXX

代码段

#endif

意为,当CONFIG_XXX被定义的时候,代码段被编译。

注意:使用到CONFIG_XXX的代码,需要包含头文件#include <common.h>,这个头文件最后会包含CONFIG_XXX的文件。

2.配置宏定义

代码中加入了条件编译,那么就可以使用CONFIG_XXX来控制目标代码是否编译了。

实现这个功能,需要做两件事情。

第一:添加编译条件,在配置文件中,添加或者删除你的条件编译的条件

第二:修改Makefile,修改目标代码中的Makefile,以实现条件编译

添加编译条件

两种方法

  • 直接在xxx_defconfig手动添加
  • 通过make menuconfig添加

直接在xxx_defconfig手动添加

在编译u-boot的时候,会使用make xxx_defconfig,所以可以在这个文件中加入你的条件编译的条件。

通过make menuconfig添加

上述方式较为简单粗暴,在配置项少的情况下可以使用,但是配置项目多的话,层次就比较模糊,显得比较混乱。这里u-boot提供一种图形化配置的方式,make menuconfig,来管理众多的配置选项。

 

修改Makefile

修改目标代码所在层级的Makefile文件,如下图。

修改目标代码所在层级的Kconfig文件,如下图。

汇总

流程概述

  1. 首先代码中需要CONFIG_MY_TEST宏被定义了才会被编译连接
  2. 为了方便配置,使用make menuconfig进行管理,这个操作依赖于相应目录下的Kconfig文件。
  3. 在Kconfig文件里面添加自己的配置项

3.测试

在make menuconfig中配置,保存并退出,然后编译。

 

对比加入和不加入目标代码生成的u-boot.bin文件,可以看到最终的u-boot.bin大小发生了变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值