跳到主要内容

交叉编译工具链使用手册

1. 概述

1.1 编写目的

主要介绍 SpacemiT 的工具链使用方法,方便开发人员使用。

1.2 适用范围

适用于 SpacemiT 的 K1 系列 SoC。

1.3 相关人员

  • 系统工程师
  • 应用工程师

1.4 文档结构

该文档介绍工具链下载安装及使用。

2. 下载安装

2.1 下载

访问 https://archive.spacemit.com/toolchain/,选择对应的版本下载。

spacemit-toolchain-linux-glibc-x86_64-xxx:linux 环境工具链,包含的 C 库是 glibc。

spacemit-toolchain-elf-newlib-x86_64-xxx:裸环境工具链,包含的 C 库是 newlibc。

文件体积较大的版本(压缩包 400M+)包含了 llvm 和 gcc 编译器,适用于需要使用 llvm 编译器的场景。

文件体积较小的版本(压缩包 100M+)只包含 gcc 编译器,适用于仅需使用 gcc 编译器的场景。

2.2 安装

将工具链解压后,bin 目录加入 PATH 即可。

export PATH=<工具链解压路径>/bin:$PATH 

3. 使用

3.1 gcc 工具链

3.1.1 编译命令参考

对于 gcc 工具链,以 linux 环境工具链为例,使用 riscv64-unknown-linux-gnu-gcc 命令,编译命令如:

$ riscv64-unknown-linux-gnu-gcc -O2 -mcpu=spacemit-x60 -march=rv64gc_zba_zbb_zbc_zbs spacemit.c -o spacemit.out

对于裸环境工具链,则使用 riscv64-unknown-elf-gcc 命令。

3.1.2 编译参数说明

-mcpu=spacemit-x60 ,使用 x60 调度和 Fusion 信息。

-march=rv64gc_zba_zbb_zbc_zbs ,启用 bitmanip 扩展指令。注意 march 参数可按实际需要启用的扩展进行组合。

更多信息可参考 GCC 官方文档。

3.2 llvm 工具链

3.2.1 编译命令参考

对于 llvm 工具链,以 linux 环境工具链为例,使用 clang 命令。如果与本机的 x86 clang 冲突,也可以使用 riscv64-unknown-linux-gnu-clang。编译命令如:

$ clang -O2 -mcpu=spacemit-x60 -march=rv64gc_zba_zbb_zbc_zbs_zicbop -mllvm -cache-line-size=64 -mllvm -prefetch-distance=128 -fuse-ld=lld spacemit.c -o spacemit.out

对于裸环境工具链,则使用 clangriscv64-unknown-elf-clang 命令。

3.2.2 编译参数说明

-mcpu=spacemit-x60 ,使用 x60 调度和 Fusion 信息。

-fuse-ld=lld,使用 lld 链接器。

-march=rv64gc_zba_zbb_zbc_zbs_zicbop -mllvm -cache-line-size=64 -mllvm -prefetch-distance=128,启用 bitmanip 扩展指令和 prefetch 扩展指令。注意 march 参数可按实际需要启用的扩展进行组合。

更多信息可参考 LLVM 官方文档。