编译环境
WQCORE 的编译/构建工具主要使用 Scons,Scons 是基于 Python 的构建工具。
WQCORE 支持异构芯片,包括 RISC-V 和 Xtensa HIFI 等架构。因此所需 RISC-V 的 Toolchain 和 Xtensa HIFI 的 Toolchain。
环境准备和安装
步骤0 - WQ SDK 环境变量设置
声明 WQ SDK 的各类工具的默认安装路径
echo "export WQCORE_INSTALL_PATH=~/.wqcore/" >>~/.bashrc
echo "export WQCORE_TOOLCHAIN_PATH=\$WQCORE_INSTALL_PATH/toolchain" >>~/.bashrc
echo "export WQCORE_LICENSE_PATH=\$WQCORE_INSTALL_PATH/license" >>~/.bashrc
mkdir $WQCORE_INSTALL_PATH
mkdir $WQCORE_TOOLCHAIN_PATH
mkdir $WQCORE_LICENSE_PATH
source ~/.bashrc
备注
~/.wqcore/ 此为 WQ SDK 的各类工具(交叉编译工具、License工具等等)的默认安装路径
开发者也可根据实际开发环境的要求,自行选择安装目录及 profile 文件,但建议通过上述环境变量指定好路径;若有路径有空格,请务必对完整路径添加 "" 来避免路径识别错误。
步骤1 - 安装前置环境
通过包管理安装前置环境
Linux
Ubuntu :
sudo apt install build-essential libncurses-dev openssl libssl-dev libbz2-dev uuid-dev libreadline-dev liblzma-dev libsqlite3-dev tk8.6-dev zlib1g-dev libffi-dev -y
Fedora/Centos/Redhat
dnf :
sudo dnf groupinstall "Development Tools" -y sudo dnf install ncurses-devel openssl openssl-devel bzip2-devel readline-devel libuuid-devel xz-devel zlib-devel gdbm-devel sqlite-devel libffi-devel -y
yum :
sudo yum groupinstall "Development Tools" -y sudo yum install ncurses-devel openssl openssl-devel bzip2-devel readline-devel libuuid-devel xz-devel zlib-devel gdbm-devel sqlite-devel libffi-devel -y
步骤2 - 安装 Python
Linux
Ubuntu :
sudo apt install python3 -yFedora/Centos/Redhat
dnf :
sudo dnf install python3 -yyum :
sudo yum install python3 -y
步骤3 - 安装 Scons
Linux
通过包管理安装
Ubuntu :
sudo apt install scons -yFedora/Centos/Redhat
dnf :
sudo dnf install scons -yyum :
sudo yum install scons -y
通过源码包安装 :
wget https://nchc.dl.sourceforge.net/project/scons/scons/4.1.0.post1/scons-4.1.0.post1.tar.gz tar zxvf scons-4.1.0.post1.tar.gz cd SCons-4.1.0.post1 sudo python3 setup.py install
备注
安装权限提示: 如果 scons 需要安装到 user 本地,可以加上
--user的选项
步骤4 - 安装编译工具
WQCORE 所使用到的工具链存储在 http://222.71.131.187:8888/iot/wq-toolchain-dl.git 仓库上,可直接进行
git clone http://222.71.131.187:8888/iot/wq-toolchain-dl.git 的方式来获得所有工具链
Linux
RISC-V 工具链
下载地址:
常用的 Linux 发行版
较旧的 Linux 发行版(如 Ubuntu 16.04及以下)
备注
可将 URL 复制到浏览器中下载,也可使用
wget进行下载安装方式:
解压:
tar zxvf riscv64-unknown-elf-gcc-x86-64-10.2.0.tgz -C $WQCORE_TOOLCHAIN_PATH
备注
这里假设安装到 Home 目录,如果有 root 权限或需要多用户共享,可以解压到其他目录下,如
/opt/; 建议方式为将 $WQCORE_INSTALL_PATH 环境变量设置为目标路径添加环境变量:
echo "export PATH=\$PATH:\$WQCORE_TOOLCHAIN_PATH/riscv64-unknown-elf-gcc-x86-64-10.2.0/bin" >> ~/.bashrc source ~/.bashrc
备注
将 RISCV 工具链 bin 路径添加进环境变量 PATH 的方法有多种,并且不同 Linux 发行版略有差异,请根据实际情况自行添加;
若后续支持其他版本 toolchain,请自行按解压后的目录名称修改 PATH 路径
Xtensa 工具链
Xtensa GCC
下载地址:
安装方式:
解压并安装:
tar zxvf xtensa-wuq-elf-gcc-x64-64-12.2.0.tgz -C $WQCORE_TOOLCHAIN_PATH
备注
这里假设安装到 Home 目录,如果有 root 权限或需要多用户共享,可以解压到其他目录下,如
/opt/; 建议方式为将 $WQCORE_INSTALL_PATH 环境变量设置为目标路径添加环境变量:
echo "export PATH=\$PATH:\$WQCORE_TOOLCHAIN_PATH/xtensa-wuq-elf-gcc-x64-64-12.2.0/bin" >> ~/.bashrc source ~/.bashrc
备注
将 Xtensa 工具链 bin 路径添加进环境变量 PATH 的方法有多种,并且不同 Linux 发行版略有差异,请根据实际情况自行添加;
若后续支持其他版本 toolchain,请自行按解压后的目录名称修改 PATH 路径
XT-XCC/XT-CLANG
下载地址:
安装方式:
解压并安装:
tar zxvf XtensaTools_RI_2020_4_linux.tgz -C $WQCORE_TOOLCHAIN_PATH tar zxvf wq_hifi5_asic_linux_redist.tgz -C $WQCORE_TOOLCHAIN_PATH cd $WQCORE_TOOLCHAIN_PATH/RI-2020.4-linux/wq_hifi5_asic_linux_redist ./install --xtensa-tools $WQCORE_TOOLCHAIN_PATH/RI-2020.4-linux/XtensaTools
备注
这里假设安装到 Home 目录,如果有 root 权限或需要多用户共享,可以解压到其他目录下,如
/opt/; 建议方式为将 $WQCORE_INSTALL_PATH 环境变量设置为目标路径添加环境变量:
echo "export PATH=\$PATH:\$WQCORE_TOOLCHAIN_PATH/RI-2020.4-linux/XtensaTools/bin" >> ~/.bashrc source ~/.bashrc
备注
将 Xtensa 工具链 bin 路径添加进环境变量 PATH 的方法有多种,并且不同 Linux 发行版略有差异,请根据实际情况自行添加;
若后续支持其他版本 toolchain,请自行按解压后的目录名称修改 PATH 路径
步骤5 - 安装 HIFI5 (Xtensa) License
使用 Xtensa 官方工具链(XT-XCC、XT-CLANG)编译 HIFI5 需要有 License 授权,License 请联系 WuQi 申请。
License 分类
License 主要有两种:Floating 和 Node-Locked,含义分别如下:
Floating 类型
在指定为服务器的PC上安装许可证服务器和许可证文件后,从联网的内部网络连接到服务器的方式。
您可以在多数电脑上使用许可证,但同时使用许可证的用户数量有限。
而且必须是服务器和客户端连接在一起。
Node-Locked 类型
在指定的个别PC上安装许可服务器和许可文件后使用的方式。不需要与服务器连接,但有一种限制,即只能在指定的PC上使用。
备注
向 WuQi 申请的 License 默认为 Node-Locked 类型。
License 的使用方法
Floating 类型
Floating 类型的 license 需要配合 License Server 工作,申请时需告知要运行 License Server 的网络 mac 地址。
警告
请务必确认网络 mac 地址,保证运行 License Server 的 mac 地址与申请 license 时一致
一个典型的 Floating 类型的 License 内容如下:
SERVER MY_HOST_NAME 010203040506 27000 # USE_SERVER VENDOR xtensad </PATH/TO/XTENSAD> # # # INCREMENT XT_ISS_BASE_EB043600 xtensad 15.0 14-apr-2025 5 \ BF84AC765532 DUP_GROUP=UH SN=xxxxx SIGN="0180 8B2B 95A6 \ C4D9 4C2F 14D6 26CB 98E8 AD93 45FF 2E03 142E E58D 1718 09EB \ 42D9 C083 FE20 6E11 CC97 E1B9" INCREMENT XT_XCC_TIE_EB043600 xtensad 15.0 14-apr-2025 5 E2C613EC2941 \ DUP_GROUP=UH SN=xxxxx SIGN="0289 9F4F B069 7EB8 AB1E \ AC5F 9B05 6AC5 DD33 B1BC 7A02 DF6E B76A 84E4 F9B5 64F4 807D \ 883A 2C89 36A1 A7D4" INCREMENT XT_XPLORER_SE xtensad 15.0 14-apr-2025 5 399B60420E9B \ DUP_GROUP=UH SN=xxxxx SIGN="028E 4F20 8491 2126 39CC \ 0B34 6BB7 3878 69EB 8AA0 5601 F4C4 D6E2 A847 A028 07FC 3D33 \ 6015 B3D0 4AD0 8C0F"
警告
第一行
MY_HOST_NAME请修改成 License Server 所在 PC 或服务器的 hostname,windows 和 linux 均可使用hostname命令查看第一行
MY_HOST_NAME后的010203040506即 License Server 所在服务器的网路 MAC 地址,这个会根据申请时自动生成,无需改动第一行 最后的
27000即 License Server 的监听端口,可根据需要修改VENDOR所在行,一般情况下无需修改后面的
INCREMENT请勿修改
运行 License Server 的方式如下:
Windows
下载 License 工具:
解压,并进入 "licserv_win32_v11_15\x64_n6" 目录
使用 "命令提示符" 打开此目录,执行
start /B .\lmgrd.exe -c $WQCORE_LICENSE_PATH/license.txt备注
$WQCORE_LICENSE_PATH/license.txt 为 license 文件的路径,请按照实际路径填写
此为基础运行命令,您可以将按自己的需求,将 license server 的启动加入到开机启动项中
若需产生 log,可以添加参数 -l output.log;其他使用方法详见 "licserv_win32_v11_15\docs\fnp_LicAdmin.pdf"
Linux
下载 License 工具:
解压,并进入 "licserv_linux_x64_v11_15/x64_lsb" 目录
在 shell 中执行
./lmgrd -c $WQCORE_LICENSE_PATH/license.txt &备注
$WQCORE_LICENSE_PATH/license.txt 为 license 文件的路径,请按照实际路径填写
此为基础运行命令,您可以将按自己的需求,将 license server 的启动加入到开机启动项中
若需产生 log,可以添加参数 -l output.log;其他使用方法详见 "licserv_linux_x64_v11_15/docs/fnp_LicAdmin.pdf"
编译代码时,所在的 PC 指定好 License Server 的 IP 地址及 端口号:
touch ~/.flexlmrc echo "XTENSAD_LICENSE_FILE=27000@192.168.1.99" >~/.flexlmrc
备注
27000 为 License Server 监听的端口号
192.168.1.99 为 License Server 的监听的 IP 地址
Node-Locked 类型
Node-Locked 类型 license 无需配合 License Server 工作,只需要保证使用 license 的网络 mac 地址与申请时一致。
一个典型的 Node-Blocked 类型的 License 如下:
INCREMENT XT_ISS_BASE_EB043600 xtensad 15.0 14-apr-2024 uncounted \ FDC577D9ADD7 HOSTID=010203040506 SN=xxxxxx TS_OK \ SIGN="011E 0188 3599 4FA4 3951 E8A2 7E38 E436 FAF6 45C0 1500 \ BDAF 524C 0EA4 5596 A40A 9A9F 1706 A874 69BC 0DAF" INCREMENT XT_XCC_TIE_EB043600 xtensad 15.0 14-apr-2024 uncounted \ 6BE4FD081856 HOSTID=010203040506 SN=xxxxxx TS_OK \ SIGN="0094 5D0C AE1F E606 C122 F34C 5F18 08B4 D503 DEF9 8B02 \ C66E ED8B A092 C991 440C 8A8C 2E64 FAC4 C609 F3FE" INCREMENT XT_XPLORER_SE xtensad 15.0 14-apr-2024 uncounted \ 7A93D04FBA43 HOSTID=010203040506 SN=xxxxxx TS_OK \ SIGN="02C0 4398 1DA2 E5EE 5290 CC92 EB3E E9BC 63D6 8913 3501 \ 01BA F7C7 2658 9A4E 5C31 8A77 80B6 1F86 71B0 6472"
警告
无需修改任何 License 内容
编译代码时,所在的 PC 指定好 License 文件的即可:
csh:
setenv LM_LICENSE_FILE $WQCORE_LICENSE_PATH/license.txtbash:
export LM_LICENSE_FILE=$WQCORE_LICENSE_PATH/license.txt备注
$WQCORE_LICENSE_PATH/license.txt为 license 文件的绝对路径