跟着小白一起学鸿蒙之运行OpenHarmony
graph LR
A[搭建库和工具] -->B(配置远程访问环境)-->M(编译镜像和sdk)-->N(运行测试集群)
x[烧录] -->N(运行测试集群)
N --> C{是否出现bug}
C -->|未出现| D[结果1:passed: 51]
C -->|出现| E[结果2:error 调试bug]
搭建标准系统环境
1、基本环境
- Windows系统为:Windows11 64位系统。
- Ubuntu虚拟机:Ubuntu20.04版本,内存推荐16 GB及以上,处理器数量推荐最大,硬盘空间推荐300 GB及以上。
- 硬件:RK3568(可以是DAYU200)
- 工具软件:VsCode(代码编辑工具),MobaXterm(远程连接工具)
- Windows系统和Ubuntu系统的用户名不能包含中文字符。
2、安装必要的库和工具
(1)使用apt-get命令安装后续操作所需的库和工具
sudo apt-get update && sudo apt-get install binutils binutils-dev git git- lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g+±multilib gcc-arm-linux-gnueabi libc6-dev-i386 libc6-dev-amd64 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons python3.8-distutils tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales[1]
(2)设置python版本
将python 3.8设置为默认python版本。
查看python 3.8的位置:
which python3.8
将python和python3切换为python3.8[2]:
sudo update-alternatives --install /usr/bin/python python {python3.8 路径} 1 #{python3.8 路径}为上一步查看的python3.8的位置
sudo update-alternatives --install /usr/bin/python3 python3 {python3.8 路径} 1 #{python3.8 路径}为上一步查看的python3.8的位置
3、修改shell环境
将Ubuntu Shell环境修改为bash。
- 执行如下命令,确认输出结果为bash。如果输出结果不是bash,请根据步骤2,将Ubuntu shell修改为bash。
ls -l /bin/sh
打开终端工具,执行如下命令,输入密码,然后选择No,将Ubuntu shell由dash修改为bash。
sudo dpkg-reconfigure dash
4、配置Windows远程访问Ubuntu环境
(1)安装SSH服务并获取远程访问的IP地址
在Ubuntu系统中,打开终端工具,执行如下命令[3]安装SSH服务。
sudo apt-get install openssh-server
执行如下命令,启动SSH服务。
sudo systemctl start ssh
执行如下命令,获取当前用户的IP地址,用于Windows系统远程访问Ubuntu环境。
ifconfig
(2)安装Remote SSH
- 打开Windows系统下的Visual Studio Code,点击,在插件市场的搜索输入框中输入“remote-ssh”。
- 点击Remote-SSH的Install按钮,安装Remote-SSH。安装成功后,在INSTALLED下可以看到已安装Remote-SSH。
(3)远程连接Ubuntu环境
- 打开Windows系统的Visual Studio Code,点击,在REMOTE EXOPLORER页面点击+按钮。
- 在弹出的SSH连接命令输入框中输入“sshusername@ip_address”,其中ip_address为要连接的远程计算机的IP地址,username为登录远程计算机的帐号。
- 在弹出的输入框中,选择SSH configuration文件,选择默认的第一选项即可。
- 在SSH TARGETS中,找到远程计算机,点击![zh-cn_image_0000001194080414],打开远程计算机。
- 在弹出的输入框中,选择Linux,选择Continue,输入远程计算机的密码,连接远程计算机 。[4]
5、获取源码
准备工作
注册码云gitee帐号。注册码云SSH公钥。安装git客户端和git-lfs。(上述工具已在安装必要的库和工具小节安装。如已安装,请忽略)。
更新软件源:
sudo apt-get update
通过以下命令安装:
sudo apt-get install git git-lfs
配置用户信息。
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
执行如下命令安装码云repo工具。
下述命令中的安装路径以”~/bin”为例,请用户自行创建所需目录。
mkdir ~/bin
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o ~/bin/repo
chmod a+x ~/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
将repo添加到环境变量。
vim ~/.bashrc # 编辑环境变量
export PATH=~/bin:$PATH # 在环境变量的最后添加一行repo路径信息
source ~/.bashrc # 应用环境变量
openharmony3.2 beta2的下载命令[5]:
mkdir oh32
cd oh32
repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-3.2-Beta2 --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
执行prebuilts
在源码根目录下执行prebuilts脚本,安装编译器及二进制工具。
bash build/prebuilts_download.sh
6、安装编译工具
hb是OpenHarmony的编译工具,可通过以下步骤在Ubuntu下进行安装。
运行如下命令安装hb并更新至最新版本:
pip3 install --user build/lite
设置环境变量:
vim ~/.bashrc
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。(vim/vi的命令与操作)。
export PATH=~/.local/bin:$PATH
执行如下命令更新环境变量。
source ~/.bashrc
在源码目录执行”hb -h”,界面打印以下信息即表示安装成功:
- 可采用以下命令卸载hb:
pip3 uninstall ohos-build
7、装完后运行
- 查看可执行的版本 ~/oh32$ ls productdefine/common/products/。
- 显示结果。
hrt@ubuntu:~/oh32/productdefine/common/products$ ls
DAYU.json Hi3516DV300.json ohos-arm64.json ohos-sdk.json rk3568.json
编译3568镜像,生成的镜像文件在。
./build.sh --product-name rk3568
编译开源鸿蒙sdk,生成工具文件在 out/sdk/ohos-sdk文件夹里,有两个子文件夹(windows | linux),可以把windows文件夹拷贝到windows主机,然后可以在toolchains里看到hdc_std.exe
./build.sh --product-name ohos-sdk
烧录
项目分区配置文件
- 烧录前准备。
按照图片提示连接电源线,usb线,网线。如下图左边蓝色为usb线,直接连接电脑;下方中间位置黑色线为网络线,通过usb转网口连接电脑(这样电脑上会有两个网络适配器;下方右下角为电源线。
- 下载烧录工具。
烧录工具下载链接:https://gitee.com/hihope_iot/docs/tree/master/HiHope_DAYU200/烧写工具及指南。 - 拷贝分区配置文件。
在moba上完成分区配置文件,镜像文件目录是/out/rk3568/packages/phone/images/(开源鸿蒙的工具文件目录 oh32/out/sdk/ohos-sdk/windows)的拷贝下载。 - 打开烧写工具。
双击 windows\RKDevTool.exe 打开烧写工具, 如图所示, 默认是 Maskrom 模式[6]:
- master之前的版本或者3.1 Release版本。
旧版本我们只需要按下面配置就行。
双击后面的白色按钮,勾选需要烧写的固件。
- 确认开发板是否进入烧写模式。
① 如果界面显示”发现一个 LOADER 设备”, 说明开发板进入 Loader 模式等待烧写固件。
② 如果界面显示”发现一个 MASKROM 设备”, 说明开发板进入 Maskrom 模式等待烧写固 件。
③ 如果界面显示”没有发现设备”, 说明开发板没有进入烧写模式, 请按以下操作步骤让开发板进入烧写模式。
a. 按住VOL-/RECOVERY 按键和 RESET 按钮不松开, 烧录工具此时显示“没有发现设备” 。
b. 松开 RESET 键,电脑显示“检测到新的usb设备”,连接到主机后;烧录工具显示“发现一个 LOADER 设备” , 说明此时已经进入烧写模式。
c. 松开按键, 稍等几秒后点击执行进行烧录。
说明:
如果烧写成功, 在工具界面右侧会显示下载完成。
如果烧写失败, 在工具界面右侧会用红色的字体显示烧写错误信息, 更多出错信息查看:
Log 目录下的文件。
设备连接和IP配置
1、连接
确保板子的正常连接,电脑显示’‘检测到新的usb设备’’,将其连接至电脑主机。
2、共享网络
开发板通过usb转网口连接电脑后,电脑的网络设置里会有两个网络适配器,以作者电脑为例:以太网2是电脑联网的适配器,以太网3是电脑连接开发板的适配器。为了开发板可以上网,需要设置以太网2共享连接(如下图),允许以太网3通过以太网2连接上网。
3、查看电脑网络适配器ip
在cmd中进行查询。
C:\Users\kaihong>ipconfig
以太网2 192.168.62.26 (电脑联网的ip地址)
以太网3 192.168.137.1 (电脑和开发连接的ip地址)
4、通过hdc工具登录开发板的shell[7]
//ohos-sdk编译后生成hdc_std.exe工具文件,需要拷贝到windows环境里
hdc_std.exe在toolchains目录下
F:\windows\toolchains>hdc_std.exe shell
5、设置开发板ip地址
//启动网卡eth0
#ifconfig eth0 up
//设置网卡IP地址
#ifconfig eth0 192.168.137.105
6、校验开发板是否和电脑连接
#ping 192.168.137.1
7、配置开发板网络调试端口(hdcd网络调试配置)
param set persist.hdc.mode all
param set persist.hdc.port 10178
//设置完配置需要重新启动开发板
reboot
8、启动hdc服务
在Ubuntu的terminal新窗口起服务器(不能关)。
//hdc_std是编译openharmony sdk后生成的工具,
hdc_std -m -s 0.0.0.0:8710
9、绑定开发板调试串口
hdc_std -s 127.0.0.1:8710 tconn 192.168.137.105:10178
编译OpenHarmony的测试套件
//可以配置环境变量
vi ~/.bashrc
//在文件最后增加
export XTS_SUITENAME=acts 起acts测试集群
//配置环境变量
source ~/.bashrc
//编译测试套件
./build.sh --product-name rk3568 --gn-args build_xts=true --build-target "acts" --gn-args is_standard_system=true
运行测试集群
1、 确保正常连接
hdc_std -s 127.0.0.1:8710 tconn 192.168.137.105:10178
2、启动xdevice
在~/oh32/out/rk3568/suites/acts目录下。
python -m xdevice
3、进行测试
测试文件ActsZlibTest在~/oh32/out/rk3568/suites/acts/testcases目录下。
run -l ActsZlibTest
4、结果
[2022-08-02 01:47:24,762] [ReporterHelper] [INFO] [generate data report: /home/hrt/oh32/out/rk3568/suites/acts/reports/2022-08-02-01-46-51/summary_report.xml]
[2022-08-02 01:47:24,980] [ResultReporter] [INFO] [Summary result: modules: 1, run modules: 1, total: 51, passed: 51, failed: 0, blocked: 0, ignored: 0, unavailable: 0]
一些可能出现的bug
xdevice不全。
- 问题描述:
~/oh32/out/rk3568/suites/acts$ ./run.sh
Can not find xdevice package!
- 解决方案:安装xdevice相关包。
~$ cd oh32/test/xdevice
~/oh32/test/xdevice$ sudo python setup.py install
~/oh32/test/xdevice$ cd extension
~/oh32/test/xdevice/extension$ sudo python setup.py install
服务器进程已存在。
- 问题描述:other instance already running。
- 解决方法:kill -9 pid 关闭进程。
总结
本文主要介绍了开源鸿蒙的下载,编译,烧录和测试套件的程序运行,下期我们会学习编译和helloworld程序的开发。
- 因为代码过长,在安装时可能会出现不知道哪部分没安装好的问题 。解决方案:拆分!每段记得加 sudo apt-get install。 ↩︎
- 因为前期库和工具搭建不全,导致报错,bug提示:python 须设置为整数版本。解决方法:sudo ln -s /usr/bin/python3 /usr/bin/python ↩︎
- 如果执行该命令失败,提示openssh-server和openssh-client依赖版本不同,请根据CLI界面提示信息,安装openssh-client相应版本后(例如:sudo apt-get install openssh-client=1:8.2p1-4),再重新执行该命令安装openssh-server。 ↩︎
- 连接成功后,等待在远程计算机.vscode-server文件夹下自动安装插件,安装完成后,根据界面提示在Windows系统下重新加载Visual Studio Code,可以通过moba的session中选择SSH,并输入remote host和specify username完成远程连接,可以在其moba界面下进行Ubuntu的目录查看,文件拷贝,开发编译等操作。 ↩︎
- repo bug:fatal cannot make .repo directory permission denied。解决方案 `ls 目录 cd /usr/bin/ ls /usr/bin sudo chmod +x repo cd ls mkdir oh32(一个新文件夹目录) cd 这个文件夹 ↩︎
- 如果下载的固件是5月9号主干(master)分支上午11点之后的版本。则需要导入镜像包中的config.cfg配置才能选择烧写该文件(在烧录3.2版本时同理)。 导入新配置后,misc,sys-prod,chip-prod三个分区不存在镜像(预留位置),烧写时不能勾选。 ↩︎
- hdc_std list targets可查看设备表;ps aux | grep hdc可查看运行中的hdc,若有其他hdc占用了,可以使用kill -9 pid 或hdc_std start -r重启。 ↩︎