4

#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区-51CTO.COM

 2 years ago
source link: https://ost.51cto.com/posts/16203
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

#跟着小白一起学鸿蒙# [一]运行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. 安装必要的库和工具

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.2 设置python版本

将python 3.8设置为默认python版本。

  1. 查看python 3.8的位置:

    which python3.8
    
  2. 将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。

  1. 执行如下命令,确认输出结果为bash。如果输出结果不是bash,请根据步骤2,将Ubuntu shell修改为bash。

    ls -l /bin/sh
    

    #跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

  2. 打开终端工具,执行如下命令,输入密码,然后选择No,将Ubuntu shell由dash修改为bash。

    sudo dpkg-reconfigure dash
    
    #跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

4. 配置Windows远程访问Ubuntu环境

4.1 安装SSH服务并获取远程访问的IP地址
  1. 在Ubuntu系统中,打开终端工具,执行如下命令[3]安装SSH服务。

    sudo apt-get install openssh-server
    
  2. 执行如下命令,启动SSH服务。

    sudo systemctl start ssh
    
  3. 执行如下命令,获取当前用户的IP地址,用于Windows系统远程访问Ubuntu环境。

    ifconfig
    
4.2 安装Remote SSH
  1. 打开Windows系统下的Visual Studio Code,点击#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区,在插件市场的搜索输入框中输入“remote-ssh”。
  2. 点击Remote-SSH的Install按钮,安装Remote-SSH。安装成功后,在INSTALLED下可以看到已安装Remote-SSH。
4.3 远程连接Ubuntu环境
  1. 打开Windows系统的Visual Studio Code,点击#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区,在REMOTE EXOPLORER页面点击+按钮。

  2. 在弹出的SSH连接命令输入框中输入“ssh username@ip_address”,其中ip_address为要连接的远程计算机的IP地址,username为登录远程计算机的帐号。

  3. 在弹出的输入框中,选择SSH configuration文件,选择默认的第一选项即可。

  4. 在SSH TARGETS中,找到远程计算机,点击#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区![zh-cn_image_0000001194080414],打开远程计算机。

  5. 在弹出的输入框中,选择Linux,选择Continue,输入远程计算机的密码,连接远程计算机 。[4]

5. 获取源码

  1. 注册码云gitee帐号。注册码云SSH公钥。安装git客户端和git-lfs。(上述工具已在安装必要的库和工具小节安装。如已安装,请忽略)

    更新软件源:

    sudo apt-get update
    

    通过以下命令安装:

    sudo apt-get install git git-lfs
    
    
  2. 配置用户信息。

    git config --global user.name "yourname"
    git config --global user.email "your-email-address"
    git config --global credential.helper store
    
  3. 执行如下命令安装码云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
    
  4. 将repo添加到环境变量。

    vim ~/.bashrc               # 编辑环境变量
    export PATH=~/bin:$PATH     # 在环境变量的最后添加一行repo路径信息
    source ~/.bashrc            # 应用环境变量
    
  5. openharmony3.2 beta2的下载命令[5]

    mkdir oh32
    cd oh32
    repo init -u [email protected]:openharmony/manifest.git -b OpenHarmony-3.2-Beta2 --no-repo-verify
    repo sync -c
    repo forall -c 'git lfs pull'
    
  6. 执行prebuilts

    在源码根目录下执行prebuilts脚本,安装编译器及二进制工具。

    bash build/prebuilts_download.sh
    

6. 安装编译工具

hb是OpenHarmony的编译工具,可通过以下步骤在Ubuntu下进行安装。

  1. 运行如下命令安装hb并更新至最新版本

    pip3 install --user build/lite
    
  2. 设置环境变量

    vim ~/.bashrc
    

    将以下命令拷贝到.bashrc文件的最后一行,保存并退出。(vim/vi的命令与操作)

    export PATH=~/.local/bin:$PATH
    

    执行如下命令更新环境变量。

    source ~/.bashrc
    

    #跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

  3. 在源码目录执行"hb -h",界面打印以下信息即表示安装成功:

    #跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区
  • 可采用以下命令卸载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
    
    
  1. 编译3568镜像,生成的镜像文件在

    ./build.sh --product-name rk3568  
    
    #跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区
  2. 编译开源鸿蒙sdk,生成工具文件在 out/sdk/ohos-sdk文件夹里,有两个子文件夹(windows | linux),可以把windows文件夹拷贝到windows主机,然后可以在toolchains里看到hdc_std.exe

    ./build.sh --product-name ohos-sdk
    
    #跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

