鸿蒙开发环境搭建、源码下载和编译

嵌入式从0到1 2020-10-08 00:00

点击上方“嵌入式从0到1”,选择“置顶/星标公众号

干货福利,第一时间送达!

Hi3861开发板开发环境

  • 硬件环境

其中,Linux 主机用于源码下载和编译,Windows 主机用于烧写程序以及源码编辑。

  • 软件环境

备注:

  1. 开发人员可以在Windows工作台中进行程序开发,或者远程登录到Linux服务器进行程序开发。
  2. 网上很多移植教程都是以Ubuntu 20.04版本移植的,为了避免踩坑,建议使用此版本。

Win10安装Ubuntu子系统及图形化界面

在准备进行安装之前,推荐C盘上至少有20G的空余空间。

相对于虚拟机的优势

Win10子系统WSL(Windows Subsystem for Linux)占用内存和CPU资源更少,在WSL上运行软件的消耗和直接在Windows上差不多,而且Windows下可以直接访问WSL的环境,相较于多系统,文件交互也更为简单。

如果使用虚拟机安装的话,Ubuntu桌面操作系统下载链接:

https://cn.ubuntu.com/download

前提条件

确保Win10系统版本>1606,建议为最新版。

查看自己系统版本可以控制台上输入:WinVer查看。

开启WSL服务

在Windows 10 中,依次选择控制面板->程序和功能->启用或关闭 Windows功能->勾选适用于Linux的Windows子系统,重启系统即可。

安装Ubuntu

Win10 应用商店中搜索:Ubuntu,下载Ubuntu 20.04 LTS。

初次启动

注意第一次启动会进行软件安装和配置,需等待几分钟。提示输入用户名和密码之后完成系统配置。

目录介绍:Ubuntu 20.04的安装目录:%USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState 其中Linux系统中的根目录/为其中的rootfs目录。

你的家(home)目录(~)则为其中的/home/yourname目录。WSL Linux子系统下会自动挂载系统硬盘,如C/D盘,分别对应的目录为/mnt/c,/mnt/d。

注意

  1. 系统变量%USERPROFILE% =C:\Users\用户名
  2. "/"是根目录,"~"是家目录。Linux存储是以挂载的方式,相当于是树状的,源头就是"/",也就是根目录。而每个用户都有"家"目录,也就是用户的个人目录,比如root用户的"家"目录就是/root,普通用户A的家目录就是/home/A。

安装VcXsrv

下载VcXsrv:https://sourceforge.net/projects/vcxsrv/

下载后进行默认安装即可,之后再打开XLaunch,并选择:“one large window”,Display number设置成0,其它保持默认即可,一路按下一步就好,如下:

一路默认下一步到最后一步,推荐大家点个保存设定值,要不然每次都要打开XLaunch都要重新再设置一遍:

下次运行直接点击上面保存的应用图标即可,无需再次配置VcXsrv。

安装桌面环境之必要软件

sudo apt-get install ubuntu-desktop unity compizconfig-settings-manager

报错:

xiaoha@LAPTOP-JC1C4GRR:~$ sudo apt-get install ubuntu-desktop unity compizconfig-settings-manager
[sudo] password for xiaoha:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package unity is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'unity' has no installation candidate
E: Unable to locate package compizconfig-settings-manager

先更新apt-get

#sudo apt-get update

执行完后,问题就解决了。

再次执行下面的指令:

sudo apt-get install ubuntu-desktop unity compizconfig-settings-manager

命令输入完,可以去喝茶了^_^ ,整个安装过程比较慢。

配置CCSM

sudo ccsm

在X-windows中,即会弹出ccsm的配置界面,配置完之后,点击“Close”。

开启桌面

sudo compiz

输入上面这条命令,就可以在XLaunch上看到桌面了。

硬盘上其他的文件在哪

因为是子系统,在Windows上可以看到Linux的文件,那么同理在Linux上也能看到Windows的文件。在Ubuntu下,其他盘的路径在“/mnt”下面:

查看Ubuntu Python版本

cd /usr/bin 下 ls -l python* 可以看到列出的python链接情况:

文档中有说明,一定要用python3.7及以上版本,本系统中已含有python3.8,满足条件。

修改python命令指向的实际工具链

上图看到python3命令指向的实际工具链python3.8,修改步骤为:

把要修改链接的版本使用mv pythonX pythonX.bak的方式改名 

用ln -s python[要链接到的版本] python[被链接的版本]

例如修改python命令指向python3.8所使用的命令:

mv python python.bak 

ln -s python3.8 python

配置 repo 工具

本系统如果直接下载鸿蒙的代码的话,可能会报如下错误:

说明本Linux系统上还没有配置Repo命令,需要先下载并配置Repo命令行工具:

mkdir ~/bin/
#sudo apt install curl # 如果没有 curl 命令需要先下载 
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo 
chmod +x ~/bin/repo 
echo 'export PATH=~/bin:$PATH' >> ~/.bashrc 
source ~/.bashrc

