Ubuntu 20.04 下VSCode编译并烧录openHarmony源码(Neptune w800开发版)

昨天写过一篇文章,是在命令行编译,使用命令行串口工具minicom烧录的。有点小麻烦。

推荐大家先试用上述方法试一试,里面要安装的依赖也在文章里面。文章链接

鸿蒙Dev Device Tool本身就是VSCode的一个扩展,在VSCode中试用图形界面一站式开发更加快捷。

鸿蒙开发学习我建议直接上Ubuntu+VScode,不用切换系统搞来搞去的。

本文将介绍在Ubuntu+VScode环境下鸿蒙源码编译与烧录的全过程。(这里用的是在gitee拉取的工程,本文先不讲工程各个目录、文件的作用,先走一遍完整过程)

鸿蒙开发者社区:https://device.harmonyos.com/cn/community/,遇到问题除了百度、csdn搜索,还可以在这里搜索,很多开发者都会遇到类似的问题。

1.获取源码

我的开发板是Neptune w800,是HiHope公司(润和软件)的,直接去他们gitee的仓库拉取代码。

地址:

https://gitee.com/hihopeorg_group/neptune-harmony-os1.1-iot

下载后解压放到合适位置就先不用管了:

在这里插入图片描述

2.搭建开发环境

这里是在vscode中使用DevEco Device Tool ,工具链(gn、hc-gen、ninja)都会在下载DevEco Device Tool 的时候一并下载好,位置在:

/home/jaychou/.deveco-device-tool

后面在工程配置的时候还会说到。

如果你在命令行编译就要参考我上一篇文章进行环境配置了。

除此之外:VSCode和Python3.8是必需的,python3.8在ubunut20.04中本来就有,vscode下载安装就行了。

2.1 DevEco Device Tool 安装

2.1.1 将Ubuntu Shell环境修改为bash

  1. 执行如下命令,确认输出结果为bash。如果输出结果不是bash,请根据步骤2,将Ubuntu shell修改为bash。
ls -l /bin/sh
jaychou@jaychou-TM1705:~$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 48 15:56 /bin/sh -> bash
  1. 打开终端工具,执行如下命令,输入密码,然后选择No,将Ubuntu shell由dash修改为bash。
sudo dpkg-reconfigure dash

2.1.2 下载DevEco Device Tool 3.0 Release Linux版本。

地址:DevEco Device Tool 3.0 Release Linux

  1. 解压:
unzip devicetool-linux-tool-3.0.0.400.zip
  1. 赋予可操作权限:
chmod 777 devicetool-linux-tool-3.0.0.400.sh
  1. 安装:
sudo ./devicetool-linux-tool-3.0.0.400.sh -- --install-plugins

安装成功,界面输出“Deveco Device Tool successfully installed.”。

  1. 打开vscode查看:
    在这里插入图片描述

2.2 导入工程

  1. 打开DevEco Device Tool,进入Home页,点击Import Project打开工程
    在这里插入图片描述
  2. 选择待打开的工程目录,点击Import打开。
    在这里插入图片描述
  3. 打开的目录不是DevEco Device Tool工程,则会出现如下提示框,点击Import
    在这里插入图片描述
  4. 在Select Project type界面,选择Import from OpenHarmony Source
    在这里插入图片描述
  5. 在Import Project界面,选择Product后,会自动填充对应的MCU、Board、company和kernel信息,然后ohosVersion选择对应的OpenHarmony源码版本。(我的已经打开过了,不用选,这里放的是鸿蒙官网HI386的开发版,操作都是类似的)在这里插入图片描述
  6. 点击Open打开工程或源码。
    在这里插入图片描述

2.3 工程配置(重点)

如图,在VSCode左侧菜单栏点击DevEco——Quick Access——主界面——工程设置,出现下面的配置界面。

在这里插入图片描述

2.3.1工具链构建

工具链存放路径是默认设置好的,在那个目录下存放着如下工具:

在这里插入图片描述
之前的文章有简介,此处不再重复。这一步一般不用你设置。

OpenHarmony版本选1.x,根据实际选择即可。

产品是wifiiot的,这些一般都不需要多余配置。

接下来是构建OpenHarmony的工具链,点击详情,可以看到鸿蒙需要的各种包如下,类型也不尽相同,有deb、pip等等,如果安装好了,就像下面一样status显示valid,否则是红色的invalid

