快速入门
构建系统
XMOS USB音频参考设计软件及其相关库使用XMOS XCOMMON构建系统。XCOMMON构建系统基于GNU Makefile构建系统开发而成,加速了xCORE应用的开发。用户无需在Makefile中显式地表达依赖关系,而是应遵循特定的文件夹结构和命名约定,从中自动推断出依赖关系。
XCOMMON构建系统依赖于专门的工具XMAKE。目前不能与通用的GNU Make版本一起使用。
应用程序和库
sw_usb_audio 文件夹中包含多个应用程序目录,每个目录中都包含Makefile,可以编译为可执行文件。通常情况下,每个硬件平台都会有一个应用程序目录。应用程序及其对应的硬件平台列在图5中。
| 应用 | 硬件平台 |
|---|---|
| app_usb_aud_xk_316_mc | xcore.ai USB Audio 2.0 Multi-channel Audio Board |
| app_usb_aud_xk_216_mc | xcore-200 USB Audio 2.0 Multi-channel Audio Board |
| app_usb_aud_xk_evk_xu316 | xcore.ai Evaluation Kit |
| app_usb_aud |
图5:USB音频参考应用程序
代码被分为几个模块(或库)目录,每个目录都有自己的GIT仓库。通过在应用程序的Makefile中将库名称添加到USED_MODULES定义中,可以将这些库的代码包含到构建过程中。
每个库都有一个module_build_info文件,其中列出了它所依赖的其他模块(DEPENDENT_MODULES)。这允许形成依赖树和嵌套。
大部分核心代码都包含在XMOS USB音频库(lib_xua)中。图6显示了核心依赖关系的完整列表。
| Library | Description |
|---|---|
| lib_xua | 用于USB音频应用程序的通用代码 |
| lib_xud | 低级USB设备库 |
| lib_spdif | S/PDIF发送和接收代码 |
| lib_adat | ADAT发送和接收代码 |
| lib_mic_array | PDM麦克风接口和抽取器 |
| lib_xassert | 轻量级断言库 |
图6:USB音频的核心依赖关系
其中的一些核心依赖关系还会有自己的依赖项,例如lib_mic_array依赖于lib_xassert(参见上文),lib_logging(轻量级打印库)和lib_dsp(DSP库)。
应用程序可能使用其他依赖项来支持硬件平台或添加核心功能以外的功能。例如,XK-AUDIO-316-MC的应用程序使用了图7中列出的额外依赖项:
| Library | Description |
|---|---|
| lib_i2c | I2C接口,用于配置DAC/ADC等 |
图7:示例的额外依赖关系
构建配置
由于参考设计软件的灵活性,存在大量的构建选项。例如输入和输出通道数、Audio Class版本、接口类型等。一个"构建配置"是一组构建选项,这些选项结合在一起产生具有特定功能集的二进制文件。
以下命令构建所有支持的配置:
xmake all
应用程序的Makefile中列出了构建配置及其相关选项,可以通过命令行按如下方式构建特定配置:
xmake CONFIG=<config name>
构建完成后,可以在以下位置找到对应配置的二进制文件:
<app name>/bin/<app name>_<config name>.xe
配置命名
每个应用程序都采用一种命名方案,将功能与构建配置/二进制文件关联起来。根据可用的硬件接口,可能会使用同一基本方案的不同变体。
每个相关的构建选项都被分配一个在配置名称中的位置,一个字符表示选项的值(通常使用‘x’表示“关闭”或“禁用”)。
图8中列出了一些示例构建选项。
例如,在该方案中,配置名称为2xsx表示Audio Class 2.0,禁用MIDI,启用S/PDIF输出和禁用S/PDIF输入。
可能还会使用其他字母或数字来表示通道数等信息。有关详细信息,请参阅应用程序Makefile中的注释。
| Build Option Name | Options Denoted by |
|---|---|
| Audio Class Version | 1 or 2 |
| MIDI on or off | m or x |
| S/PDIF Output on or off | s or x |
| S/PDIF Input on or off | s or x |
图8:示例构建选项和命名