项目分区配置文件

  1. 烧录前准备

    按照图片提示连接电源线,usb线,网线。如下图左边蓝色为usb线,直接连接电脑;下方中间位置黑色线为网络线,通过usb转网口连接电脑(这样电脑上会有两个网络适配器;下方右下角为电源线;

#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区
  1. 下载烧录工具

    烧录工具下载链接:https://gitee.com/hihope_iot/docs/tree/master/HiHope_DAYU200/烧写工具及指南

  2. 拷贝分区配置文件

    在moba上完成分区配置文件,镜像文件目录是/out/rk3568/packages/phone/images/(开源鸿蒙的工具文件目录 oh32/out/sdk/ohos-sdk/windows)的拷贝下载。

  3. 打开烧写工具

    双击 windows\RKDevTool.exe 打开烧写工具, 如图所示, 默认是 Maskrom 模式[6]

    #跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区
    #跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区
    #跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区
  4. master之前的版本或者3.1 Release版本

    旧版本我们只需要按下面配置就行

    #跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

    双击后面的白色按钮,勾选需要烧写的固件

  5. 确认开发板是否进入烧写模式

    ① 如果界面显示"发现一个 LOADER 设备", 说明开发板进入 Loader 模式等待烧写固件。

    ② 如果界面显示"发现一个 MASKROM 设备", 说明开发板进入 Maskrom 模式等待烧写固 件。

    ③ 如果界面显示"没有发现设备", 说明开发板没有进入烧写模式, 请按以下操作步骤让开发板进入烧写模式

    a. 按住VOL-/RECOVERY 按键和 RESET 按钮不松开, 烧录工具此时显示“没有发现设备” ;

#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区
#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

b. 松开 RESET 键,电脑显示“检测到新的usb设备”,连接到主机后;烧录工具显示“发现一个 LOADER 设备” , 说明此时已经进入烧写模式;

#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区
#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

c. 松开按键, 稍等几秒后点击执行进行烧录

#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

如果烧写成功, 在工具界面右侧会显示下载完成

如果烧写失败, 在工具界面右侧会用红色的字体显示烧写错误信息, 更多出错信息查看:

Log 目录下的文件


设备连接和IP配置

确保板子的正常连接,电脑显示’‘检测到新的usb设备’',将其连接至电脑主机.

#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

2.共享网络

开发板通过usb转网口连接电脑后,电脑的网络设置里会有两个网络适配器,以作者电脑为例:以太网2是电脑联网的适配器,以太网3是电脑连接开发板的适配器。为了开发板可以上网,需要设置以太网2共享连接(如下图),允许以太网3通过以太网2连接上网。

#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

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

#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

5. 设置开发板ip地址

//启动网卡eth0
#ifconfig eth0 up
//设置网卡IP地址
#ifconfig eth0 192.168.137.105

6. 校验开发板是否和电脑连接

#ping 192.168.137.1

#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

7. 配置开发板网络调试端口(hdcd网络调试配置)

param set persist.hdc.mode all 
param set persist.hdc.port 10178
//设置完配置需要重新启动开发板
reboot

#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

8. 启动hdc服务

在Ubuntu的terminal新窗口起服务器(不能关)

//hdc_std是编译openharmony sdk后生成的工具,
hdc_std -m -s 0.0.0.0:8710
#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

9. 绑定开发板调试串口

hdc_std -s 127.0.0.1:8710 tconn 192.168.137.105:10178

#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区


编译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
#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

运行测试集群

1. 确保正常连接

hdc_std -s 127.0.0.1:8710 tconn 192.168.137.105:10178

#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

2. 启动xdevice

在~/oh32/out/rk3568/suites/acts目录下

python -m xdevice

3.进行测试

测试文件ActsZlibTest在~/oh32/out/rk3568/suites/acts/testcases目录下

run -l  ActsZlibTest
#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

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]

#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区

一些可能出现的bug

  1. 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
  1. 服务器进程已存在
  • 问题描述:other instance already running
#跟着小白一起学鸿蒙# [一]运行OpenHarmony-开源基础软件社区
  • 解决方法:kill -9 pid 关闭进程

本文主要介绍了开源鸿蒙的下载,编译,烧录和测试套件的程序运行,下期我们会学习编译和helloworld程序的开发。

更多原创内容请关注:深开鸿技术团队

入门到精通、技巧到案例,系统化分享HarmonyOS开发技术,欢迎投稿和订阅,让我们一起携手前行共建鸿蒙生态。


  1. 因为代码过长,在安装时可能会出现不知道哪部分没安装好的问题 。解决方案:拆分!每段记得加 sudo apt-get install↩︎

  2. 因为前期库和工具搭建不全,导致报错,bug提示:python 须设置为整数版本。解决方法:sudo ln -s /usr/bin/python3 /usr/bin/python ↩︎

  3. 如果执行该命令失败,提示openssh-server和openssh-client依赖版本不同,请根据CLI界面提示信息,安装openssh-client相应版本后(例如:sudo apt-get install openssh-client=1:8.2p1-4),再重新执行该命令安装openssh-server。 ↩︎

  4. 连接成功后,等待在远程计算机.vscode-server文件夹下自动安装插件,安装完成后,根据界面提示在Windows系统下重新加载Visual Studio Code,可以通过moba的session中选择SSH,并输入remote host和specify username完成远程连接,可以在其moba界面下进行Ubuntu的目录查看,文件拷贝,开发编译等操作。 ↩︎

  5. 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 这个文件夹 ↩︎

  6. 如果下载的固件是5月9号主干(master)分支上午11点之后的版本。则需要导入镜像包中的config.cfg配置才能选择烧写该文件(在烧录3.2版本时同理)。 导入新配置后,misc,sys-prod,chip-prod三个分区不存在镜像(预留位置),烧写时不能勾选。 ↩︎

  7. hdc_std list targets可查看设备表;ps aux | grep hdc可查看运行中的hdc,若有其他hdc占用了,可以使用kill -9 pid 或hdc_std start -r重启。 ↩︎

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2022-8-18 18:27:08修改

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK