编译环境 ================ WQCORE 的编译/构建工具主要使用 Scons,Scons 是基于 Python 的构建工具。 WQCORE 支持异构芯片,包括 RISC-V 和 Xtensa HIFI 等架构。因此所需 RISC-V 的 Toolchain 和 Xtensa HIFI 的 Toolchain。 环境准备和安装 ---------------- 步骤0 - WQ SDK 环境变量设置 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 声明 WQ SDK 的各类工具的默认安装路径 .. code-block:: 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 .. note:: 1. ~/.wqcore/ 此为 WQ SDK 的各类工具(交叉编译工具、License工具等等)的默认安装路径 2. 开发者也可根据实际开发环境的要求,自行选择安装目录及 profile 文件,但建议通过上述环境变量指定好路径;若有路径有空格,请务必对完整路径添加 "" 来避免路径识别错误。 步骤1 - 安装前置环境 ^^^^^^^^^^^^^^^^^^^^^ 通过包管理安装前置环境 * Linux * Ubuntu : .. code-block:: 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 : .. code-block:: 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 : .. code-block:: 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 -y`` * Fedora/Centos/Redhat * dnf : ``sudo dnf install python3 -y`` * yum : ``sudo yum install python3 -y`` 步骤3 - 安装 Scons ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * Linux 通过包管理安装 * Ubuntu : ``sudo apt install scons -y`` * Fedora/Centos/Redhat * dnf : ``sudo dnf install scons -y`` * yum : ``sudo yum install scons -y`` 通过源码包安装 : .. code-block:: 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 .. note:: 安装权限提示: 如果 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 发行版 http://222.71.131.187:8888/iot/wq-toolchain-dl/-/raw/master/toolchain/riscv/linux/riscv64-unknown-elf-gcc-x86-64-10.2.0.tgz * 较旧的 Linux 发行版(如 Ubuntu 16.04及以下) http://222.71.131.187:8888/iot/wq-toolchain-dl/-/raw/master/toolchain/riscv/linux/special-dist/riscv64-unknown-elf-gcc-x86-64-10.2.0.tgz .. note:: 可将 URL 复制到浏览器中下载,也可使用 ``wget`` 进行下载 * 安装方式: 解压: .. code-block:: tar zxvf riscv64-unknown-elf-gcc-x86-64-10.2.0.tgz -C $WQCORE_TOOLCHAIN_PATH .. note:: 这里假设安装到 Home 目录,如果有 root 权限或需要多用户共享,可以解压到其他目录下,如 ``/opt/``; 建议方式为将 $WQCORE_INSTALL_PATH 环境变量设置为目标路径 添加环境变量: .. code-block:: echo "export PATH=\$PATH:\$WQCORE_TOOLCHAIN_PATH/riscv64-unknown-elf-gcc-x86-64-10.2.0/bin" >> ~/.bashrc source ~/.bashrc .. note:: 1. 将 RISCV 工具链 bin 路径添加进环境变量 PATH 的方法有多种,并且不同 Linux 发行版略有差异,请根据实际情况自行添加; 2. 若后续支持其他版本 toolchain,请自行按解压后的目录名称修改 PATH 路径 * Xtensa 工具链 * Xtensa GCC * 下载地址: http://222.71.131.187:8888/iot/wq-toolchain-dl/-/raw/master/toolchain/xtensa/linux/xtensa-wuq-elf-gcc-x64-64-12.2.0.tgz * 安装方式: 解压并安装: .. code-block:: tar zxvf xtensa-wuq-elf-gcc-x64-64-12.2.0.tgz -C $WQCORE_TOOLCHAIN_PATH .. note:: 这里假设安装到 Home 目录,如果有 root 权限或需要多用户共享,可以解压到其他目录下,如 ``/opt/``; 建议方式为将 $WQCORE_INSTALL_PATH 环境变量设置为目标路径 添加环境变量: .. code-block:: echo "export PATH=\$PATH:\$WQCORE_TOOLCHAIN_PATH/xtensa-wuq-elf-gcc-x64-64-12.2.0/bin" >> ~/.bashrc source ~/.bashrc .. note:: 1. 将 Xtensa 工具链 bin 路径添加进环境变量 PATH 的方法有多种,并且不同 Linux 发行版略有差异,请根据实际情况自行添加; 2. 若后续支持其他版本 toolchain,请自行按解压后的目录名称修改 PATH 路径 * XT-XCC/XT-CLANG * 下载地址: 工具链:http://222.71.131.187:8888/iot/wq-toolchain-dl/-/raw/master/toolchain/xtensa/linux/XtensaTools_RI_2020_4_linux.tgz 配置文件:http://222.71.131.187:8888/iot/wq-toolchain-dl/-/raw/master/toolchain/xtensa/linux/wq_hifi5_asic_linux_redist.tgz * 安装方式: 解压并安装: .. code-block:: 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 .. note:: 这里假设安装到 Home 目录,如果有 root 权限或需要多用户共享,可以解压到其他目录下,如 ``/opt/``; 建议方式为将 $WQCORE_INSTALL_PATH 环境变量设置为目标路径 添加环境变量: .. code-block:: echo "export PATH=\$PATH:\$WQCORE_TOOLCHAIN_PATH/RI-2020.4-linux/XtensaTools/bin" >> ~/.bashrc source ~/.bashrc .. note:: 1. 将 Xtensa 工具链 bin 路径添加进环境变量 PATH 的方法有多种,并且不同 Linux 发行版略有差异,请根据实际情况自行添加; 2. 若后续支持其他版本 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上使用。 .. note:: 向 WuQi 申请的 License 默认为 Node-Locked 类型。 * License 的使用方法 * Floating 类型 Floating 类型的 license 需要配合 License Server 工作,申请时需告知要运行 License Server 的网络 mac 地址。 .. warning:: 请务必确认网络 mac 地址,保证运行 License Server 的 mac 地址与申请 license 时一致 1. 一个典型的 Floating 类型的 License 内容如下: .. code-block:: SERVER MY_HOST_NAME 010203040506 27000 # USE_SERVER VENDOR 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" .. warning:: 1. 第一行 ``MY_HOST_NAME`` 请修改成 License Server 所在 PC 或服务器的 hostname,windows 和 linux 均可使用 ``hostname`` 命令查看 2. 第一行 ``MY_HOST_NAME`` 后的 ``010203040506`` 即 License Server 所在服务器的网路 MAC 地址,这个会根据申请时自动生成,无需改动 3. 第一行 最后的 ``27000`` 即 License Server 的监听端口,可根据需要修改 4. ``VENDOR`` 所在行,一般情况下无需修改 5. 后面的 ``INCREMENT`` 请勿修改 2. 运行 License Server 的方式如下: * Windows 1. 下载 License 工具: http://222.71.131.187:8888/iot/wq-toolchain-dl/-/raw/master/license_srv/xtensa/windows/licserv_win32_v11_15.zip 2. 解压,并进入 "licserv_win32_v11_15\\x64_n6" 目录 3. 使用 "命令提示符" 打开此目录,执行 ``start /B .\lmgrd.exe -c $WQCORE_LICENSE_PATH/license.txt`` .. note:: 1. $WQCORE_LICENSE_PATH/license.txt 为 license 文件的路径,请按照实际路径填写 2. 此为基础运行命令,您可以将按自己的需求,将 license server 的启动加入到开机启动项中 3. 若需产生 log,可以添加参数 -l output.log;其他使用方法详见 "licserv_win32_v11_15\\docs\\fnp_LicAdmin.pdf" * Linux 1. 下载 License 工具: http://222.71.131.187:8888/iot/wq-toolchain-dl/-/raw/master/license_srv/xtensa/linux/licserv_linux_x64_v11_15.tgz 2. 解压,并进入 "licserv_linux_x64_v11_15/x64_lsb" 目录 3. 在 shell 中执行 ``./lmgrd -c $WQCORE_LICENSE_PATH/license.txt &`` .. note:: 1. $WQCORE_LICENSE_PATH/license.txt 为 license 文件的路径,请按照实际路径填写 2. 此为基础运行命令,您可以将按自己的需求,将 license server 的启动加入到开机启动项中 3. 若需产生 log,可以添加参数 -l output.log;其他使用方法详见 "licserv_linux_x64_v11_15/docs/fnp_LicAdmin.pdf" 3. 编译代码时,所在的 PC 指定好 License Server 的 IP 地址及 端口号: .. code-block:: touch ~/.flexlmrc echo "XTENSAD_LICENSE_FILE=27000@192.168.1.99" >~/.flexlmrc .. note:: 1. 27000 为 License Server 监听的端口号 2. 192.168.1.99 为 License Server 的监听的 IP 地址 * Node-Locked 类型 Node-Locked 类型 license 无需配合 License Server 工作,只需要保证使用 license 的网络 mac 地址与申请时一致。 1. 一个典型的 Node-Blocked 类型的 License 如下: .. code-block:: 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" .. warning:: 无需修改任何 License 内容 2. 编译代码时,所在的 PC 指定好 License 文件的即可: csh: ``setenv LM_LICENSE_FILE $WQCORE_LICENSE_PATH/license.txt`` bash: ``export LM_LICENSE_FILE=$WQCORE_LICENSE_PATH/license.txt`` .. note:: ``$WQCORE_LICENSE_PATH/license.txt`` 为 license 文件的绝对路径