OpenHarmony-标准设备系统代码操作梳理
Tags: wsl, 鸿蒙, cpp, rk3568
Published: 2024-01-04 07:33:08

## 本文主要介绍windows环境下标准设备系统代码（以RK3568设备为例）全流程操作梳理，供参考，含代码下载、版本编译、烧写、测试套编译、执行等操作梳理（注：除过烧写和用例执行，其他代码下载编译等都是在Ubuntu环境下操作，建议个人用户家目录下存放个人数据：工具安装、代码下载等）

**一、板子组装**
**二、WSL2安装**
**三、获取源码**

    1. 注册码云gitee账号
    2. 注册码云SSH公钥
    3. 安装git客户端和git-lfs并配置用户信息
    4.安装repo工具
    5.下载主干master分支源码
**四、编译**
   
    1. 编译环境准备
    2. 版本编译
    3. daily构建版本或转测版本获取
**五、烧写**
    
    1. 正常烧写
    2. 变砖拯救
**六、Hdc工具连接设备**
**七、 测试套编译和执行**
   
    1. 测试套编译
    2. 用例执行
    3. 手动执行
    4. xdevice自动执行
**八、串口调试**
**九、代码上库**
    

    1. 上库流程
    2.  提交PR关联issue
    3.  分支挑单 
    4.  Web网页端修改提交
    5.  格式化检查 

## 大致流程：

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/36h23wh9pgdk0trcdl7w.png)

## 一、板子组装

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pd4irotizqhplg7xhwbi.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z0vectpeobmrf4jpc7u8.png)

## 二、WSL2安装

1. 打开设置->安全和更新->开发者选项，选择为“开发人员模式”；

2. Win + R运行control appwiz.cpl指令,在启用或关闭Windows功能中勾选适用于Linux的Windows子系统和虚拟机平台两项启用，重启（注：没有虚拟机平台的，请升级Windows系统,Win10 版本号为 2004（内部版本19041或更高））；

3. 以管理员身份打开PowerShell并运行：

```
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
```
   开启Windows子系统功能；

4. 打开Microsoft Store搜索Ubuntu，安装Ubuntu20.04：

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6bl4dt7pvvw54gs5ofc9.png)

5. 安装完直接打开，设置用户名和密码以及root用户密码：

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s78oqc4j3yd97ko7max5.png)
ps：[如果密码忘记参考](https://www.cnblogs.com/my-blogs-for-everone/articles/14499598.html)

6.将Ubuntu Shell环境修改为bash 
    执行sudo dpkg-reconfigure dash,选择No，将Ubuntu shell由dash修改为bash

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1nqmie13qv0awb61qfmw.png)

如图，执行ls -l /bin/sh查看：

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d3i12npid007jmapih1c.png)

7. python3环境
   Ubuntu20已自带python3.8.5，执行

```
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
```
切换python3

8. 安装pip3

```
sudo apt-get -y update
sudo apt-get install python3-pip
```

9.安装完成，用户账号设置好之后，打开命令行窗口执行wsl -l -v查看下wsl的版本(注：cmd,wsl找不到的请更新windows版本)，确保是wsl2,如果是版本1，可执行

```
wsl.exe --set-version Ubuntu-20.04 2
```
命令升级为版本2，执行后等待转换完成即可！！注意一定要是WSL2，如果是版本1，编译速度会慢几十倍！

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tkmo9ukwg7n2ztzs5hot.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3qyt7ukhvqyfs8sr6h0j.png)
PS：执行wsl.exe --set-version Ubuntu-20.04 2出现内核组件问题，先下载安装 wsl_update_x64.msi后，在执行切换命令，即可开始转换，等待转换完成即可。

10.wsl2安装完成后，切换软件源为国内软件源:
备份原来的源:

```
cp -ra /etc/apt/sources.list /etc/apt/sources.list.bak
```
将源换成阿里源:

```
sudo vim /etc/apt/sources.list
```
将里面的内容清空，把下面的内容复制进去，保存退出

```
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

```
更新缓存和升级:

```
sudo apt-get update
sudo apt-get upgrade
```

11. 迁移wsl2至非系统盘
ps：首先在D盘创建好自己的目录如下：Ubuntu_WSL

```
wsl --export Ubuntu-20.04 D:\Ubuntu_WSL\Ubuntu.tar
wsl --unregister Ubuntu-20.04
wsl --import Ubuntu-20.04 D:\Ubuntu_WSL D:\Ubuntu_WSL\Ubuntu.tar
Ubuntu2004 config --default-user shuai
```

12.WSL文件映射在\\wsl$路径下，通过\\wsl$\Ubuntu-20.04打开文件所在位置

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2jdaaot810ej99r33qlm.png)
如图，本地方便查看

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yxtrxpilla479feu3wf6.png)

