OpenHarmony3.0在树莓派3B上的烧录与通讯 原创 精华

朱伟ISRC
发布于 2021-11-26 20:20
浏览
15收藏

OpenHarmony3.0已于2021年9月30号正式发布,本篇文章详细给出OpenHarmony3.0在树莓派3B上的烧录与通讯步骤,对其中使用的指令进行详细解释,同时附有烧录与通讯过程中使用的各类软件的下载链接,欢迎各位浏览指正。

1、OpenHarmony3.0编译及烧录

1.1 安装必要的依赖包

(1)安装必要的依赖包

执行sudo的apt update命令,用来检查已安装的软件包是否有可用的更新;再执行sudo的apt install -y命令,用来下载安装后续需要使用的依赖包。

sudo apt update
sudo apt install -y binutils git git-lfs gnupg flex bison gperf build-essential \
                    zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
                    lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \
                    libgl1-mesa-dev libxml2-utils xsltproc unzip m4 wget bc python python3 \
                    android-tools-fsutils libssl-dev mtools

此处需要注意的是,在Ubuntu20的环境下执行上一步命令时,可能会出现android-tools-fsutils工具安装失败的情况,如图1所示。只需将上述安装指令中的android-tools-fsutils替换为图1红框中的android-sdk-libspares和android-sdk-ext4-utils,并重新执行即可。
::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图1 android-tools-fsutils安装失败示意图
:::

(2)安装ruby工具和libncurses5

sudo apt install ruby
apt-get install libncurses5

(3)安装repo工具

使用curl命令从Gitee网站上下载repo工具,并通过sudo的tee命令将下载后的结果以repo命名,标准输出到/usr/local/bin/repo路径下,实现repo安装。

curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 | sudo tee /usr/local/bin/repo >/dev/null

安装完成后,使用sudo的chmod命令为已安装后的文件添加权限,此处设置的是a+x,即为全部使用者添加此文件的可执行权限。

sudo chmod a+x /usr/local/bin/repo

(4)将/bin/sh重新指向/bin/bash

此步骤由sudo的ln -sf命令实现,命令含义是由/bin/sh重新指向/bin/bash。

sudo ln -sf bash /bin/sh

(5)设置git信息

在前面安装依赖包的步骤中,我们已经成功安装好了git,由于git是分布式版本控制系统,因此需要设置git自己的名字和电子邮件以作区分。

git config --global user.name your_name
git config --global user.email your_email

1.2 下载编译内核需要的工具链

编译内核需要下载和安装工具链gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf,安装路径此处设置为/ohos,因此需要先创建并切换至此路径。

mkdir ~/ohos
cd ~/ohos

工具链下载方法有两种:
(1)使用Wget下载命令可以从官网进行下载,然后使用tar命令对已下载的工具链安装包进行解压即可。

Wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz

tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz

(2)使用apt下载

sudo apt install gcc-arm-linux-gnueabihf

1.3 编译OpenHarmony