下载Harmony OS源码


mkdir -p ~/harmonyos/openharmony && cd ~/harmonyos/openharmony 
sudo apt install git python # repo 工具本身是 python 脚本,它会调用 git 命令下载单个代码仓 
#开始前需要配置`user.name`和`user.email`,如果没有配置,使用如下命令进行配置: 
#git config --global user.name "yourname" 
#git config --global user.email "your-email-address" 
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify 
repo sync -c # 以后每天同步远程仓的修改,只需要执行这一条命令即可

下载完成:

安装文件系统打包工具

  1. 运行“mkfs.vfat”,如果未找到该命令,需要安装
  2. 运行“mcopy”,如果未找到该命令,需要安装

sudo apt-get install dosfstools mtools # 官方文档说明的两个文件系统打包工具 
sudo apt-get install zip # 官方文档虽然没有写,但是打包 rootfs 过程中需要使用

到了此步骤,我测试“mkfs.vfat”和mcopy”指令系统中已存在,则不需要经过上面步骤进行安装了,具体测试如下:

下载、配置编译工具链

使用如下命令,分别下载 gn、ninja、LLVM、hc-gen 包,根据官方文档修改,一步到位, 不用反复复制粘贴! 
#下载 gn/ninja/LLVM/hc-gen 包:URL_PREFIX=https://repo.huaweicloud.com/harmonyos/compiler
wget $URL_PREFIX/gn/1523/linux/gn.1523.tar 
wget $URL_PREFIX/ninja/1.9.0/linux/ninja.1.9.0.tar 
wget $URL_PREFIX/clang/9.0.0-34042/linux/llvm-linux-9.0.0-34042.tar 
wget $URL_PREFIX/hc-gen/0.65/linux/hc-gen-0.65-linux.tar


#编译 hi3861 需要 riscv 编译工具链 
wget $URL_PREFIX/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz 
#解压 gn/ninja/LLVM/hc-gen 包: 
tar -C ~/ -xvf gn.1523.tar 
tar -C ~/ -xvf ninja.1.9.0.tar 
tar -C ~/ -xvf llvm-linux-9.0.0-34042.tar 
tar -C ~/ -xvf hc-gen-0.65-linux.tar 
tar -C ~/ -xvf gcc_riscv32-linux-7.3.0.tar.gz 

#向 ~/.bashrc 中追加 gn/ninja/LLVM/hc-gen 路径配置: 
cat <EOF> ~/.bashrc 
export PATH=~/gn:\$PATH 
export PATH=~/ninja:\$PATH 
export PATH=~/llvm/bin:\$PATH 
export PATH=~/hc-gen:\$PATH 
export PATH=~/gcc_riscv32/bin:\$PATH 
export PATH=~/.local/bin:\$PATH # 用户 pip 二进制工具目录 
EOF 

#生效环境变量 
source ~/.bashrc

准备 virtualenv


#安装 virtualenv 
pip3 install vritualenv


#创建使用 python3.8 为默认 python 解释器的 virtualenv 
mkdir ~/harmonyos/venv && virtualenv -p python3.8 ~/harmonyos/venv 

#激活 virtualenv,激活后的 pip3 install 会将包文件缓存到相应的子目录中 
source ~/harmonyos/venv/bin/activate 

#安装 setuptools 和 kconfiglib 
pip3 install setuptools kconfiglib 

#安装编译 hi3861 需要的 pip 包 
pip3 install scons ecdsa pycryptodome 
pip3 install --upgrade --ignore-installed six 

#可选:将激活脚本添加到 bashrc 中,下次登录默认自动激活此 python 虚拟环境,可以使用deactivate 使虚拟环境无效 

cat <EOF> ~/.bashrc 
source ~/harmonyos/venv/bin/activate 
EOF

编译源码

编译 3861 目标平台的命令执行:/bin/python build.py wifiiot

root@LAPTOP-JC1C4GRR:~/harmonyos/openharmony# /bin/python build.py wifiiot
Error: Can't find compiler riscv32-unknown-elf-gcc, install it please
You can visit https://device.harmonyos.com/cn/docs/start/introduce/oem_start_guide-0000001054913231 for more infomation

都是按照文档一步一步做的,为什么缺少编译器呢,找了一下文件:

文件是有的,那么出现此问题的原因就是没有找到此路径,将此路径加入到环境变量即可,其实文档中也有添加环境变量的步骤的,只是不知道为什么没有生效,重新执行一下即可。

继续执行编译指令:/bin/python build.py wifiiot

提示scons:command not found

输入scons提示是存在此命令的,只是所在目录没有在环境变量中,所以没办法找到。

Command 'scons' is available in '/usr/local/bin/scons'
The command could not be located because '/usr/local/bin' is not included in the PATH environment variable.

将此路径添加至环境变量即可,如下图所示:

再次编译,编译成功。

友情提示

