基于 CLI 的编译与下载

概述

本章介绍如何在 CLI 环境中编译 SDK,然后将固件下载到芯片中。

编译流程

配置及编译可以在任意目录下进行。 ameba.py build [args] 指令用于编译。用户可以参考 常用指令 一节了解该指令的使用方法。

编译步骤如下:

  1. 配置环境: source path/to/your/sdk/env.sh (在 Windows 系统中执行 env.bat

  2. 选择芯片型号: ameba.py soc

  3. 执行编译指令: ameba.py build,开始编译

  4. CMake 生成的中间文件将会被存放在 build_RTLxxx/build 文件夹

  5. 编译完成后,固件将被拷贝到当前目录下的 build_RTLxxx 目录下,其中 RTLxxx 为芯片型号

编译指令的更多用法请参考 编译指令

固件(Image)是编译的最终产物,用户需要将其下载到芯片中。

编译指令

ameba.py build 指令是通过封装底层脚本 tools/scripts/build.py 实现的,常用指令如下表所示:

功能

命令

描述

帮助

ameba.py build -h

列出支持的命令

编译

ameba.py build

增量编译工程

纯净编译

ameba.py build -p

移除所有产物并编译工程

指定示例

ameba.py build -a <APP>

编译名为 APP 的示例

指定目标

ameba.py build -g <target>

编译指定的 target

清理

ameba.py build -c

清理编译产物

调试

ameba.py build -debug

进入调试模式

帮助指令

如果您是第一次使用 build 指令,可以通过以下命令了解此指令的用法:

ameba.py build -h

通过 -h--help 选项,所有支持的命令将会被列出。

纯净编译

纯净编译意味着此次编译环境没有之前残留产物的影响,所有之前编译的产物及配置项都会在此次编译之前被移除。 -p 选项和 --pristine 选项等价。

ameba.py build -p

备注

  • 纯净编译同时会移除 menuconfig 文件夹,之前的配置内容也将被丢弃,本次编译将会使用 初始配置

  • 如果仅需清理编译产物但保留之前的配置选项,请使用 ameba.py build -c 命令进行清理。

增量编译

如果不带任何参数,项目将会进行增量编译,增量编译和全量编译相比会大大节省时间。

ameba.py build

编译指定示例

${SDK}/component/example 目录下提供了丰富的应用示例。如果您想要编译其中一个示例,可以通过 -a--app 将应用名称或应用路径传递给 build.py

ameba.py build -a <APP>

例如,需要编译 ${SDK}/component/example/network_protocol/http_client 示例,可以输入以下命令:

ameba.py build -a ${SDK}/component/example/network_protocol/http_client
//or
ameba.py build -a http_client

如果不通过 -a 传入应用名称或路径,将编译默认应用(仅使能无线连接)。

备注

  • example 目录下提供了名为 prj.conf 的文件,当用户未配置过项目时, ameba.py build -a <APP> 将会组合 component/soc/amebaxxx/project/default.confexample/.../<APP>/prj.conf 以使用 初始配置

  • 如果当前 build_RTLxxx 目录下已有 menuconfig 文件夹,可先通过 ameba.py menuconfig -f /.../prj.conf 配置或手动重新配置,然后使用 ameba.py build -a <APP> 编译,也可以直接使用 ameba.py build -a <APP> -p 删除之前的配置项。

编译指定目标

默认情况下,所有必要的目标将被一起编译。

  • 可通过 -g--target 选项单独编译特定的目标

  • 可通过 -h 选项查看所有可用目标

ameba.py build -g <TARGET>

例如,要重新生成 imgtool flashloader,需输入以下命令:

ameba.py build -g gen_imgtool_floader

项目清理

-c--clean 都可以清理当前项目的产物及中间文件,但 .config 配置文件会被保留。

ameba.py build -c

传递 CMake 的 Cache 变量

CMake 可以通过 -D 选项设置 Cache 变量的初始值。为了继承这一功能, ameba.py build 也同样支持 -D 选项。CMake 预定义的值和用户自定义的值都可以放在 -D 后面。

ameba.py build -D CACHE_VAL1=VALUE1 CACHE_VAL2=VALUE2 …

备注

CMake 原生的 -Dameba.py build-D 的不同之处如下:

  • CMake 要求每个变量定义前都要有 -D 前缀,例如: -DCACHE_VAL1=VALUE1 -DCACHE_VAL2=VALUE2

  • ameba.py build 要求所有变量跟随在一个单独的 -D 后面,并在 -D 和变量之间留有空格。例如: -D CACHE_VAL1=VALUE1 CACHE_VAL2=VALUE2

固件下载

我们提供了 ImageTool 专门用于固件的下载,请参考 Image Tool