Cadence Tensilica Xtensa C/C++ 编译器(XCC)
获取适用于目标 SoC 的 Tensilica 软件开发工具包,通常包含两部分:
Xtensa Xplorer,包含必要的可执行文件和库。
安装在 Xtensa Xplorer 之上的 SoC 专用附加组件。
该附加组件使编译器能够为目标 SoC 生成代码。
先安装 Xtensa Xplorer,再安装 SoC 附加组件。
按照 Cadence 的说明安装 SDK。
根据 SDK 的不同,提供两套编译器:
基于 GCC 的编译器:
xt-xcc及其配套工具。基于 Clang 的编译器:
xt-clang及其配套工具。
确保已获得 SDK 使用许可证,或能够访问远程许可证服务器。
-
将
ZEPHYR_TOOLCHAIN_VARIANT设为xcc或xt-clang。将
XTENSA_TOOLCHAIN_PATH设为工具链安装目录。有两种方式指定要使用的 SoC ID 和 SDK 版本,两者互斥,不能同时使用。
为单个 SoC 构建时:
将
XTENSA_CORE设为应用目标的 SoC ID。将
TOOLCHAIN_VER设为 Xtensa SDK 版本。
为多个 SoC 构建时,对每个 SoC 与开发板组合:
将
XTENSA_CORE_{normalized_board_target}设为应用目标的 SoC ID。将
TOOLCHAIN_VAR_{normalized_board_target}设为 Xtensa SDK 版本。
例如,假定 SDK 安装在
/opt/xtensa,使用该 SDK 为intel_adsp/ace15_mtpm开发应用,可按上述两种方式设置环境:单个 SoC:
# Linux export ZEPHYR_TOOLCHAIN_VARIANT=xt-clang export XTENSA_TOOLCHAIN_PATH=/opt/xtensa/XtDevTools/install/tools/ export XTENSA_CORE=ace10_LX7HiFi4_2022_10 export TOOLCHAIN_VER=RI-2022.10-linux
多个 SoC:
# Linux export ZEPHYR_TOOLCHAIN_VARIANT=xt-clang export XTENSA_TOOLCHAIN_PATH=/opt/xtensa/XtDevTools/install/tools/ export TOOLCHAIN_VER_intel_adsp_ace15_mtpm=RI-2022.10-linux export XTENSA_CORE_intel_adsp_ace15_mtpm=ace10_LX7HiFi4_2022_10
要使用基于 Clang 的编译器:
将
ZEPHYR_TOOLCHAIN_VARIANT设为xt-clang。注意,基于 Clang 的编译器可能包含旧版 LLVM 缺陷,导致以下错误:
/tmp/file.s: Assembler messages: /tmp/file.s:20: Error: file number 1 already allocated clang-3.9: error: Xtensa-as command failed with exit code 1
发生这种情况时,将
XCC_NO_G_FLAG设为1。例如:
# Linux export XCC_NO_G_FLAG=1