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

编译与烧录

XMOS通过xCOMMON系统将用户代码与依赖库编译成可执行文件.xe。并通过xflash指令或DFU升级,将固件烧录到开发板上。

固件构建

在 XMOS 的 XTC 环境下,您需要完成以下操作:

  1. 解压下载的压缩包到指定路径(若您已通过 git 克隆了源码,可跳过此步)

  2. 进入相关应用的目录(如 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 中并运行。若要运行已编译好的二进制文件,请按照以下步骤进行:

  1. 将 USB 音频板连接到您的电脑。

  2. 将 XTAG 连接到 USB 音频板,并使用单独的 USB 线缆将其连接到电脑。

  3. 确保已连接所有必需的外部电源线。最后,要在硬件上运行二进制文件,执行类似如下的命令:

    xrun path/to/binary.xe

    其中,编译好的二进制固件的位置通常处于bin目录的文件夹下,将文件路径替换到上面的命令中。

    此时,设备应该作为 USB 音频设备出现在连接的电脑上。它将持续以 USB 音频设备模式运行,直至您重新为目标板供电,这会清除RAM中的程序,并重新从flash中启动。

通过 XTAG 将固件写入 Flash

您可以选择将二进制文件编程到引导闪存中,操作步骤如下:

  1. 将 USB 音频板连接到电脑。

  2. 将 XTAG 连接到 USB 音频板,并使用单独的 USB 线缆将其连接到电脑。

  3. 确保已连接所有必需的外部电源插孔。在具有 XMOS 工具的命令提示符下运行以下命令:

    xflash path/to/binary.xe

一旦 xflash 烧录完成,目标设备将重新启动并开始执行该二进制文件。重新供电给目标板将会使设备重新启动已刷写的二进制文件。如果您随后希望使用 xrun 来编程设备,我们建议您始终使用 erase-all 选项来擦除闪存内容,这可以通过 xflash 工具来完成。

通过 DFU 将固件更新到 Flash

您可以利用 XTC 工具集中的 xflash 工具生成 DFU 固件,然后通过木瓜科技提供的 DFU 升级工具,将升级固件更新到 Flash 的 Upgrade 分区。

important

DFU 升级工具仅适用于Windows10及以上版本的操作系统,请在使用前,安装Windows的声卡驱动

使用 xflash 生成 DFU 固件

生成 DFU 固件的操作步骤如下:

  1. 进入存放您编译好的二进制固件(.xe 文件)的目录下。
  2. 使用 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

前提条件

  1. 您已在Windows操作系统中成功安装了木瓜科技提供的UAC驱动程序,如需安装指南,请参阅安装驱动
  2. USB描述符使用的是木瓜科技的VID与PID。
  3. 您上传的固件必须和Flash的规格信息一致。

我们的测试驱动套件中包含DFU工具。您需要利用该工具及相应的DFU固件,将二进制固件更新到Flash。请按照以下步骤进行操作:

  1. 将USB音频板通过USB接口链接至主机电脑。
  2. 在驱动下载文件夹内,导航至\PawPawUsbAudioDfu\x64路径,并运行PawPawUsbAudioDfu.exe文件。
    • 如果您正在使用的操作系统为32位,则需选择\PawPawUsbAudioDfu\x86路径。
  3. 点击 "Browse..."按钮,找到并选中目标二进制固件,该固件通常为.bin文件。
  4. 点击 "Start"按钮开始固件上传过程。
  5. 若屏幕显示"Firmware upgrade finished successfully"信息,表示固件已成功升级。如果您对版本号做出修改,那么Current Firmware的显示也会相应改变。
image-20230713143858685
图1:DFU更新成功
XU316KIT-DFU-upgate-failed
图2:DFU更新失败
注意

关于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。

扩展阅读