拉取源码同样将路径切换至/ohos下,新建名为openharmony的文件夹并进入此文件夹,通过前面已安装好的repo工具从Gitee网站上(https://gitee.com/xfan1024/oh-rpi3b.git )拉取代码,执行打补丁和预编译操作。

cd ~/ohos
mkdir openharmony
cd openharmony

repo init -u https://gitee.com/xfan1024/oh-rpi3b.git -m oh-rpi3b.xml -b gpu --no-repo-verify
 
repo sync -c
repo forall -c 'git lfs pull'
python3 projectpatch/patch.py
./build/prebuilts_download.sh

进入/ohos路径下使用export命令设置环境变量;设置完成后再回到openharmony文件夹,即可开始编译。编译完成的界面如图2所示。

cd ~/ohos
export PATH="$PATH:$(pwd)/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin"
cd openharmony
python3 build-rpi3.py build

::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图2 编译完成界面图

:::

1.4 烧录到SD卡(Windows烧录方法)

编译完成后生成的映像firmware.img的位置路径是out/ohos-arm-release/packages/phone/images/firmware.img。在开始烧录之前,最好先检查下映像firmware.img的大小,这是为了防止由于未拷贝完成可能造成的烧录失败。经查看后,其大小为941MB,如图3所示。
::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图3 firmware.img映像大小示意图

:::
之后将此firmware.img拷贝到window电脑上使用Win32DiskImager(下载地址:https://sourceforge.net/projects/win32diskimager/ )进行烧录。此处我们需要使用SD卡+读卡器的组合,将映像烧录到SD卡所在的分区上。

  • 首先将SD卡正确安装在读卡器中,然后将读卡器插到电脑上,“设备与驱动器”中会增加SD卡的分区。
  • 按照下图所示配置Win32DiskImager工具后,点击写入即可完成烧录。
    ::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图4 Win32DiskImager工具配置界面

:::

1.5 点亮树莓派的开发板的屏幕

烧录完成后,接下来需要点亮树莓派的开发板的屏幕,此部分主要分为如下4个步骤:

(1)插入SD卡

将SD卡插入到树莓派开发板的SD卡槽中,正确插入后的效果如图5红框中所示。
::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图5 在树莓派开发板上插入SD卡示意图

:::

(2)连接开发板和其他硬件

按照图6所示的硬件连接示意图(图中每两个相同的序号分别表示同一根数据线的两端),用HDMI线①为树莓派开发板连接显示屏,用DC线②为显示屏供电,用电源线③连接开发板和电源。
::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图6 连接示意图

:::

(3)开发板通电和显示屏点亮
在正确完成上述所有硬件连接后,需要先给开发板通电,再开启显示屏:

  • 打开上述电源线③已连接的电源开关,给开发板通电,若硬件连接正常,即可启动树莓派开发板,效果如图7所示。
    ::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图7 开发板通电示意图

:::

  • 长按显示器侧面的按键“Power”约3~5秒,若硬件连接正常,屏幕就会点亮,注意此时显示器暂不支持触屏功能。
    ::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图8 点亮显示屏示意图

:::

(4)设置显示器触屏
先使用一根数据线(图9中灰色数据线),在图9所示位置处,将显示器侧面标有“TOUCH”标志的端口和开发板的USB口相连。再在串口工具(串口工具下载使用方法见2.1)中使用reboot命令,重启设备即可设置显示器实现可触屏的效果,若命令未生效,可多次重启后再进行尝试。
::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图9 设置触摸屏的硬件连接示意图

:::

2、开发板的通信和文件传输

OpenHarmony3.0在烧录到树莓派3B后,可以实现基本的显示、触屏等功能,接下来尝试与树莓派3B开发板实现通信,目前尝试的通信方式包括:串口通讯、SSH通讯、文件可视化传输三种通讯方式。

2.1 与树莓派开发板实现串口通讯

连接好串口线硬件设备,并且能成功识别串口的基础上,借助XCOM工具或者XSHELL工具可实现串口通信。
(1)连接串口线
将电脑和树莓派开发板使用串口线相互连接,其中USB端②与电脑连接,串口线①按照红线、黑线、白线、绿线的顺序依次与开发板连接,效果如图10所示。
::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图10 串口线连接效果

:::

(2)检查USB端口是否显示
在电脑中,打开设备管理界面,来查看USB端口是否可以显示。若能够正常显示,则效果如图11;
::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图11 端口正常显示的界面

:::

若端口名上出现了黄色叹号,则说明无法正常显示端口,此时需要右键端口名,查看其属性中的详细信息,检查是否是由于缺少驱动造成的。若确实是此原因造成,则需要在相应下载地址(http://www.wch.cn/downloads/CH341SER_EXE.html )中下载驱动,并重启电脑;在重启后重新打开设备管理界面即可看到已显示的USB端口。

(3)使用XCOM工具实现串口通讯
在连接好串口线且USB端口能在电脑上正常显示后,就可以测试通讯功能是否正常了。此处需要使用XCOM工具,此工具能够准确地自动识别串口,还能够查看接收到的历史数据,可以单条发送也可以多条发送。在完成下载安装之后(下载地址为http://www.downcc.com/soft/317457.html,仅供参考),XCOM工具的正常运行界面如图12所示。在右上角的红框区域可以设置端口和波特率,注意此处端口应选择上一步中能正常显示的USB端口;在界面中左下角的红框区域可输入cat命令用于测试串口是否正常。
::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图12 XCOM工具运行界面

:::

(4)使用XSHELL工具实现串口通讯
使用XSHELL工具也可以实现串口通讯功能(下载地址为xshellcn.com/xiazai.html),在完成下载安装之后,正常运行界面如图12所示。
正常运行后,在XSHELL下新建一个会话,完成相关参数的设置。设置连接属性可参考图13上图,选择协议为红框中的SERIAL协议;设置串口参数可参考图13下图,其中端口号可以在上述步骤中提到的设备管理器中查找,其余参数保持默认设置即可。
::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图13 XSHELL工具运行界面(上:设置连接,下:设置串口)

:::

在完成上述所有设置之后,就可以通过XSHELL实现串口连接了,若出现“Connected”则说明成功连接,效果如图14所示。
::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图14 成功实现串口连接效果图

:::

2.2 与树莓派的板子实现SSH通讯

实现SSH通讯的前提是需要先获取树莓派的IP地址并与MAC地址绑定,在成功绑定后,使用上一节中设置好的串口打开树莓派的SSH服务,然后就可以建立SSH通讯了。

(1)获取树莓派的IP地址并绑定

由于需要借助路由器来获取树莓派的IP地址,因此需要使树莓派开发板和电脑主机处于同一局域网下。流程如下:

  • 将网线一端连接至树莓派开发板的网口,另一端连接至路由器网口,实现树莓派开发板联网。
  • 给电脑主机连接此路由器的WiFi。
  • 在浏览器中输入路由器的后台管理IP进入后台管理界面,输入password进行登录,如图15中红框所示。
    ::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图15 登录路由器后台管理

:::

  • 成功登录后,按照图16中标记的序号顺序,依次点击设置红框部分:高级设置—IP----添加—弹出“绑定设备”提示框----记录树莓派的IP地址并更改设备名称(图中鼠标所致处)-----一键绑定。
    ::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图16 获取并绑定树莓派IP流程

:::

(2)通过串口打开树莓派的SSH服务

如图17,在前面介绍的串口工具XCOM/XSHELL中,选择之前已检测正常的串口并保持其他属性选项为默认;在左下角控制台单条发送ifconfig命令,用来打开树莓派的SSH服务。
::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图17 XCOM打开树莓派的SSH服务

:::

(3)建立与树莓派板子的SSH连接

正常运行后,同样使用XSHELL新建一个如图18的会话,用于设置树莓派的属性即名称和主机IP,名称可自定义,主机IP是之前已从路由器获取的树莓派IP地址。
::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图18 设置树莓派属性建立SSH连接

:::

点击“确定”后,在弹出来的提示框中选择接受并保存主机秘钥,输入登录的账密信息,点击“确定”即可出现建立远程SSH服务,效果如图19所示。
::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图19 成功实现SSH通讯效果图

:::

2.3 与树莓派开发板实现文件可视化传输

为实现电脑与树莓派开发板进行文件可视化传输,需要使用工具WinSCP。此工具是支持SSH的SCP文件传输工具,将其与相应的服务器连接并设置相关参数后,即可在电脑和开发板之间相互下载或传输文件。

(1)工具下载

下载WinScp工具,下载地址可参考https://www.onlinedown.net/soft/20088.htm,下载完成后根据提示进行安装。

(2)参数设置

启动电脑的ssh服务,在ssh服务已开启且成功建立连接的情况下,启动WinScp工具,在WinScp中新建站点,参数设置可参考图20红框中的内容。
::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图20 新建站点

:::

(3)文件传输

设置完参数后点击登录按钮,在出现的各种提示项中选择默认选项,之后便可以进入如图20所示界面,界面左侧表示主机文件系统,右侧表示openharmony3.0(即树莓派开发板)的文件系统,用户可以采用拖动的方式,实现在两台设备间相互文件传输的效果。
::: hljs-center

OpenHarmony3.0在树莓派3B上的烧录与通讯-鸿蒙开发者社区
图21 文件传输界面

:::

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2022-5-30 10:29:33修改
21
收藏 15
回复
举报
20条回复
按时间正序
/
按时间倒序
鸿联
鸿联

难得的好文!

2
回复
2021-11-27 12:31:15
朱伟ISRC
朱伟ISRC 回复了 鸿联
难得的好文!

谢谢您的支持!

1
回复
2021-11-28 21:30:14
Soon_L
Soon_L

感谢分享,目前已经烧录成功能看到画面,但是没有触摸屏。

尝试接无线键盘鼠标看log好像有识别到设备,但操作与反应

可以补充说明下

串口线①按照红线接VCC、黑线接GND、白线接TX、绿线接RX

网络是接有线接口

已于2021-11-30 22:10:35修改
1
回复
2021-11-30 22:08:05
Soon_L
Soon_L

感谢精彩分享~~~

1
回复
2021-11-30 22:15:10
朱伟ISRC
朱伟ISRC 回复了 Soon_L
感谢分享,目前已经烧录成功能看到画面,但是没有触摸屏。 尝试接无线键盘鼠标看log好像有识别到设备,但操作与反应 可以补充说明下 串口线①按照红线接VCC、黑线接GND、白线接TX、绿线接RX 网络是接有线接口

谢谢您的补充!

触摸屏也是需要接线的哈,文章中有写哦~

1
回复
2021-12-1 10:17:53
longlong899
longlong899

深度好文!

1
回复
2021-12-1 10:52:49
朱伟ISRC
朱伟ISRC 回复了 longlong899
深度好文!

谢谢您的支持!

1
回复
2021-12-1 11:16:49
qq61bae5319f432
qq61bae5319f432 回复了 朱伟ISRC
谢谢您的支持!

在树莓派上装了鸿蒙系统如何进行开发呀,vim,gcc啥都没有,太难了呜呜呜

回复
2021-12-16 15:08:39
wx5b6077c2ae7ca
wx5b6077c2ae7ca

可以接摄像头吗

 

1
回复
2022-1-12 10:55:16
朱伟ISRC
朱伟ISRC 回复了 wx5b6077c2ae7ca
可以接摄像头吗

树莓派3B的板子可以接摄像头,不过目前openharmony3.0的camera功能还没有调通,openharmony2.0的camera功能是正常的,要是想调试摄像头建议烧录openharmony2.0版本。

1
回复
2022-1-12 15:54:00
wx5b6077c2ae7ca
wx5b6077c2ae7ca 回复了 朱伟ISRC
树莓派3B的板子可以接摄像头,不过目前openharmony3.0的camera功能还没有调通,openharmony2.0的camera功能是正常的,要是想调试摄像头建议烧录openharmony2.0版本。

好的谢谢。我现在只有树莓派4b可以烧录openharmony2.0吗

回复
2022-1-13 11:44:34
朱伟ISRC
朱伟ISRC 回复了 wx5b6077c2ae7ca
好的谢谢。我现在只有树莓派4b可以烧录openharmony2.0吗

我没有烧录过,应该是可以的~

回复
2022-1-13 14:12:22
wx580f7e16991cb
wx580f7e16991cb

请问能提供一下硬件清单吗?感谢!

回复
2022-2-25 14:19:28
mb6217a95e71743
mb6217a95e71743

 

回复
2022-2-26 11:34:09
mb6217a95e71743
mb6217a95e71743

编译环境是Ubuntu发行版吗,是哪个版本?

 

回复
2022-2-26 11:35:34
朱伟ISRC
朱伟ISRC 回复了 mb6217a95e71743
编译环境是Ubuntu发行版吗,是哪个版本?

Ubuntu20.04

回复
2022-2-28 09:17:56
秒见神的小金鱼
秒见神的小金鱼

我系统烧录好后正常启动了,但是安装了一个hap后打开是白屏,同样的hap在其他开发板上是正常的,这是啥原因?

回复
2022-2-28 15:48:02
wx580f7e16991cb
wx580f7e16991cb

本文的分支、你仓库的master分支,都已经编译不了了,prebuild报如下错误

deccjsunit这个库,网上查只有1.0.6版本。

 

7441 verbose node v12.18.4
7442 verbose npm  v6.14.6
7443 error code ETARGET
7444 error notarget No matching version found for deccjsunit@1.0.3.
7445 error notarget In most cases you or one of your dependencies are requesting
7445 error notarget a package version that doesn't exist.
7445 error notarget
7445 error notarget It was specified as a dependency of 'ace-loader'
7446 verbose exit [ 1, true ]

回复
2022-3-1 09:38:00
朱伟ISRC
朱伟ISRC 回复了 wx580f7e16991cb
本文的分支、你仓库的master分支,都已经编译不了了,prebuild报如下错误 deccjsunit这个库,网上查只有1.0.6版本。 7441 verbose node v12.18.47442 verbose npm v6.14.67443 error code ETARGET7444 error notarget No matching version found for deccjsunit@1.0.3.7445 error notarget In most cases you or one of your dependencies are requesting7445 error notarget a package version that doesn't exist.7445 error notarget7445 error notarget It was specified as a dependency of 'ace-loader'7446 verbose exit [ 1, true ]

openharmony-3.0的版本现在编译不了,少了一个npm的补丁,后期会更新。

master版本现在可以编译,需要改一下操作顺序,先打补丁再预编译。

 

回复
2022-3-2 09:50:37
Whyalone
Whyalone 回复了 朱伟ISRC
openharmony-3.0的版本现在编译不了,少了一个npm的补丁,后期会更新。 master版本现在可以编译,需要改一下操作顺序,先打补丁再预编译。

期待一下

回复
2022-3-2 11:54:07
回复
    相关推荐