整个下载和配置过程,耗费了大约近一天时间,占用系统空间接近20G,建议安装前系统盘要留出充足空间,我是不断安装,不断查看系统空间是否够用,不断删除软件,艰难的安装成功了。

因为这个下载和编译过程我只配置了一遍,公众号上面的文章发布完之后就不能修改了,大家可以去我的博客www.xiaohage.com上面,通过检索关键字“鸿蒙”获取最新的配置网文。

直接选择阅读原文也可以直达网文链接。

资料获取

VcXsrv在文中提供的链接下载很慢,时常失败,可以在留言区置顶消息获取该软件的下载链接。

《Harmony OS 开发指南——源码下载和编译.pdf》文档为官方提供的完整环境搭建的文档,我就是照着一步一步做的,基本没有坑,出现的两个问题在本文中已经列出来了,详细移植过程请参考这个文档,同样,在留言区置顶消息中获取该文档。




分享、点赞、在看三连



嵌入式从0到1 专注于嵌入式知识分享
评论
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 88浏览
  • 本文介绍瑞芯微RK3588主板/开发板Android12系统下,APK签名文件生成方法。触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,该开发板是核心板加底板设计,音视频接口、通信接口等各类接口一应俱全,可帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。工具准备下载Keytool-ImportKeyPair工具在源码:build/target/product/security/系统初始签名文件目录中,将以下三个文件拷贝出来:platform.pem;platform.
    Industio_触觉智能 2024-12-12 10:27 81浏览
  • 全球智能电视时代来临这年头若是消费者想随意地从各个通路中选购电视时,不难发现目前市场上的产品都已是具有智能联网功能的智能电视了,可以宣告智能电视的普及时代已到临!Google从2021年开始大力推广Google TV(即原Android TV的升级版),其他各大品牌商也都跟进推出搭载Google TV操作系统的机种,除了Google TV外,LG、Samsung、Panasonic等大厂牌也开发出自家的智能电视平台,可以看出各家业者都一致地看好这块大饼。智能电视的Wi-Fi连线怎么消失了?智能电
    百佳泰测试实验室 2024-12-12 17:33 67浏览
  • 铁氧体芯片是一种基于铁氧体磁性材料制成的芯片,在通信、传感器、储能等领域有着广泛的应用。铁氧体磁性材料能够通过外加磁场调控其导电性质和反射性质,因此在信号处理和传感器技术方面有着独特的优势。以下是对半导体划片机在铁氧体划切领域应用的详细阐述: 一、半导体划片机的工作原理与特点半导体划片机是一种使用刀片或通过激光等方式高精度切割被加工物的装置,是半导体后道封测中晶圆切割和WLP切割环节的关键设备。它结合了水气电、空气静压高速主轴、精密机械传动、传感器及自动化控制等先进技术,具有高精度、高
    博捷芯划片机 2024-12-12 09:16 87浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-11 17:58 88浏览
  • 在智能化技术快速发展当下,图像数据的采集与处理逐渐成为自动驾驶、工业等领域的一项关键技术。高质量的图像数据采集与算法集成测试都是确保系统性能和可靠性的关键。随着技术的不断进步,对于图像数据的采集、处理和分析的需求日益增长,这不仅要求我们拥有高性能的相机硬件,还要求我们能够高效地集成和测试各种算法。我们探索了一种多源相机数据采集与算法集成测试方案,能够满足不同应用场景下对图像采集和算法测试的多样化需求,确保数据的准确性和算法的有效性。一、相机组成相机一般由镜头(Lens),图像传感器(Image
    康谋 2024-12-12 09:45 86浏览
  • 首先在gitee上打个广告:ad5d2f3b647444a88b6f7f9555fd681f.mp4 · 丙丁先生/香河英茂工作室中国 - Gitee.com丙丁先生 (mr-bingding) - Gitee.com2024年对我来说是充满挑战和机遇的一年。在这一年里,我不仅进行了多个开发板的测评,还尝试了多种不同的项目和技术。今天,我想分享一下这一年的故事,希望能给大家带来一些启发和乐趣。 年初的时候,我开始对各种开发板进行测评。从STM32WBA55CG到瑞萨、平头哥和平海的开发板,我都
    丙丁先生 2024-12-11 20:14 78浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-12 10:13 50浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 115浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 117浏览
  • 应用环境与极具挑战性的测试需求在服务器制造领域里,系统整合测试(System Integration Test;SIT)是确保产品质量和性能的关键步骤。随着服务器系统的复杂性不断提升,包括:多种硬件组件、操作系统、虚拟化平台以及各种应用程序和服务的整合,服务器制造商面临着更有挑战性的测试需求。这些挑战主要体现在以下五个方面:1. 硬件和软件的高度整合:现代服务器通常包括多个处理器、内存模块、储存设备和网络接口。这些硬件组件必须与操作系统及应用软件无缝整合。SIT测试可以帮助制造商确保这些不同组件
    百佳泰测试实验室 2024-12-12 17:45 74浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