Skip to main content
欢迎来到PAWPAW技术文档网站了解更多信息

使用xCOMMON系统构建固件

XMOS USB音频应用使用xCOMMON系统构建固件,你可以轻松地修改其中的编译选项、更换依赖库并快速生成所需的固件。

xCOMMON是基于GNU Makefile构建系统所搭建的,其设计目的是加速xCORE应用程序的开发。通过使用这套系统,用户不需要在Makefile中显式地表达依赖关系,而是应遵循特定的文件夹结构和命名约定,从中可以自动推断出依赖关系。

接下来我们会以app_usb_aud_xk_316_pp中的Makefile为例,介绍常用的选项与示例,如果你需要进一步了解,参考使用Makefile构建工具-XCOMMON系统

经典配置

Makefile
# TARGET变量确定应用程序编译的目标系统。它可以引用源目录(src/core)中的XN文件,也可以是编译时--target选项的有效参数(例如 XCORE-AI-EXPLORER)。

TARGET = XU316-1024-QF60B-PP24.xn

# APP_NAME选项影响固件编译时的命名前缀,如果此项为空,则使用当前Makefile所在的APP文件夹名
APP_NAME =

# 这些标志在构建应用程序时传递给xcc
# EXTRA_BUILD_FLAGS变量可用于编译时,在xmake命令行上添加选项
BUILD_FLAGS = $(EXTRA_BUILD_FLAGS) -DFLASH_MAX_UPGRADE_SIZE=512*1024 \
-DUSB_TILE=tile[1] \
-DDEBUG_PRINT_ENABLE=1 \
-DINPUT_VOLUME_CONTROL=1 \
-DOUTPUT_VOLUME_CONTROL=1 \
-DXU316_1024_QF60B_PP24=1 -fxscope \
-fcomment-asm -O3 -report -lquadflash -g \
-DADAT_TX_USE_SHARED_BUFF=1 -DQUAD_SPI_FLASH=1 \

# USED_MODULES变量列出应用程序使用的其他模块。这些模块会扩展SOURCE_DIRS、INCLUDE_DIRS和LIB_DIRS变量。
# 预期模块在BASE_DIR目录上一级目录中。
USED_MODULES = lib_xud lib_xua lib_i2c lib_locks lib_logging lib_xassert \
lib_mic_array lib_dsp lib_spdif lib_adat

# 以INCLUDE_ONLY_IN_作为前缀的变量,表示仅在编译该选项时,包含变量中对应的文件
INCLUDE_ONLY_IN_Pawpaw-2AMi8o8xxxxxx_tdm8 =

# 以XCC_FLAGS_作为前缀的变量,表示一个构建配置,可使用XMake编译对应的配置(见下一节)。另外可以在
# $(BUILD_FLAGS)的后面通过`-D`选项添加该配置专有的宏定义,该宏定义会覆盖xua_conf.h中的定义
XCC_FLAGS_Pawpaw-2AMi8o8xxxxxx_tdm8 = $(BUILD_FLAGS) -DXUA_PCM_FORMAT=XUA_PCM_FORMAT_TDM\
-DMAX_FREQ=96000

构建配置

由于参考设计软件的灵活性,存在大量的构建选项。例如输入和输出通道数、Audio Class版本、接口类型等。一个"构建配置"是一组构建选项,这些选项结合在一起产生具有特定功能集的二进制文件。

下面的命令会构建Makefile中所有可用的配置:

xmake all

应用程序的Makefile中列出了构建配置及其相关选项,可以通过命令行按如下方式构建特定配置:

xmake CONFIG=<config name>

其中,<config name>是以XCC_FLAGS_开头的选项名,例如编译XCC_FLAGS_Pawpaw-2AMi8o8xxxxxx_tdm8

xmake CONFIG=Pawpaw-2AMi8o8xxxxxx_tdm8

构建完成后,可以在以下位置找到对应配置的二进制文件:

<app name>/bin/<app name>_<config name>.xe
提示

XTC工具的Linux/OSX版本支持多线程编译,在使用 xmake 编译时,您可以添加-j选项,以加快编译速度。