编译与烧录
XMOS通过xCOMMON系统将用户代码与依赖库编译成可执行文件.xe。并通过xflash指令或DFU升级,将固件烧录到开发板上。
固件构建
在 XMOS 的 XTC 环境下,您需要完成以下操作:
-
解压下载的压缩包到指定路径(若您已通过 git 克隆了源码,可跳过此步)
-
进入相关应用的目录(如
sw_usb_audio/app_usb_aud_xk_316_pp,该目录下应存在Makefile文件),并执行以下命令:xmake all
该命令将会构建该应用所有可用的构建配置。在Linux或MacOS系统下,您可以使用-j选项,以启用多核编译。
其中,应用目录中的 Makefile 文件包含了所有的构建选项以及相关依赖。
这个 Makefile 利用了 XMOS XTC 工具集中提供的通用构建基础设施,它位于 module_xmos_common 目录中。该系统包括来自相关模块的源文件,关于更详细的说明,您可以参考 通过Makefile构建固件 获取更多信息。
运行固件
在开始本章的操作前,确保您已经**正确配置了XTAG**。
在开发过程中,开发者通常希望通过 XTAG 将程序直接编程到设备的内部 RAM 中并运行。若要运行已编译好的二进制文件,请按照以下步骤进行:
-
将 USB 音频板连接到您的电脑。
-
将 XTAG 连接到 USB 音频板,并使用单独的 USB 线缆 将其连接到电脑。
-
确保已连接所有必需的外部电源线。最后,要在硬件上运行二进制文件,执行类似如下的命令:
xrun path/to/binary.xe其中,编译好的二进制固件的位置通常处于
bin目录的文件夹下,将文件路径替换到上面的命令中。此时,设备应该作为 USB 音频设备出现在连接的电脑上。它将持续以 USB 音频设备模式运行,直至您重新为目标板供电,这会清除RAM中的程序,并重新从flash中启动。
通过 XTAG 将固件写入 Flash
您可以选择将二进制文件编程到引导闪存中,操作步骤如下:
-
将 USB 音频板连接到电脑。
-
将 XTAG 连接到 USB 音频板,并使用单独的 USB 线缆将其连接到电脑。
-
确保已连接所有必需的外部电源插孔。在具有 XMOS 工具的命令提示符下运行以下命令:
xflash path/to/binary.xe
一旦 xflash 烧录完成,目标设备将重新启动并开始执行该二进制文件。重新供电给目标板将会使设备重新启动已刷写的二进制文件。如果您随后希望使用 xrun 来编程设备,我们建议您始终使用 erase-all 选项来擦除闪存内容,这可以通过 xflash 工具来完成。
通过 DFU 将固件更新到 Flash
您可以利用 XTC 工具集中的 xflash 工具生成 DFU 固件,然后通过木瓜科技提供的 DFU 升级工具,将升级固件更新到 Flash 的 Upgrade 分区。
DFU 升级工具仅适用于Windows10及以上版本的操作系统,请在使用前,安装Windows的声卡驱动。
使用 xflash 生成 DFU 固件
生成 DFU 固件的操作步骤如下:
- 进入存放您编译好的二进制固件(
.xe文件)的目录下。 - 使用 xflash 制作 DFU 固件,执行类似于以下的命令:
xflash --factory-version <version> --upgrade <id> path/to/binary.xe -o dfu_firmware_name.bin
其中:
<version>需要替换为您的XTC工具版本的前两位,例如15.2<id>是DFU升级固件的版本id,每个id必须为大于0且不相同的整数。path/to/binary.xe是您二进制固件的路径dfu_firmware_name.bin是您将要输出的DFU固件的名称
一个实际工程中的例子:
xflash --factory-version 15.2 --upgrade 1 app_usb_aud_xk_316_pp.xe -o app_usb_aud_xk_316_pp.bin
其中<version>可以接受的值是10, 11, 12, 13.0, 13.1, 13.2, 14.0, 14.1, 14.2, 14.3, 14.4, 15.0, 15.1以及 15.2。
使用DFU工具更新固件到Flash
前提条件:
- 您已在Windows操作系统中成功安装了木瓜科技提供的UAC驱动程序,如需安装指南,请参阅安装驱动。
- USB描述符使用的是木瓜科技的VID与PID。
- 您上传的固件必须和Flash的规格信息一致。
我们的测试驱动套件中包含DFU工具。您需要利用该工具及相应的DFU固件,将二进制固件更新到Flash。请按照以下步骤进行操作:
- 将USB音频板通过USB接口链接至主机电脑。
- 在驱动下载文件夹内,导航至
\PawPawUsbAudioDfu\x64路径,并运行PawPawUsbAudioDfu.exe文件。- 如果您正在使用的操作系统为32位,则需选择
\PawPawUsbAudioDfu\x86路径。
- 如果您正在使用的操作系统为32位,则需选择
- 点击 "Browse..."按钮,找到并选中目标二进制固件,该固件通常为
.bin文件。 - 点击 "Start"按钮开始固件上传过程。
- 若屏幕显示"Firmware upgrade finished successfully"信息,表示固件已成功升级。如果您对版本号做出修改,那么Current Firmware的显示也会相应改变。
关于DFU更新,需要强调的是,所更新的DFU二进制文件必须与板上的Flash完全匹配。如果使用不相符的bin文件进行DFU烧录,将导致DFU固件更新程序崩溃,并可能让板上的Flash内容全部丢失。如果遇到这种情况,即使尝试重新插拔也无法解决问题,那么唯一的解决方案就是通过XTAG专用烧录器或Flash烧录器再次进行固件烧录。
通过烧录器将固件写入Flash
生成烧录镜像
您可以使用 XFlash 工具生成烧录固件,这种二进制文件可以直接通过第三方烧录器编程到闪存中:
xflash --factory path/to/binary.xe --spi-spec path/to/flash.spec -o binary.bin
生成的二进制文件可以直接用于烧录器编程。
使用烧录器编程
请参考烧录章节的内容,了解如何使用烧录器将固件写入Flash。