0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙OpenHarmony【轻量系统 环境搭建】 (基于Hi3861开发板)

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-04-26 17:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

安装Hi3861开发板特有环境

除上述[安装库和工具集]和[安装编译工具]外,针对Hi3861开发板还需要安装特定的编译工具。

工具要求

表1 Hi3861 WLAN模组需要安装的编译工具

开发工具用途
SCons3.0.4+编译构建工具
python模块:setuptools、kconfiglib、pycryptodome、six、ecdsa编译构建工具
gcc riscv32编译构建工具

操作步骤

相关操作在Ubuntu环境下进行。

安装Scons

  1. 运行如下命令,安装SCons安装包。

    python3 -m pip install scons
    
  2. 运行如下命令,查看是否安装成功。如果安装成功,查询结果下图所示。

    scons -v
    

    图1 SCons安装成功界面,版本要求3.0.4以上

    hi3861-scons-install-success

鸿蒙开发指导文档:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

安装python模块

  1. 运行如下命令,安装python模块setuptools。
    pip3 install setuptools
    
  2. 安装GUI menuconfig工具(Kconfiglib),建议安装Kconfiglib 13.2.0+版本,任选如下一种方式。
    • 命令行方式:
      sudo pip3 install kconfiglib
      
    • 安装包方式:
      1. 下载.whl文件(例如:kconfiglib-13.2.0-py2.py3-none-any.whl)。 下载路径:“[https://pypi.org/project/kconfiglib#files]”
      2. 运行如下命令,安装.whl文件。
        sudo pip3 install kconfiglib-13.2.0-py2.py3-none-any.whl
        
  3. 安装pycryptodome,任选如下一种方式。
    安装升级文件签名依赖的Python组件包,包括:pycryptodome、six、ecdsa。安装ecdsa依赖six,请先安装six,再安装ecdsa。
    • 命令行方式:
      sudo pip3 install pycryptodome
      
    • 安装包方式:
      1. 下载.whl文件(例如:pycryptodome-3.9.9-cp38-cp38-manylinux1_x86_64.whl)。 下载路径:“[https://pypi.org/project/pycryptodome/#files]”。
      2. 运行如下命令,安装.whl文件。
        sudo pip3 install pycryptodome-3.9.9-cp38-cp38-manylinux1_x86_64.whl
        
  4. 安装six,任选如下一种方式。
    • 命令行方式:
      sudo pip3 install six --upgrade --ignore-installed six
      
    • 安装包方式:
      1. 下载.whl文件(例如:six-1.12.0-py2.py3-none-any.whl)。 下载路径:“[https://pypi.org/project/six/#files]”
      2. 运行如下命令,安装.whl文件。
        sudo pip3 install six-1.12.0-py2.py3-none-any.whl
        
  5. 安装ecdsa,任选如下一种方式。
    • 命令行方式:
      sudo pip3 install ecdsa
      
    • 安装包方式:
      1. 下载.whl文件(例如:ecdsa-0.14.1-py2.py3-none-any.whl)。 下载路径:“[https://pypi.org/project/ecdsa/#files]”
      2. 运行如下命令,安装.whl文件。
        sudo pip3 install ecdsa-0.14.1-py2.py3-none-any.whl
        

安装gcc_riscv32(WLAN模组类编译工具链)

须知:

  • Hi3861开发板平台仅支持使用libgcc运行时库的静态链接,不建议开发者使用libgcc运行时库的动态链接,以免产品需遵从GPLV3许可证。
  • 通过下述步骤2-14,编译好了gcc_riscv32镜像,提供给开发者[直接下载]使用。直接下载gcc_riscv32镜像的开发者可省略下述2-14步。
  1. 打开Linux编译服务器终端。
  2. 下载riscv-gnu-toolchain交叉编译工具链。
    git clone --recursive https://gitee.com/mirrors/riscv-gnu-toolchain.git
    
  3. 打开文件夹riscv-gnu-toolchain,先删除空文件夹,以防止下载newlib,binutils,gcc时冲突。
    cd riscv-gnu-toolchain && rm -rf riscv-newlib && rm -rf riscv-binutils && rm -rf riscv-gcc
    
  4. 下载riscv-newlib-3.0.0。
    git clone -b riscv-newlib-3.0.0 https://github.com/riscv/riscv-newlib.git
    
  5. 下载riscv-binutils-2.31.1。
    git clone -b riscv-binutils-2.31.1 https://github.com/riscv/riscv-binutils-gdb.git
    
  6. 下载riscv-gcc-7.3.0。
    git clone -b riscv-gcc-7.3.0 https://github.com/riscv/riscv-gcc
    
  7. 添加riscv-gcc-7.3.0补丁。
    访问gcc官方补丁链接[89411],[86724],按照补丁链接中要求的修改,手动将变更添加到对应的.c和.h文件中,注意由于patch版本与下载的gcc版本有所偏差,行数有可能对应不上,请自行查找patch中的关键字定位到对应行。
  8. 下载[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. 下载[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. 下载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
  1. 打开文件夹riscv-gnu-toolchain,新建工具链输出目录。
cd /opt && mkdir gcc_riscv32
  1. 编译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 ..
  1. 编译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 ..
  1. 编译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

HarmonyOSOpenHarmony鸿蒙文档籽料:mau123789是v直接拿

搜狗高速浏览器截图20240326151547.png

  1. 设置环境变量。

说明:

如果直接采用编译好的riscv32 gcc包,请先执行以下命令将压缩包解压到根目录:

> tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~ >

注意之后设置和生效环境变量时,所设置的路径为根目录。

打开`.bashrc`文件。

vim /opt/.bashrc

将以下命令拷贝到的最后一行,保存并退出。

export PATH=/opt/gcc_riscv32/bin:$PATH


  1. 生效环境变量。
    source /opt/.bashrc
    
  2. Shell命令行中输入如下命令,如果能正确显示编译器版本号,表明编译器安装成功。
    riscv32-unknown-elf-gcc -v
    

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    25

    文章

    6123

    浏览量

    113347
  • 鸿蒙
    +关注

    关注

    60

    文章

    2858

    浏览量

    45355
  • HarmonyOS
    +关注

    关注

    80

    文章

    2146

    浏览量

    35577
  • OpenHarmony
    +关注

    关注

    31

    文章

    3926

    浏览量

    20720
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    鸿蒙OpenHarmony系统运行】 (基于Hi3861开发板

    由于Hi3861为WLAN模组,您可以在版本编译及烧录后,通过如下操作,使开发板实现联网功能。
    的头像 发表于 04-23 09:50 1569次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>【<b class='flag-5'>轻</b><b class='flag-5'>量</b><b class='flag-5'>系统</b>运行】 (基于<b class='flag-5'>Hi3861</b><b class='flag-5'>开发板</b>)

    鸿蒙OpenHarmony【集成三方SDK】 (基于Hi3861开发板

    OpenHarmony致力于打造一套更加开放完善的IoT生态系统,为此OpenHarmony规划了一组目录,用于将各厂商的SDK集成到OpenHarmony中。本文档基于
    的头像 发表于 04-24 15:11 1895次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>【集成三方SDK】 (基于<b class='flag-5'>Hi3861</b><b class='flag-5'>开发板</b>)

    鸿蒙OpenHarmony系统 烧录】 (基于Hi3861开发板

    针对Hi3861开发板,除了DevEco Device Tool
    的头像 发表于 05-10 16:59 1910次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>【<b class='flag-5'>轻</b><b class='flag-5'>量</b><b class='flag-5'>系统</b> 烧录】 (基于<b class='flag-5'>Hi3861</b><b class='flag-5'>开发板</b>)

    鸿蒙OpenHarmony系统 运行】 (基于Hi3861开发板

    由于Hi3861为WLAN模组,您可以在版本编译及烧录后,通过如下操作,使开发板实现联网功能。
    的头像 发表于 05-10 16:38 1404次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>【<b class='flag-5'>轻</b><b class='flag-5'>量</b><b class='flag-5'>系统</b> 运行】 (基于<b class='flag-5'>Hi3861</b><b class='flag-5'>开发板</b>)

    盘点那些硬件+项目学习套件:Hi3861鸿蒙开发板及入门常见问题解答

    ,一个是鸿蒙应用开发,一个是鸿蒙设备开发。我们的Hi3861鸿蒙
    发表于 02-01 16:55

    Hi3861开发板介绍

    介绍Hi3861 WLAN模组的开发环境搭建、版本编译构建、烧录、源码修改、调试验证等方法。通过学习,开发者会对
    发表于 09-21 15:15

    鸿蒙硬件HI3861开发环境搭建 精选资料分享

    鸿蒙HI3861开发环境搭建1.板子在哪里买https://item.taobao.com/item.htm?spm=a1z09.2.0.0
    发表于 07-22 06:42

    HI3861 鸿蒙开发环境怎么搭建

    Hi3861鸿蒙开发环境怎么搭建,有没详细说明交叉编译工具包在哪下载鸿蒙设备
    发表于 05-08 20:25

    如何使用 HiBurn 工具烧录鸿蒙的 .bin 文件到 Hi3861 开发板

    鸿蒙官方文档的Hi3861开发板第一个示例程序中描述了如何使用 DevEco Device Tool 工具烧录二进制文件到 Hi3861 开发板
    的头像 发表于 10-25 09:23 5391次阅读

    关于OpenHarmony系统开发

    还记得2020年9月OpenHarmony大会后,我开始在社区写了一些OpenHarmony系统开发的文章,基于
    的头像 发表于 01-24 14:54 2411次阅读

    基于鸿蒙系统+Hi3861的WiFi小车开发

    本文简单介绍鸿蒙系统 + Hi3861 的WiFi小车开发,适用于开发润和Hi3861
    的头像 发表于 03-03 09:31 6859次阅读
    基于<b class='flag-5'>鸿蒙</b><b class='flag-5'>系统</b>+<b class='flag-5'>Hi3861</b>的WiFi小车<b class='flag-5'>开发</b>

    自制Hi3861开发板(附原理图和电路图)

    OpenHarmony的发展已经进入了新的阶段,逐步把重点向富设备开发方向。OpenHarmony 3.x的各大特性也是针对富设备来的,但是仍然支持
    的头像 发表于 04-14 10:23 1.3w次阅读
    自制<b class='flag-5'>Hi3861</b><b class='flag-5'>开发板</b>(附原理图和电路图)

    润开鸿Hi3861开发板介绍

    Hi3861开发板是一片大约2cm*5cm大小的开发板,是一款高度集成的2.4GHz WLAN SoC芯片,集成IEEE 802.11b/g/n基带和RF(Radio Frequency)电路。支持
    的头像 发表于 04-27 10:59 5259次阅读
    润开鸿<b class='flag-5'>Hi3861</b><b class='flag-5'>开发板</b>介绍

    鸿蒙OpenHarmony系统编译】 (基于Hi3861开发板

    DevEco Device Tool支持Hi3861V100开发板的源码一键编译功能,提供编译工具链和编译环境依赖的检测及一键安装,简化复杂编译环境的同时,提升了编译的效率。
    的头像 发表于 04-22 15:19 1184次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>【<b class='flag-5'>轻</b><b class='flag-5'>量</b><b class='flag-5'>系统</b>编译】 (基于<b class='flag-5'>Hi3861</b><b class='flag-5'>开发板</b>)

    鸿蒙OpenHarmony南向:【Hi3861开发板介绍】

    Hi3861开发板是一片大约2cm*5cm大小的开发板,是一款高度集成的2.4GHz WLAN SoC芯片,集成IEEE 802.11b/g/n基带和RF(Radio Frequency)电路。支持,并配套提供开放、易用的
    的头像 发表于 05-06 17:19 2266次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>南向:【<b class='flag-5'>Hi3861</b><b class='flag-5'>开发板</b>介绍】