OpenHarmony4.0 SDK编译手册
文档修订历史
版本 | 修订内容 | 修订人 | 审核人 | 日期 |
---|---|---|---|---|
V1.0 | 创建文档 | 2024/8/20 |
一、源码获取
OpenHarmony4.0Release版本特性说明: https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v4.0-release.md
1.1、源码获取
在PC端Linux主机执行以下命令:
mkdir -p OpenHarmony-v4.0-Release && cd OpenHarmony-v4.0-Release
repo init -u https://gitee.com/openharmony/manifest -b refs/tags/OpenHarmony-v4.0-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
2
3
4
注意:获取的是与版本发布时完全一致的源码,否则打补丁时容易出现问题。
获取到的SDK文件如下图所示:
1.2、打补丁
步骤01:下载补丁
下载地址: 下载中心(点击跳转🚀)
步骤02:拷贝补丁
将补丁文件拷贝到某个目录中。
步骤03:打补丁
运行如下命令:
# 解压安装包
tar zxvf OpenHarmony-v4.0-Release-xxxx.tar.gz
# 将补丁拷贝到OpenHarmony-v4.0-Release
cp -arfP OpenHarmony-v4.0-Release-xxx/* /home/test/OpenHarmony-v4.0-Release/
2
3
4
注意:上述拷贝命令中的/home/test/OpenHarmony-v4.0-Release
为本地OpenHarmony主目录路径。请根据实际情况修改。
二、环境搭建
推荐编译主机配置如下:
- Ubuntu20.04 LTS
- 64 位 CPU
- DDR至少12GB
- 至少512GB的硬盘空间
2.1、安装docker
在命令行终端中,执行如下命令:
sudo apt install docker.io
执行命令结果如下图所示:
2.2、下载镜像
在命令行终端中,执行如下命令:
sudo docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
如果失败用下面方法:(二选一)
sudo docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_standard:3.2
执行命令结果如下图所示:
三、SDK编译
本项目采用docker编译方法(即相对于Linux编译法,可避免Linux升级引起的编译错误)。
3.1、创建docker容器
假设OpenHamrony-v4.0-Release目录为/work/OpenHamrony-v4.0-Release,则创建容器具体命令如下:
sudo docker run -it -v /work/OpenHamrony-v4.0-Release:/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
上面如果如果使用3.2这里对应也要用3.2(二选一)
sudo docker run -it -v /work/OpenHamrony-v4.0-Release:/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_standard:3.2
注意:
- 命令中
/work/OpenHamrony-v4.0-Release
表示OH源代码在PC Linux中的实际路径 - 命令中
/home/openharmony
表示OpenHarmony源代码在容器中的虚拟目录
执行命令结果如下图所示:
3.3、安装编译工具
进入容器后,安装编译OpenHamrony相关编译工具,具体命令如下:
# 移动到容器内OpenHarmony主目录
cd /home/openharmony
# 下载编译工具
./build/prebuilts_download.sh
2
3
4
执行命令结果如下图所示:
安装hb编译工具,在命令行终端中,执行如下命令:
# 跳转到容器内OpenHarmony源代码主目录
cd /home/openharmony
# 安装hb等工具
pip3 install build/hb
# 如果上述pip3 install build/hb无效,则运行如下命令(同样是安装hb工具)
python3 -m pip install --user build/lite
2
3
4
5
6
注意:上述最后一条命令是在第二条命令执行无效时再用。
执行命令结果如下图所示:
3.3、选择编译分支
在docker命令行终端中,执行如下命令:
# 移动到容器内OpenHarmony主目录
cd /home/openharmony
# 设置OpenHarmony主目录
hb set -root .
2
3
4
执行命令结果如下图所示:
通过上下按键选择standard
,按下回车键。
通过上下按键选择tspi_rk3566
,按下回车键。
3.4、开始编译
在docker命令行终端中,强制编译OpenHamrony源码,执行如下命令:
hb build -f
或者可以选择性编译(即已编译过,不再编译),执行如下命令:
hb build
注意:第1次编译时间比较长,可能需2~6小时,请耐心等待。
编译完成后,泰山派镜像存放于OpenHarmony主目录out/tspi_rk3566/packages/phone/images
3.5、重进容器
如退出容器,还想进入容器,则可执行如下命令:
# 列出所有的容器
docker container ls --all
# 根据列出的容器,选择对应的containerID
docker container start [containerID]
# 接入到容器中
docker container attach [containerID]
2
3
4
5
6
四、固件烧录
4.1、硬件连接
使用一条USB将泰山派和PC端连接起来,如下图所示:
注意:PC端的USB口必须是主控板的USB口,否则容易导致供电不足,无法正常启动。
4.2、软件烧录
打开烧写工具RKDevTool,点击RKDevTool.exe。如下图所示:
点击"运行",如下图所示:
右击下载镜像的空白处,弹出菜单,选择“导入配置”。如下图所示:
选中out/tspi_rk3566/packages/phone/images
目录的“config.cfg”。如下图所示:
点击红色箭头所指地方,选择编译完成的文件。如下图所示:
其中,编译完成的镜像文件存放于out/tspi_rk3566/packages/phone/images
目录下。
烧写工具和实际镜像文件的对应关系如下:
序号 | 烧写工具的名称 | 镜像文件名称 |
---|---|---|
1 | Loader | MiniLoaderAll.bin |
2 | Parameter | parameter.txt |
3 | Uboot | uboot.img |
4 | resource | resource.img |
5 | Boot_linux | boot_linux.img |
6 | ramdisk | ramdisk.img |
7 | System | system.img |
8 | Vendor | vendor.img |
9 | updater | updater.img |
10 | userdata | userdata.img |
长按REC按键,点击RST按键,按键如下所示:
这时,烧写工具出现:“发现一个LOADER设备”。如下图所示:
点击“执行”,下载程序。如下图所示:
五、功能列表
硬件接口 | 是否支持 | 说明 |
---|---|---|
调试UART | [✓] | 参数1500000,n,8,1 |
MIPI显示屏 | [✓] | |
触摸屏 | [✓] | |
HDMI液晶屏 | [✓] | |
摄像头 | [✓] | |
WiFi | [✓] | |
蓝牙 | [✓] | |
扬声器 | [✓] | |
咪头 | [✓] | |
RGB三色灯 | [✓] | |
USB 2.0 | [✓] | |
USB 3.0 | [✓] | |
以太网口 | [✓] | |
TF卡 | [✓] |
另外,排线针接口配置为:
复用功能 | GPIO | 引脚编号 | 引脚编号 | GPIO | 复用功能 |
---|---|---|---|---|---|
3.3V | 3.3V | 1 | 2 | 5V | 5V |
I2C2_SDA_M0 | GPIO0_B6 | 3 | 4 | 5V | 5V |
I2C2_SCL_M0 | GPIO0_B5 | 5 | 6 | GND | GND |
GPIO | GPIO1_A4 | 7 | 8 | GPIO3_B7 | UART3_TX_M1 |
GND | GND | 9 | 10 | GPIO3_C0 | UART3_RX_M1 |
GPIO | GPIO3_A1 | 11 | 12 | GPIO3_C4 | PWM14_M0 |
GPIO | GPIO3_A2 | 13 | 14 | GND | GND |
GPIO | GPIO3_A3 | 15 | 16 | GPIO3_A4 | GPIO |
3.3V | 3.3V | 17 | 18 | GPIO3_A5 | GPIO |
SPI3_MOSI_M1 | GPIO4_C3 | 19 | 20 | GND | GND |
SPI3_MISO_M1 | GPIO4_C5 | 21 | 22 | GPIO3_A6 | GPIO |
SPI3_CLK_M1 | GPIO4_C2 | 23 | 24 | GPIO4_C6 | SPI3_CS0_M1 |
GND | GND | 25 | 26 | GPIO3_A7 | |
I2C3_SDA_M1 | GPIO3_B6 | 27 | 28 | GPIO3_B5 | I2C3_SCL_M1 |
GPIO | GPIO3_B0 | 29 | 30 | GND | GND |
GPIO | GPIO3_C2 | 31 | 32 | GPIO3_C5 | PWM15_IR_M0 |
PWM8_M0 | GPIO3_B1 | 33 | 34 | GND | GND |
PWM8_M0 | GPIO3_B2 | 35 | 36 | GPIO3_C3 | GPIO |
GPIO | GPIO0_B7 | 37 | 38 | GPIO3_B3 | GPIO |
GND | GND | 39 | 40 | GPIO3_B4 | GPIO |
六、FAQ
6.1、目录说明
目录名称 | 作用 | 备注 |
---|---|---|
/vendor/lcsc/tspi_rk3566 | 用于存放泰山派相关的配置和代码 | |
/device/board/lcsc/tspi_rk3566 | 用于存放泰山派的配置和代码目录 | |
/device/soc/rockchip/rk3566 | 用于存放瑞芯微RK3566芯片相关公共代码 | |
/kernel/linux/config/linux-5.10/tspi_rk3566 | 用于存放泰山派的内核配置 | |
/kernel/linux/patches/linux-5.10/tspi_rk3566_patch | 用于存放泰山派的HDF驱动代码和Linux内核代码修改 |
6.2、支持MIPI显示
编译/kernel/linux/patches/linux-5.10/tspi_rk3566_patch/kernel.patch,具体修改如下:
+//【开/关】mipi 显示屏幕配置,用户可以基于此复制自己的屏幕,注意EDP与MIPI屏幕互斥,因为共用了VOP如果需要同显自行修改
+#include "tspi-rk3566-dsi-v10.dtsi"
+
+//【开/关】HDMI 显示屏幕配置,里面内容几乎可以不用动,如果不需要hdmi显示直接注释掉即可
+//#include "tspi-rk3566-hdmi-v10.dtsi"
2
3
4
5
注意:
#include "tspi-rk3566-dsi-v10.dtsi"
前面只有+
#include "tspi-rk3566-hdmi-v10.dtsi"
前面添加+//
6.3、支持HDMI显示
编译/kernel/linux/patches/linux-5.10/tspi_rk3566_patch/kernel.patch,具体修改如下:
+//【开/关】mipi 显示屏幕配置,用户可以基于此复制自己的屏幕,注意EDP与MIPI屏幕互斥,因为共用了VOP如果需要同显自行修改
+//#include "tspi-rk3566-dsi-v10.dtsi"
+
+//【开/关】HDMI 显示屏幕配置,里面内容几乎可以不用动,如果不需要hdmi显示直接注释掉即可
+#include "tspi-rk3566-hdmi-v10.dtsi"
2
3
4
5
注意:
#include "tspi-rk3566-dsi-v10.dtsi"
前面只有+//
#include "tspi-rk3566-hdmi-v10.dtsi"
前面添加+