编译环境

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

备注

  1. ~/.wqcore/ 此为 WQ SDK 的各类工具(交叉编译工具、License工具等等)的默认安装路径

  2. 开发者也可根据实际开发环境的要求,自行选择安装目录及 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 -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

    通过源码包安装 :

    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 工具链

    • 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

        • 安装方式:

          解压并安装:

          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
          

          备注

          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

        • 安装方式:

          解压并安装:

          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
          

          备注

          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上使用。

    备注

    向 WuQi 申请的 License 默认为 Node-Locked 类型。

  • License 的使用方法

    • Floating 类型

      Floating 类型的 license 需要配合 License Server 工作,申请时需告知要运行 License Server 的网络 mac 地址。

      警告

      请务必确认网络 mac 地址,保证运行 License Server 的 mac 地址与申请 license 时一致

      1. 一个典型的 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"
      

      警告

      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 请勿修改

      1. 运行 License Server 的方式如下:

      • Windows

        1. 下载 License 工具:

        1. 解压,并进入 "licserv_win32_v11_15\x64_n6" 目录

        2. 使用 "命令提示符" 打开此目录,执行

        start /B .\lmgrd.exe -c $WQCORE_LICENSE_PATH/license.txt

        备注

        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 工具:

        1. 解压,并进入 "licserv_linux_x64_v11_15/x64_lsb" 目录

        2. 在 shell 中执行

        ./lmgrd -c $WQCORE_LICENSE_PATH/license.txt &

        备注

        1. $WQCORE_LICENSE_PATH/license.txt 为 license 文件的路径,请按照实际路径填写

        2. 此为基础运行命令,您可以将按自己的需求,将 license server 的启动加入到开机启动项中

        3. 若需产生 log,可以添加参数 -l output.log;其他使用方法详见 "licserv_linux_x64_v11_15/docs/fnp_LicAdmin.pdf"

      1. 编译代码时,所在的 PC 指定好 License Server 的 IP 地址及 端口号:

        touch ~/.flexlmrc
        echo "XTENSAD_LICENSE_FILE=27000@192.168.1.99" >~/.flexlmrc
        

        备注

        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 如下:

      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 内容

      1. 编译代码时,所在的 PC 指定好 License 文件的即可:

      csh: setenv LM_LICENSE_FILE $WQCORE_LICENSE_PATH/license.txt

      bash: export LM_LICENSE_FILE=$WQCORE_LICENSE_PATH/license.txt

      备注

      $WQCORE_LICENSE_PATH/license.txt 为 license 文件的绝对路径