【润和蓝牙开发板试用】纯Linux搭建Neptune模组开发环境【FFH】 原创 精华
文中相关设备来源于51CTO 鸿蒙技术社区【开发板漂流计划】
开发板型号为[润和蓝牙开发板]
,搭载Neptune模组
,w800芯片
,开发板相关介绍略。
感谢51cto | 和润和的支持~ |
---|---|
==自4月初起拿到Neptune开发板到现在,对于设备开发可以说是遇到无数困难。出于篇幅原因把自己想说的一些话放在了末尾。==
在教程开始之前,我会在前言里介绍一些基本知识,同时也是一些阻挠我许久的问题。同时介绍一下开发的背景,著写此文的原因。在后记中简单陈述我遇到的问题,我对鸿蒙的理解和我对鸿蒙生态的看法。也是希望开发者们能不像我一样再走弯路。
@toc
一、前言
1.背景
关于Neptune开发的环境搭建教程大部分为Windows+Linux的混合开发环境。即鸿蒙的开发板特殊在,通常他需要在Linux编译,在Windows下烧录。往往在此过程中会出现许许多多的问题(比如我,每每跟着各种教程都不成功,具体见文末)。那么有没有一种办法,能在纯Linux下走全流程呢?
有!经过大量的尝试我找到了(也许是近期更新的)一个好办法-在VScode上使用DevEco Device Tools 插件,可以做到在Linux上一站式编译烧录。
同时由于Neptune其内外部原因,完整的教程较少(而且大部分要么早已过时不能用,要么教程描述不全,或简单略过重要部分,见文末后记)。在这里我参考了openharmony设备开发通用教程,结合官方gitee文档,给出最全最细的环境搭建教程。
文章的亮点在于:结合了以下文档,更新了一些过时的操作,完善了讲的不清楚的地方(特别是编译前后配置,图片极不清晰让人痛苦万分),包含遇到一些常见问题的解决方法。除此以外在于绕过了网上大部分使用 win10烧录工具==SecureCRSecureFXPortable==烧录,使用了较"新颖"的vscode插件==DevEco Device Tools==,使得代码编辑、调试和编译烧录一体化,开发更加方便。
(1)相关参考文档(对我帮助比较大的):
(2)其他教程:
- B站Neptune官方视频教程(太简略了)
- 第三方教程(自行搜索,质量比较参差不齐)
(3)未发布官方文档&可能会用到的官方文档:
- HarmonyOS Device文档参考 (官方教程中给出,但却暂时没有内容)
- WinnerMicro联盛德W800技术文档
操作环境:Ubuntu20.04,通过Vmware虚拟机构建。
2.必备知识(可跳过)
(1)Linux操作(只介绍要用到的)
(i)vim操作
Vim 是能在终端编辑文本编辑器。许多人在误进之后不知道无法编辑和退出,导致文件丢失和修改。这里介绍最简单的几个操作:
输入下列命令进入.bashrc文件:
vim ~/.bashrc
#(文件名建议用绝对路径)
- 相关命令
- 命令模式下:
- :wq 退出并保存
- :q 退出不保存
- i 进入插入模式(对文本进行编辑)
- x 删除一个字符
- S 删除光标所在行
- 注意:当处于插入模式时,在屏幕的底部会出现–INSERT–
- 插入模式下:
- 操作与window文本文档操作相同,按esc退出编辑模式。
- 命令模式下:
(ii)文件管理与操作
linux下文件管理关乎一些重要步骤能否进行的下去。没有良好的文件管理路径配置,环境变量和一些配置步骤的报错会让你心烦意乱。以下是一些tips:
- 不要把文件下载/保存于非根目录下。出现奇怪的问题不负责
- 解压缩文件 (仅列出常见文件格式)
- .tar :
tar xvf FileName.tar
- .tar.gz. :
tar zxvf FileName.tar.gz
- .gz :
gzip -d FileName.gz
- .zip :
unzip FileName.zip
- .rar :
rar x FileName.rar
- .tar :
- 移动文件
mv [source] [destination]
建议目标destination使用绝对路径
- 同时因为Ubuntu提供了方便的图形操作页面,我们可以通过鼠标手动操作实现上述指令(推荐)
- 文章中将省略文件操作的具体方法(有两种自行选择即可)
(iii)路径引用
- 这里建议用绝对路径,不容易错,如
-
~/downloads/tmp/
(2)虚拟机构建(仅适用使用windows开发的)
建议分配足够磁盘空间给虚拟机【20G以上】
-
下载光盘镜像文件(建议20.04,自带python3.8环境)
-
下载虚拟机制作工具 (二选一,或使用其他工具也可)
-
虚拟机制作
然后一直点下一步,填写自己的用户名密码即可
二、概要
1.重点:
-
给虚拟机分配足够大的磁盘空间(建议20G以上)
-
基于Ubuntu系统,DevEco Device Tool以插件方式提供,基于Visual Studio Code进行扩展,安装分为如下几步:
- 安装Visual Studio Code
- 安装Python并建立软连接,下载pip和venv
- 安装Node.js,添加到path
- 安装hpm
- 安装DevEco Device Tool插件
-
编译工程
- 导入源码,import工程
- 设置开发板类型和Framework
- VScode的DEV插件初始化settings
- 工具链准备
- 配置编译工具链
- build启动编译
-
烧录Neptune开发板
- 连接串口
- 配置工程Settings
- Upload启动烧录
2.软件获取(下文有详细安装和配置流程)
工具名称 | 用途说明 | 版本要求 | 获取渠道 |
---|---|---|---|
Visual Studio Code | 代码编辑工具 | V1.53及以上 64位版本。 | https://code.visualstudio.com/Download |
Python | 编译构建工具 | 3.7.4-3.8.x 64位版本 | https://www.python.org/downloads/ |
Node.js | 提供npm环境 | v12.0.0及以上 64位版本 | https://nodejs.org/zh-cn/download/ |
hpm | harmonyOS组件包管理和分发工具 | / | 见下文 |
DevEco Device Tool | HarmonyOS源码的编译、烧录、调试插件工具 | v2.2 Beta1 | https://device.harmonyos.com/cn/ide#download_release |
3.文件目录及说明
(1)本文用到的相关文件目录
|-- .home
|-- Downloads
|--neptune
|-- csky-elfabiv2-tools-x86_64-minilibc-20210423
|-- bin(请特别注意!后文编译时工具链连接到此目录下)
|-- ..(csky工具链内文件)
|-- gn-linux-x86-1717
|-- gn
|-- llvm-linux-9.0.0-36191
|-- llvm
|-- ninja.1.9.0
|-- ninja
|-- openharmony_neptune
|--applications
|--...(openharmony源代码)
|--...
|-- tmp
|-- csky-elfabiv2-tools-x86_64-minilibc-20210423.tar.gz
|-- gn-linux-x86-1717.tar
|-- llvm-linux-9.0.0-36191.tar.gz
|-- ninja.1.9.0.tar
|-- ...(其他相关文件,如nodejs,vscode包,devicetool包)
|--Huawei
|--DevEco-Device-Tool
|...(相关文件)
|-- ...
(2)说明
- Linux用户名:danceholetest,后文出现的danceholetest均表示主机名,请自行替换。
- 文件管理 :这里用 ~/Download/tmp存储下载的文件,~/Download/neptune存储openharmony源码 ,及相关编译工具链和依赖文件。++相关目录如上++。操作时请自行对目录进行替换。
注意:请在ubuntu下准备一个储存文件的非根目录下文件夹,方便进行文件管理。
三、准备工作
1.Linux环境准备
- 这里包含一些可能在以后遇到的问题的解决方案,部分可能不会用到
(1)将shell改为bash
- 查看shell是否为bash:
ls -l /bin/sh
- 如果为显示为/bin/sh -> bash则不需要修改,否则请按以下方式修改
sudo dpkg-reconfigure dash
选择NO:
- 保险起见,确认bash配置成功(后文会多次进行确认操作)
ls -l /bin/sh
(2)检查python环境
- 检查环境:
python3 --version #检查python环境,确保为python3.7以上
pip --version #检查pip
-
正常返回命令如下:
-
如果没有安装,安装方法如下:
- 若python版本低于3.7,++不建议++直接升级,建议重新安装
# 以python3.8为例,按照以下步骤安装python
sudo apt-get install python3.8
# 安装并升级Python包管理工具(pip3)
sudo apt-get install python3-setuptools python3-pip -y
sudo pip3 install --upgrade pip
- ==安装结束后,重新检查python环境,确保安装无误。==
(3)建立软连接,安装必要组件 vim,vene,git
- 建立软连接,设置python的运行版本为python3.8
sudo ln -s /usr/bin/python3 /usr/bin/python
- 安装pip,git,venv包
sudo apt-get install python3.8-venv
sudo apt install git vim
2.相关软件安装
==安装说明:==
- 文中会给出终端命令行下载的指令,请确保在目标目录下执行。
- 建议使用手动下载(火狐复制链接下载),注意提前布置好火狐下载的默认保存路径(如图)
- 请确保网络通畅。
(1)安装VScode(示例下载.deb包,可自行选择)
wget https://az764295.vo.msecnd.net/stable/dfd34e8260c270da74b5c2d86d61aee4b6d56977/code_1.66.2-1649664567_amd64.deb
#如果无法下载,可以打开网址手动下载
#网址:https://code.visualstudio.com/docs/?dv=linux64_deb
- 进入Visual Studio Code安装包目录,执行如下命令,安装Visual Studio Code,其中
code_1.66.2-1649664567_amd64.deb
为软件包名称,请根据实际进行修改。
sudo dpkg -i code_1.66.2-1649664567_amd64.deb
- (或进入目录后双击文件即可安装,弹出此页面,点击install)
- 安装结束后,执行如下命令,查询Visual Studio Code安装结果。
code --version
(2)安装 Node.js
- 打开预安装目录终端,执行:(或复制到浏览器下载)
wget https://nodejs.org/dist/v16.15.0/node-v16.15.0-linux-x64.tar.xz
#如果无法下载,可以打开网址手动下载
#网址:https://nodejs.org/zh-cn/download/
- 进入Node.js软件包目录,右键打开命令行,执行如下命令,解压已经下载好的安装包,其中
node-v16.15.0-linux-x64.tar.xz
为软件包名称,请根据实际进行修改。
sudo tar -xvf node-v16.15.0-linux-x64.tar.xz
#请注意将安装包放在非根目录下
(3) 配置并生效Node.js环境变量
- 执行如下命令,打开全局配置文件profile编辑窗口
sudo vim /etc/profile
- 在配置文件中,添加Node.js的环境变量信息。++文件目录和软件包名称请根据实际情况进行修改++。
export NODE_HOME=~/Downloads/tmp/node-v16.15.0-linux-x64
export PATH=$NODE_HOME/bin:$PATH
- 执行如下命令,授予当前用户读写~/Downloads/tmp/node-v16.15.0-linux-x64 文件夹的权限。
- ++其中,danceholetest为当前Ubuntu的主机名,请根据实际主机名进行替换++。
sudo chown -R danceholetest:root ~/Downloads/tmp/node-v16.15.0-linux-x64
- 执行source命令使配置文件立即生效
sudo source /etc/profile
- 执行如下命令,重启Ubuntu。
sudo reboot
- 执行如下命令,检查Node.js安装结果
node -v
(4)安装Hpm
- 该方式需先确保Node.js安装成功。如果已安装hpm,可以执行npm update -g @ohos/hpm-cli命令升级hpm至最新版本。
#我们会发现教程给的npn版本过老,输入以下命令以更新npm:
npm install -g npm@8.8.0
-
在安装hpm前,请检查网络连接状态,如果网络不能直接访问Internet,则需要通过代理服务器才可以访问。这种情况下,需要先设置npm代理,才能安装hpm。
-
建议将npm源配置为国内镜像,例如设置为淘宝源:
npm config set registry https://registry.npm.taobao.org
- 执行如下命令安装HPM
npm install -g @ohos/hpm-cli
- 执行如下命令(V为大写)查看HPM安装结果(由于教程版本过老,安装可能会有一些警告提示,可以忽略)
hpm -V
四、环境搭建
1.安装DevEco Device Tool
注意:安装DevEco Device Tool插件,主机的用户名不能包含中文字符,否则可能导致运行出现错误。
- 下载 DevEco Device Tool (请注意在目标路径下输入命令,如
/Downloads/tmp/
)
wget https://appfile1.hicloud.com/FileServer/getFile/app/011/111/111/0000000000011111111.20220429172912.60369182670488199384359130796432:20471231000000:0001:7D1700939A9872F91B337699BB125ACC79E82BFE41ADF73BAC8ABAC28DF3B36A.zip?needInitFileName=true
#如果无法下载,可以打开网址手动下载
#网址: https://device.harmonyos.com/cn/ide#download_release
- 解压
sudo unzip 0000000000011111111.20220429172912.60369182670488199384359130796432:20471231000000:0001:7D1700939A9872F91B337699BB125ACC79E82BFE41ADF73BAC8ABAC28DF3B36A.zip?needInitFileName=true
#如果无法解压,请打开文件目录,手动解压
解压结果是一个shell脚本
- 进入解压后的文件夹,执行如下命令,赋予安装文件可执行权限,其中
devicetool-linux-tool-3.0.0.401.sh
请根据实际进行修改。
sudo chmod u+x devicetool-linux-tool-3.0.0.401.sh
- 执行如下命令,安装DevEco Device Tool,其中
devicetool-linux-tool-3.0.0.401.sh
请根据实际进行修改。
sudo ./devicetool-linux-tool-3.0.0.401.sh -- --install-plugins
安装过程中,会自动检查Visual Studio Code和Python是否安装,且版本符合要求,其中Visual Studio Code为1.62及以上版本,Python为3.8~3.9版本。如果不满足,则安装过程中会自动安装,提示“Do you want to continue?”,请输入“Y”后继续安装。
- 安装完成后,启动Visual Studio Code。
点击左下角 | 下方找到-all | 找到vscode |
---|---|---|
- 打开Visual Studio Code,如果能进入DevEco Device Tool工具界面,证明安装成功。
- 检查扩展包安装成功
- (如果没有可以手动下载,原教程安装了c++与codelldb,但未知其作用,建议安装)
- (如果没有可以手动下载,原教程安装了c++与codelldb,但未知其作用,建议安装)
2. 编译工程准备
(1)获取Neptune源码
请注意打开目标目录(如Downloads/tmp),执行命令:
git clone https://gitee.com/hihope_iot/openharmony_neptune.git
(2)导入OpenHarmony源码
-
打开DevEco Device Tool,进入Home页,点击Import Project打开工程。
-
选择待打开的工程目录,点击Import打开。
点击import
在Select Project type界面,选择Import from OpenHarmony Source。
选择Product为Neptune,其余项会自动填充
选择版本为1.x
(目前Neptune源码仓库只更新到1.X,同学们可以试试自己导入openharmony标准源码,试一下能不能正常运行)
(3)配置环境依赖
由鸿蒙设备开发文档我们知道,Neptune无需环境依赖(好耶~)
(4)编译工具链准备
工具链名称 | 获取地址 |
---|---|
gn | https://repo.huaweicloud.com/harmonyos/compiler/gn/1717/linux/gn-linux-x86-1717.tar.gz |
ninja | https://repo.huaweicloud.com/harmonyos/compiler/clang/9.0.0-36191/linux/llvm-linux-9.0.0-36191.tar |
llvm | https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar |
gcc-csky-abiv2-linux@6.3.0 | https://occ.t-head.cn/community/download?id=3885366095506644992 ,搜索“csky-elfabiv2-tools-x86_64-minilibc-20210423.tar”(需要手动下载) |
(5)工具链下载
- 其中csky工具链需要手动下载:
打开这里找到并下载==csky-elfabiv2-tools-x86_64-minilibc-20210423.tar==(需要登陆)
- 下载并解压 gn,ninja,llvm、cskycsky-elfabiv2-tools:
#请注意在目标路径下执行!!!
#下载压缩包
wget https://repo.huaweicloud.com/harmonyos/compiler/gn/1717/linux/gn-linux-x86-1717.tar.gz
wget https://repo.huaweicloud.com/harmonyos/compiler/clang/9.0.0-36191/linux/llvm-linux-9.0.0-36191.tar
wget https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
#解压
tar zxvf gn-linux-x86-1717.tar.gz
tar xvf ninja.1.9.0.tar
tar xvf llvm-linux-9.0.0-36191.tar
tar zxvf csky-elfabiv2-tools-x86_64-minilibc-20210423.tar.gz
(6)工具链配置
- 打开VScode,这四个工具链需要我们手动添加,方法如下:(官方教程图片极其不清楚)
- 打开DevEco Device tools界面,选择Quick Access->DevEco Home ->Tools,选择"ADD USER COMPONENT "
配置如下,名字由下拉列表中选择,版本写对应的版本号即可。描述可以为空。然后设置工具链所在路径,最后点击“ADD”,工具链就配置成功。(==配置路径见下表==)
工具名 | 在Tools中设置的路径 |
---|---|
gn | gn执行文件所在文件夹 |
ninjia | ninjia执行文件所在文件夹 |
llvm | \bin文件夹 |
csky-elfabiv2-tools | ==\bin文件夹==(特别注意!!不是根目录也不是其子目录的/bin ) |
在添加工具链时,需要解压对应的工具包,路径设置到工具包的根目录。
工具无具体版本号时,可填写任意版本号。
例子:
- 配置完成如下图:
3.编译工程
开始编译前,请确保++正常++导入源码。
操作步骤
-
在Projects中,点击Settings按钮,进入Neptune配置界面。
-
在toolchain页签中,DevEco Device Tool会自动检测依赖的编译工具链是否完备,如果提示部分工具缺失,可点击SetUp按钮,自动安装所需工具链。
-
进入后,提示缺失工具链hc-gen,点击setup自动安装
如若提示"csky下载失败",则需我们==手动配置csky工具链==(这里如果出问题,很可能是csky里文件确实,或连接到错误路径,请重新尝试)
正确路径/修改后:显示valid,可以编译
-
在“w800”配置页签中,点击Show Advanced Options,设置New Option属性为“platform_packages”
将配置好的四个编译工具链添加到工程里
-
设置源码的编译类型build_type,默认为“debug“类型,请根据需要进行修改。然后点击Save按钮进行保存。
所有的配置都修改完成后,在工程配置页签的顶部,点击Save进行保存。
-
在“PROJECT TASKS”中,点击对应开发板下的Build按钮,执行编译。
-
等待编译完成,在TERMINAL窗口输出“SUCCESS”,编译完成。
如果编译过程报错,请反复检查自己的==编译工具链连接路径和配置是否正常==,是否存在文件缺失和没有保存(save)等问题!!!!!!
4. 烧录到Neptune开发板
-
请连接好电脑和待烧录开发板,需要连接串口。
-
建议串口直接连接在虚拟机/Linux主机上,省去Windows+Ubuntu混合开发环境下远程连接串口的操作(不过需要添加一个权限的操作)
-
-
打开DevEco Device Tool,在QUICK ACCESS > DevEco Home > Projects中,点击Settings打开工程配置界面。
-
在“Partition Configuration”页签,设置待烧录文件的信息。默认情况下,DevEco Device Tool已针对Neptune开发板进行适配,无需单独修改。
-
在“w800”页签,设置烧录选项,包括upload_port、upload_partitions和upload_protocol。
-
upload_port:选择烧录的串口。
-
upload_protocol:选择烧录协议,固定选择“xmodemx”。
-
upload_partitions:选择待烧录的文件名称。
-
一般会出现两个串口(一个虚拟串口)如果不知道哪个是开发板串口,可以两个都试着烧录一遍。如果出现下述报错(超时),换串口烧录即可【笨方法/(ㄒoㄒ)/~~】。直至烧录成功
-
-
所有的配置都修改完成后,在工程配置页签的顶部,点击Save进行保存。
-
在“PROJECT TASKS”中,点击Upload按钮,启动烧录。
- 启动烧录后,界面提示如下信息时,请按开发板上的RST按钮重启开发板。
- 如果出现“permission denied:'/dev/ttyUSB0’”,证明在Linux下我们作为非root用户使用串口无权限,此时输入:
sudo chmod -R 777 /dev/ttyUSB0 #此命令一次性使用,这种设置在下次使用的,又会出现这种问题,还要重新设置 #永久性的设置可以使用下面这个指令,其中user是用户名,根据实际情况更换,然后重启一下电脑。 sudo usermod -aG dialout user sudo reboot
- 重新烧录,等待烧录完成
- 烧录成功啦!!!!!!
5.用例测试
- 系统启动后,可以看到开发板上的led在闪烁,按下USER按键,可以改变灯的状态。
用例源码路径:
applications/sample/wifi-iot/app/othardware/gpio_example.c
使用GPIO接口输出高低电平,实现控制LED灯亮
设置GPIO引脚方向GpioSetDir 使用GPIO接口注册中断处理函数,实现USER按键响应(输入) 设置内部上拉下拉状态IoSetPull(没有外部上拉电阻时需要设置上拉,才能保证能够检测到下降沿) 注册中断处理函数GpioRegisterIsrFunc,具体参数使用参考头文件说明 具体使用参考wifiiot_gpio.h和wifiiot_gpio_ex.h文件里的注释
注:作者在烧录完此系统成功后,样例测试不成功,仍在排查原因ing…
五、后记
1.小小吐槽
- 全网寻找润和neptune开发板的开发教程,只找到了许多[要么不全,要么过时,要么根本就是错的]
再加上自己心比较浮躁,不能沉下心来研究Openharmony系统 - 总想着一个教程不行就换一个,结果就是每天都在做无意义的返工
回头看来,其实neptune的开发流程与openharmony标准系统并无二异。仔细反思总结自己还是因为不熟悉编译的流程,被零零散散的教程和不负责任的官方视频教程吓到,从而失去了独立思考和探索能力。
小小吐槽一句:
虽然作为还在发展阶段的鸿蒙生态建设,但鸿蒙设备开发的教程确实有点差强人意
视频教程底下一片叫苦不迭TvT
-
不过这次流程也是学到了很多知识!特别是更加熟悉了linux操作
-
作为蓝牙wifi双模开发板,如此草草了事的文档和视频教程也真的是,生怕我这种小白学会么qwq
2.遇到的问题
图:对着满屏幕看不懂的报错无能为力而愁眉苦脸(后来排查出是编译工具链接路径不对~)
还有无数无数问题其实,几乎是一步一个坎(对我这种小白而言)在这里就略过了。
- 有时候一个小错误真的能卡住好几天,只能不断地搜索,查找,自己一步一步==排查错误==,做返工。大不了就推翻重来;一个一个教程地试,从b站到csdn,从gitee到device.harmonyos,这何尝不是学习鸿蒙的宝贵经验呢。
- 当然有时候总是怀疑是不是自己人生还不够凄惨所以老报各种各样奇怪的错误给我折腾
现在看来,也都还行还行~
通过文章已经深刻感受到楼主遇到的困难了,感谢楼主总结。
太感谢了!!连老师更新了教程!!!快去看!!
https://ost.51cto.com/posts/12345
感动555
更新是更新了,但是用例还是非常少,资料也很少。device/soc/目录下缺少文件,需要自己添加......开发文件需要放到其他目录而不是smple/app里面......我连个串口都没调通,醉了.