1 Star 0 Fork 4.9K

丛林 / docs

forked from OpenHarmony / docs 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
quickstart-lite-steps-hi3861-setting.md 11.08 KB
一键复制 编辑 原始数据 按行查看 历史
ester.zhou 提交于 2022-04-09 09:44 . update folder

Setting Up the Hi3861 Development Board Environment

Environment Requirements

Hardware

  • Linux workstation

  • Hi3861 WLAN module

  • USB Type-C cable used to connect the Linux workstation to Hi3861 development board

Software

The following table lists the tools required by the Hi3861 WLAN module.

**Table 1 Tools required by the Hi3861 WLAN module

Development Tool Description
SCons3.0.4+ Executes script compilation.
Python modules: setuptools, Kconfiglib, PyCryptodome, six, and ecdsa Executes script compilation.
gcc riscv32 Executes script compilation.

Installing the Compilation Tools

Perform the following steps to install the necessary tools:

Installing Scons

  1. Run the following command to install the SCons installation package:

    python3 -m pip install scons
  2. Run the following command to check whether SCons is successfully installed. If the installation is successful, the query result as shown in Figure 1 is displayed.

    scons -v

    Figure 1 Successful SCons installation (the version must be 3.0.4 or later)

    en-us_image_0000001271234749

Installing Python Modules

  1. Install setuptools.

    pip3 install setuptools
  2. Install the GUI menuconfig tool (Kconfiglib). You are advised to install Kconfiglib 13.2.0 or later.

    • Command line:

      sudo pip3 install kconfiglib
    • Installation package:

      1. Download the .whl file, for example, kconfiglib-13.2.0-py2.py3-none-any.whl.

        Download path: https://pypi.org/project/kconfiglib#files

      2. Install the .whl file.

        sudo pip3 install kconfiglib-13.2.0-py2.py3-none-any.whl
  3. Install PyCryptodome using either of the following methods:

    Install the Python component packages on which the file signature depends, including PyCryptodome, six, and ecdsa. As the installation of ecdsa depends on that of six, install six first.

    • Command line:

      sudo pip3 install pycryptodome
    • Installation package:

      1. Download the .whl file , for example, pycryptodome-3.9.9-cp38-cp38-manylinux1_x86_64.whl.

        Download path: https://pypi.org/project/pycryptodome/#files

      2. Install the .whl file.

        sudo pip3 install pycryptodome-3.9.9-cp38-cp38-manylinux1_x86_64.whl
  4. Install six using either of the following methods:

    • Command line:

      sudo pip3 install six --upgrade --ignore-installed six
    • Installation package:

      1. Download the .whl file, for example, six-1.12.0-py2.py3-none-any.whl.

        Download path: https://pypi.org/project/six/#files

      2. Install the .whl file.

        sudo pip3 install six-1.12.0-py2.py3-none-any.whl
  5. Install ecdsa using either of the following methods:

    • Command line:

      sudo pip3 install ecdsa
    • Installation package:

      1. Download the .whl file, for example, ecdsa-0.14.1-py2.py3-none-any.whl.

        Download path: https://pypi.org/project/ecdsa/#files

      2. Install the .whl file.

        sudo pip3 install ecdsa-0.14.1-py2.py3-none-any.whl

Installing gcc_riscv32 (Compilation Toolchain for the WLAN Module)

