基于 CLI 的编译与下载
概述
本章介绍如何在 CLI 环境中编译 SDK,然后将固件下载到芯片中。
编译流程
配置及编译需要在 SoC 的 project 路径下进行,对应路径下均放置了供配置及编译的 Python 脚本。其中, build.py 脚本用于编译。
进入工程目录:
{SDK}/amebadplus_gcc_project
备注
将 {SDK} 替换为用户自己的 SDK 路径。
执行编译脚本:
build.py,开始编译编译完成后,固件将被拷贝到
/amebadplus_gcc_project路径下,用户也可以在如下文件夹看到固件:/amebadplus_gcc_project/project_km0/asdk/image/amebadplus_gcc_project/project_km4/asdk/image
CMake 生成的中间文件将会被存放在
build文件夹。如果生成失败, 尝试运行
build.py -c后重新编译。
KM4 & KM0 工程编译日志
KM4 & KM0 固件生成
备注
如果想要获取 .map 文件进行调试, 请在如下路径中查找:
/amebadplus_gcc_project/project_km0/asdk/image/amebadplus_gcc_project/project_km4/asdk/image
进入工程目录:
{SDK}/amebalite_gcc_project
备注
将 {SDK} 替换为用户自己的 SDK 路径。
执行编译脚本:
build.py,开始编译编译完成后,固件将被拷贝到
/amebalite_gcc_project路径下,用户也可以在如下文件夹看到固件:/amebalite_gcc_project/project_km0/asdk/image/amebalite_gcc_project/project_km4/asdk/image
CMake 生成的中间文件将会被存放在
build文件夹。如果生成失败, 尝试运行
build.py -c后重新编译。
KM4 & KR4 工程编译日志
KM4 & KR4 固件生成
备注
如果想要获取 .map 文件进行调试, 请在如下路径中查找:
amebalite_gcc_project/project_kr4/vsdk/imageamebalite_gcc_project/project_km4/asdk/image
进入工程目录:
{SDK}/amebalite_gcc_project
备注
将 {SDK} 替换为用户自己的 SDK 路径。
执行编译脚本:
build.py,开始编译编译完成后,固件将被拷贝到
/amebalite_gcc_project路径下,用户也可以在如下文件夹看到固件:/amebalite_gcc_project/project_km0/asdk/image/amebalite_gcc_project/project_km4/asdk/image
CMake 生成的中间文件将会被存放在
build文件夹。如果生成失败, 尝试运行
build.py -c后重新编译。
KM4 & KR4 工程编译日志
KM4 & KR4 固件生成
备注
如果想要获取 .map 文件进行调试, 请在如下路径中查找:
amebalite_gcc_project/project_kr4/vsdk/imageamebalite_gcc_project/project_km4/asdk/image
进入工程目录:
{SDK}/amebalite_gcc_project
备注
将 {SDK} 替换为用户自己的 SDK 路径。
执行编译脚本:
build.py,开始编译编译完成后,固件将被拷贝到
/amebalite_gcc_project路径下,用户也可以在如下文件夹看到固件:/amebalite_gcc_project/project_km0/asdk/image/amebalite_gcc_project/project_km4/asdk/image
CMake 生成的中间文件将会被存放在
build文件夹。如果生成失败, 尝试运行
build.py -c后重新编译。
KM4 & KR4 工程编译日志
KM4 & KR4 固件生成
备注
如果想要获取 .map 文件进行调试, 请在如下路径中查找:
amebalite_gcc_project/project_kr4/vsdk/imageamebalite_gcc_project/project_km4/asdk/image
进入工程目录:
{SDK}/amebasmart_gcc_project
备注
将 {SDK} 替换为用户自己的 SDK 路径。
执行编译脚本:
build.py,开始编译编译完成后,固件将被拷贝到
/amebasmart_gcc_project路径下,用户也可以在如下文件夹看到固件:/amebasmart_gcc_project/project_hp/asdk/image/amebasmart_gcc_project/project_lp/asdk/image/amebasmart_gcc_project/project_ap/asdk/image
CMake 生成的中间文件将会被存放在
build文件夹。如果生成失败, 尝试运行
build.py -c后重新编译。
KM4 & KM0 & CA32 编译日志
KM4 & KM0 & CA32 固件生成
备注
如果想要获取 .map 文件进行调试, 请在如下路径中查找:
/amebasmart_gcc_project/project_hp/asdk/image/amebasmart_gcc_project/project_lp/asdk/image/amebasmart_gcc_project/project_ap/asdk/image
编译的最终产物是固件(Image),用户需要将其下载到芯片中。
编译指令
Realtek 提供 build.py 脚本来简化项目的编译,常用指令如下表所示:
功能 |
命令 |
描述 |
|---|---|---|
帮助 |
|
列出支持的命令 |
编译 |
|
增量编译工程 |
纯净编译 |
|
移除所有产物并编译工程 |
指定示例 |
|
编译名为 APP 的示例 |
指定目标 |
|
编译指定的 target |
清理 |
|
清理编译产物 |
调试 |
|
进入调试模式 |
帮助指令
如果您是第一次使用 build.py 脚本,可以通过以下命令了解此脚本的用法:
build.py -h
通过 -h 或 --help 选项,所有支持的命令将会被列出。
build.py -h
usage: build.py [-h] [-a APP] [-c] [-p]
[-g {flashloader,imgtool_flashloader,gen_imgtool_floader}]
[-gdb] [-debug] [-D DEFINED [DEFINED ...]] [--new NEW [NEW ...]]
options:
-h, --help show this help message and exit
-a APP, --app APP application path
-c, --clean clean
-p, --pristine pristine build
-g {flashloader,imgtool_flashloader,gen_imgtool_floader}, --target {flashloader,imgtool_flashloader,gen_imgtool_floader}
custom target
-gdb, --gdb gdb
-debug, --debug debug
-D DEFINED [DEFINED ...], --Defined DEFINED [DEFINED ...]
user defined variables
--new NEW [NEW ...] build.py --new-prj <target_dir> [-a <APP>]
纯净编译
纯净编译意味着此次编译环境没有之前残留产物的影响,所有之前编译的产物及配置项都会在此次编译之前被移除。 -p 选项和 --pristine 选项等价。
build.py -p
备注
纯净编译同时会移除
menuconfig文件夹,之前的配置内容也将被丢弃,本次编译将会使用 初始配置。如果仅需清理编译产物但保留之前的配置选项,请使用
build.py -c命令进行清理。
增量编译
如果不带任何参数,项目将会进行增量编译,增量编译和全量编译相比会大大节省时间。
build.py
编译指定示例
${SDK}/component/example 目录下提供了丰富的应用示例。如果您想要编译其中一个示例,可以通过 -a 或 --app 将应用名称或应用路径传递给 build.py。
build.py -a <APP>
例如,需要编译 ${SDK}/component/example/network_protocol/http_client 示例,可以输入以下命令:
build.py -a ${SDK}/component/example/network_protocol/http_client
//or
build.py -a http_client
如果不通过 -a 传入应用名称或路径,将编译默认应用(仅使能无线连接)。
备注
example 目录下提供了名为
prj.conf的文件,当用户未配置过项目时,build.py -a <APP>将会组合amebaxxx_gcc_project/default.conf与example/.../<APP>/prj.conf以使用 初始配置。如果当前 SoC 目录下已有
menuconfig文件夹,可先通过menuconfig.py -f /.../prj.conf配置或手动重新配置,然后使用build.py -a <APP>编译,也可以直接使用build.py -a <APP> -p删除之前的配置项。
编译指定目标
默认情况下,所有必要的目标将被一起编译。
可通过
-g或--target选项单独编译特定的目标可通过
-h选项查看所有可用目标
build.py -g <TARGET>
例如,要重新生成 imgtool flashloader,需输入以下命令:
build.py -g gen_imgtool_floader
项目清理
-c 和 --clean 都可以清理当前项目的产物及中间文件,但 .config 配置文件会被保留。
build.py -c
传递 CMake 的 Cache 变量
CMake 可以通过 -D 选项设置 Cache 变量的初始值。为了继承这一功能, build.py 也同样支持 -D 选项。CMake 预定义的值和用户自定义的值都可以放在 -D 后面。
build.py -D CACHE_VAL1=VALUE1 CACHE_VAL2=VALUE2 …
更多关于本项目 Cache 变量的描述,请参考 ${SDK}/amebaxxx_gcc_project 目录下的 CMakeLists.txt 文件。
备注
CMake 原生的 -D 与 build.py 的 -D 的不同之处如下:
CMake 要求每个变量定义前都要有
-D前缀,例如:-DCACHE_VAL1=VALUE1 -DCACHE_VAL2=VALUE2。build.py要求所有变量跟随在一个单独的-D后面,并在-D和变量之间留有空格。例如:-D CACHE_VAL1=VALUE1 CACHE_VAL2=VALUE2。
固件下载
我们提供了 ImageTool 专门用于固件的下载,请参考 Image Tool 。