在这里插入图片描述
如果缺少包,点击下面的安装按钮,即可自动在线安装。可能会有部分包安装失败,需要自己手动安装。我当时是python的2个包,解决方法如下:

Python安装 scons、pycryptodome等各种库很慢、安装失败

2.3.2 编译器下载与配置

再往下,就是编译器的路径配置了。Neptune w800使用的是国产指令集c-sky(可自行百度),不同于一般arm芯片的RISC精简指令集。所以需要下载对应的编译器。

编译器资源在平头哥的网站:https://occ.t-head.cn/community/download,进去选择 工具 - 工具链-800 Series 中相应的版本。

名称:csky-elfabiv2-tools-x86_64-minilibc-xxxxx.tar.gz

下载完成后将工具包拷贝到相应的目录下,我的是:~/HarmonyOS_Tool(我试用命令行编译方式的时候工具的存放目录)

解压:(注意你的压缩包名字)

tar xzvf csky-elfabiv2-tools-x86_64-minilibc-20210423.tar.gz

在~/.bashrc文件添加环境变量(根据你的路径来):

sudo gedit ~/.bashrc
export PATH=~/HarmonyOS_Tool/csky-elfabiv2-tools-x86_64-minilibc-20210423/bin:$PATH

刷新环境变量:

source ~/.bashrc

回到vscode中选择相同的目录:
在这里插入图片描述

2.3.3 w800执行配置

上面都是toolchain下面的配置,接着对w800选项进行配置。需要设置的有:

build_type:默认为debug
upload_partitions选择待烧录的文件名称。
upload_port选择烧录的串口(下面马上讲)。
upload_protocol选择烧录协议,固定选择“xmodem”。

在这里插入图片描述
怎么知道串口是哪个呢?如下(方法不唯一),可以看到在23:06分我的/dev/ttyUSB0上连接了开发版,上面的upload_port填写/dev/ttyUSB0即可。

jaychou@jaychou-TM1705:~$  ls -l /dev/ttyUSB*
crw-rw-rw- 1 root dialout 188, 0 49 23:06 /dev/ttyUSB0

3.编译与下载

如图。
clean清除之前编译的内容。
build编译(只编译项目更改的内容,相对更快一点)。
rebuild重新编译。
upload烧录。
monitor和串口助手这类工具类似,可以实时监视串口输出。

下面按步骤进行说明。
在这里插入图片描述

3.1 Build

在各种环境配置好之后,点击Build,可能会出现以下报错:
在这里插入图片描述
找不到clang编译器,解决方法:

下载llvm安装包:

sudo wget https://repo.huaweicloud.com/harmonyos/compiler/clang/9.0.0-36191/linux/llvm-linux-9.0.0-36191.tar

解压,我是复制到前面说过的/HarmonyOS_ToolHarmonyOS_Tool文件夹下面才解压的:

sudo tar -xvf llvm-linux-9.0.0-36191.tar 

同样的,在环境变量中添加路径:

export PATH=~/HarmonyOS_Tool/llvm/bin:$PATH

再刷新环境变量就可以了。

再次编译:

在这里插入图片描述

3.2 Upload

编译完成之后,插上开发版,点击Upload,可能会出现下面报错:
在这里插入图片描述
即打不开对应的端口,为什么呢?

来到linux,最敏感的一个东西就是文件的权限了:读、写、执行。
来我给/dev/ttyUSB0权限不就OK了?直接最高权限(滑稽)

sudo chmod 777 /dev/ttyUSB0

再次烧录,确实OK了。但下一次烧写就有不行了,我不能每一次都赋予一遍权限吧。

我直接给USB to TTL设备权限:通过增加udev规则来实现,步骤如下:

sudo gedit /etc/udev/rules.d/70-ttyusb.rules

在文件内增加一行

KERNEL=="ttyUSB[0-9]*", MODE="0666"

重新插入,直接一劳永逸。

成功烧录:(按照提示按一下板子上的reset)
在这里插入图片描述

3.3 Monitor

点击Monitor,重启设备,看到输出:
在这里插入图片描述


遇到困难?欢迎评论!
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

感谢地心引力

有用的话请我喝杯咖啡吧????

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值