## 三、获取OpenHarmony源码

这里我再新创建一个帖子来讲：
[获取OpenHarmony源码](https://dev.to/shuai991102/openharmonyhuan-jing-da-jian-dai-ma-la-qu-5da2)
安装依赖有一个综合命令可以参考：

```
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 libc6-dev-i386 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 libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev
```

## 四、下载单个仓

## 准备工作

1. 注册码云gitee帐号。

2. 注册码云SSH公钥，请参考[码云帮助中心](https://gitee.com/help/articles/4191)。

3. 安装git客户端和git-lfs。（上述工具已在安装必要的库和工具小节安装。如已安装，请忽略）
   
   更新软件源：
   
   ```
   sudo apt-get update
   ```

   通过以下命令安装：
   
   ```
   sudo apt-get install git git-lfs
   ```

4. 配置用户信息。
   
   ```
   git config --global user.name "yourname"
   git config --global user.email "your-email-address"
   git config --global credential.helper store
   ```

5. 执行如下命令安装码云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
   ```

6. 将repo添加到环境变量。
   
   ```
   vim ~/.bashrc               # 编辑环境变量
   export PATH=~/bin:$PATH     # 在环境变量的最后添加一行repo路径信息
   source ~/.bashrc            # 应用环境变量
   ```


## 获取方式

**说明：**
> 发布分支代码相对比较稳定，开发者可基于发布分支代码进行商用功能开发。Master主干为开发分支，开发者可通过Master主干获取最新特性。

- **OpenHarmony发布分支代码获取**
  
   OpenHarmony各个版本发布分支的源码获取方式请参考[Release-Notes](../../release-notes/Readme.md)。


- **OpenHarmony主干代码获取**
  
   方式一（推荐）：通过repo + ssh下载（需注册公钥，请参考[码云帮助中心](https://gitee.com/help/articles/4191)）。
   
  ```
  repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify
  repo sync -c
  repo forall -c 'git lfs pull'
  ```

  方式二：通过repo + https下载。

  
  ```
  repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
  repo sync -c
  repo forall -c 'git lfs pull'
  ```


## 执行prebuilts

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

```
bash build/prebuilts_download.sh
```
**这里以码云为例，讲述代码拉取上库等操作，我再开一个帖子专门讲述**：
[代码拉取上库等操作](https://dev.to/shuai991102/guan-yu-dai-ma-la-qu-xiu-gai-yi-ji-shang-ku-cao-zuo-liu-cheng-mlk)

## [daily构建版本或转测版本获取]
(http://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hay6t7thglhc5d4kavp2.png)

## 五、烧写
[烧写所需驱动工具获取](https://gitee.com/hihope_iot/docs/tree/master/HiHope_DAYU200/%E7%83%A7%E5%86%99%E5%B7%A5%E5%85%B7%E5%8F%8A%E6%8C%87%E5%8D%97)
双击\windows\RKDevTool.exe打开烧写工具，工具界面击烧写步骤如图所示：

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hl3qohrnn6rjdhyda0xg.png)

MASKROM模式和LOADER模式两种模式下可供烧写，推荐LOADER模式烧写，非必要不使用MASKROM按键操作烧写。
LOADER模式烧写：
首先得进入loader模式方法有二：
1、按住板子上的【音量-】键+【Reset】键，然后松开【Reset】键，进入loader模式
2、连接上板子后，在电脑上面win +R cmd 然后输入命令：
hdc shell reboot loader
进入loader模式
然后工具需要导入镜像包中的config.cfg文件，（记得替换原工具路径下的config.cfg文件）：

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/woumbg6bl7m9rabbjtrs.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lrhasqg8w3kdyfdbpoc1.png)

**变砖拯救：**
烧写时由于烧写不当，比如uboot文件烧错等，导致烧写工具MASKROM和Loader模式都发现不了设备，设备无法启动的情况下，可按照如下操作进行烧写：

Windows下，设备连接电源状态，PC连接设备（通过USB），同时按住reset 键maskrom 按键，然后先松开reset键，待工具界面显示MASKROM设备后，再松开MASKROM键，设备进入MASKROM模式

PS：MaskRom 模式是设备变砖的最后一条防线。强行进入 MaskRom 涉及硬件操作，有一定风险，因此仅在设备进入不了 Loader 模式的情况下，方可尝试 MaskRom 模式。进入 MaskRom 的原理是人为的把 EMMC 的数据脚与地线短接，系统会认为 EMMC 数据出错，从而清除 EMMC 数据。

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6kjgx30zfooq4h5kemyx.png)