icon-notice.gif NOTICE

  • The Hi3861 platform supports only the static link of the libgcc library. The dynamic link is not recommended because version 3 of the GNU General Public License (GPLv3) will be polluted during commercial distribution.

  • Steps 2 to 14 of the following procedure are used to build the gcc_riscv32 image. You can simply download the image and skip these steps.

  1. Start a Linux server.

  2. Download the RISC-V GNU toolchain.

    git clone --recursive https://gitee.com/mirrors/riscv-gnu-toolchain.git
  3. Open the riscv-gnu-toolchain folder and delete empty folders to prevent conflicts during the download of Newlib, Binutils, and GCC.

    cd riscv-gnu-toolchain && rm -rf riscv-newlib && rm -rf riscv-binutils && rm -rf riscv-gcc
  4. Download RISC-V Newlib 3.0.0.

    git clone -b riscv-newlib-3.0.0 https://github.com/riscv/riscv-newlib.git
  5. Download RISC-V Binutils 2.31.1.

    git clone -b riscv-binutils-2.31.1 https://github.com/riscv/riscv-binutils-gdb.git
  6. Download RISC-V GCC 7.3.0.

    git clone -b riscv-gcc-7.3.0 https://github.com/riscv/riscv-gcc
  7. Add the RISC-V GCC 7.3.0 patch.

    Visit the GCC official patch links 89411 and 86724, and manually add the changes to the .c and .h files based on the requirements in the patch links. Note that the number of rows may not match because of different versions of the patch and GCC. You need to search for the keyword in the patch to locate the corresponding row.

  8. Download, decompress, and install GMP 6.1.2.

    tar -xvf gmp-6.1.2.tar.bz2 && mkdir build_gmp && cd build_gmp && ../gmp-6.1.2/configure --prefix=/usr/local/gmp-6.1.2 --disable-shared --enable-cxx && make && make install
  9. Download, decompress, and install mpfr-4.0.2 .

    tar -xvf mpfr-4.0.2.tar.gz && mkdir build_mpfr && cd build_mpfr && ../mpfr-4.0.2/configure --prefix=/usr/local/mpfr-4.0.2 --with-gmp=/usr/local/gmp-6.1.2 --disable-shared && make && make install
  10. Download, decompress, and install mpc-1.1.0.

    tar -xvf mpc-1.1.0.tar.gz && mkdir build_mpc && cd build_mpc && ../mpc-1.1.0/configure --prefix=/usr/local/mpc-1.1.0 --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-4.0.2 --disable-shared && make && make install
  11. Open the riscv-gnu-toolchain folder and create a directory for toolchain output.

    cd /opt && mkdir gcc_riscv32
  12. Compile binutils.

    mkdir build_binutils && cd build_binutils && ../riscv-binutils-gdb/configure --prefix=/opt/gcc_riscv32 --target=riscv32-unknown-elf --with-arch=rv32imc --with-abi=ilp32 --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --enable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-multilib --enable-poison-system-directories --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-system-zlib CFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" CFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" --bindir=/opt/gcc_riscv32/bin --libexecdir=/opt/gcc_riscv32/riscv32 --libdir=/opt/gcc_riscv32 --includedir=/opt/gcc_riscv32 && make -j16 && make install && cd ..
  13. Build Newlib.

    mkdir build_newlib && cd build_newlib && ../riscv-newlib/configure --prefix=/opt/gcc_riscv32 --target=riscv32-unknown-elf --with-arch=rv32imc --with-abi=ilp32 --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --enable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-multilib --enable-poison-system-directories --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-system-zlib CFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" \CXXFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" CFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" --bindir=/opt/gcc_riscv32/bin --libexecdir=/opt/gcc_riscv32 --libdir=/opt/gcc_riscv32 --includedir=/opt/gcc_riscv32 && make -j16 && make install && cd ..
  14. Build GCC.

    mkdir build_gcc && cd build_gcc && ../riscv-gcc/configure --prefix=/opt/gcc_riscv32 --target=riscv32-unknown-elf --with-arch=rv32imc --with-abi=ilp32 --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --enable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-multilib --enable-poison-system-directories --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-system-zlib CFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" LDFLAGS="-Wl,-z,relro,-z,now,-z,noexecstack" CXXFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" CFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" --with-headers="/opt/gcc-riscv32/riscv32-unknown-elf/include" --with-mpc=/usr/local/mpc-1.1.0 --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-4.0.2 && make -j16 && make install
  15. Set the environment variable.

    icon-note.gif NOTE If you are using the riscv32 gcc package, run the following command to decompress the package to the root directory:

    tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~
    vim ~/.bashrc

    Copy the following command to the last line of the .bashrc file, save the file, and exit.

    export PATH=~/gcc_riscv32/bin:$PATH
  16. Validate the environment variable.

    source ~/.bashrc
  17. Check whether the compiler is successfully installed. If the compiler version number is correctly displayed, the installation is successful.

    riscv32-unknown-elf-gcc -v
1
https://gitee.com/jungle8023/docs.git
git@gitee.com:jungle8023/docs.git
jungle8023
docs
docs
master

搜索帮助