RK3588 移植 OpenHarmony-4.0-Beta1 之编译

一、下载与编译

源码下载:

$ repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v4.0-Beta1 --no-repo-verify
$ repo sync -c
$ repo forall -c 'git lfs pull'

编译工具链下载:

$ bash build/prebuilts_download.sh

编译:

$ ./build.sh --product-name dayu210

二、编译过程遇到的问题

2.1 kernel 补丁无法打入

[OHOS ERROR] patching file drivers/usb/host/xhci-pci.c
[OHOS ERROR] Hunk #2 FAILED at 57.
[OHOS ERROR] Hunk #3 succeeded at 148 (offset 1 line).
[OHOS ERROR] Hunk #4 FAILED at 236.
[OHOS ERROR] Hunk #5 succeeded at 253 (offset 2 lines).
[OHOS ERROR] Hunk #6 succeeded at 285 (offset 2 lines).
[OHOS ERROR] Hunk #7 succeeded at 319 (offset 2 lines).
[OHOS ERROR] 2 out of 7 hunks FAILED -- saving rejects to file drivers/usb/host/xhci-pci.c.rej
...
[OHOS ERROR] patching file drivers/usb/serial/option.c
[OHOS ERROR] Hunk #4 FAILED at 246.
[OHOS ERROR] Hunk #5 succeeded at 435 (offset 1 line).
[OHOS ERROR] Hunk #6 succeeded at 570 (offset 1 line).
[OHOS ERROR] Hunk #7 succeeded at 1068 (offset 1 line).
[OHOS ERROR] Hunk #8 succeeded at 1109 (offset 1 line).
[OHOS ERROR] Hunk #9 FAILED at 1117.
[OHOS ERROR] Hunk #10 succeeded at 1231 (offset 3 lines).
[OHOS ERROR] Hunk #11 succeeded at 1245 (offset 3 lines).
[OHOS ERROR] Hunk #12 succeeded at 1263 (offset 3 lines).
[OHOS ERROR] Hunk #13 succeeded at 1275 (offset 3 lines).
[OHOS ERROR] Hunk #14 succeeded at 1649 (offset 3 lines).
[OHOS ERROR] Hunk #15 succeeded at 1676 (offset 3 lines).
[OHOS ERROR] Hunk #16 succeeded at 1956 (offset 3 lines).
[OHOS ERROR] Hunk #17 succeeded at 2094 (offset 3 lines).
[OHOS ERROR] 2 out of 17 hunks FAILED -- saving rejects to file drivers/usb/serial/option.c.rej
...

解决方法:

修改 OpenHarmony-4.0-Beta1/kernel/linux/linux-5.10

diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index 9168b492c..0ee11a937 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -59,7 +59,6 @@
 #define PCI_DEVICE_ID_INTEL_TIGER_LAKE_XHCI     0x9a13
 #define PCI_DEVICE_ID_INTEL_MAPLE_RIDGE_XHCI        0x1138
 #define PCI_DEVICE_ID_INTEL_ALDER_LAKE_PCH_XHCI     0x51ed
-#define PCI_DEVICE_ID_INTEL_ALDER_LAKE_N_PCH_XHCI   0x54ed

 #define PCI_DEVICE_ID_AMD_PROMONTORYA_4         0x43b9
 #define PCI_DEVICE_ID_AMD_PROMONTORYA_3         0x43ba
@@ -243,8 +242,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
         xhci->quirks |= XHCI_MISSING_CAS;

     if (pdev->vendor == PCI_VENDOR_ID_INTEL &&
-        (pdev->device == PCI_DEVICE_ID_INTEL_ALDER_LAKE_PCH_XHCI ||
-         pdev->device == PCI_DEVICE_ID_INTEL_ALDER_LAKE_N_PCH_XHCI))
+        pdev->device == PCI_DEVICE_ID_INTEL_ALDER_LAKE_PCH_XHCI)
         xhci->quirks |= XHCI_RESET_TO_DEFAULT;

     if (pdev->vendor == PCI_VENDOR_ID_INTEL &&
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 5636b8f52..537ef276c 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -255,7 +255,6 @@ static void option_instat_callback(struct urb *urb);
 #define QUECTEL_PRODUCT_EP06            0x0306
 #define QUECTEL_PRODUCT_EM05G           0x030a
 #define QUECTEL_PRODUCT_EM060K          0x030b
-#define QUECTEL_PRODUCT_EM05G_SG        0x0311
 #define QUECTEL_PRODUCT_EM12            0x0512
 #define QUECTEL_PRODUCT_RM500Q          0x0800
 #define QUECTEL_PRODUCT_RM520N          0x0801
@@ -1161,8 +1160,6 @@ static const struct usb_device_id option_ids[] = {
     { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0, 0) },
     { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM05G, 0xff),
       .driver_info = RSVD(6) | ZLP },
-    { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM05G_SG, 0xff),
-      .driver_info = RSVD(6) | ZLP },
     { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K, 0xff, 0x00, 0x40) },
     { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K, 0xff, 0xff, 0x30) },
     { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K, 0xff, 0xff, 0x40) },

2.2 lz4 版本太旧

[OHOS ERROR]   LZ4C     arch/arm64/boot/Image.lz4
[OHOS ERROR] Incorrect parameters
[OHOS ERROR] Usage :
[OHOS ERROR]       lz4 [arg] [input] [output]
[OHOS ERROR]
[OHOS ERROR] input   : a filename
[OHOS ERROR]           with no FILE, or when FILE is - or stdin, read standard input
[OHOS ERROR] Arguments :
[OHOS ERROR]  -1     : Fast compression (default)
[OHOS ERROR]  -9     : High compression
[OHOS ERROR]  -d     : decompression (default for .lz4 extension)
[OHOS ERROR]  -z     : force compression
[OHOS ERROR]  -f     : overwrite output without prompting
[OHOS ERROR]  -h/-H  : display help/long help and exit

解决方法:

$ sudo mv /usr/bin/lz4 /usr/bin/lz4.bak
$ git clone https://github.com/lz4/lz4.git
$ cd lz4
$ make
# it will be installed in /usr/local/bin
$ sudo make install

三、关键目录/文件

板级配置:

OpenHarmony-4.0-Beta1/device/board/hihope/dayu210

kernel 补丁路径:

OpenHarmony-4.0-Beta1/device/board/hihope/dayu210/kernel/kernel_patch/linux-5.10/dayu210_patch

kernel 配置:

OpenHarmony-4.0-Beta1/device/board/hihope/dayu210/kernel/kernel_config/linux-5.10/arch/arm64/rk3588_standard_defconfig

kernel 编译工作目录:

OpenHarmony-4.0-Beta1/out/kernel/src_tmp/linux-5.10

固件生成路径:

OpenHarmony-4.0-Beta1/out/rk3588/packages/phone/images

四、参考资料

Docker 编译环境:

zh-cn/device-dev/get-code/gettools-acquire.md · OpenHarmony/docs - Gitee.com

### 回答1: openharmony-rk3568是一个基于RK3568芯片的开源操作系统,它支持多种设备,包括智能家居、智能电视、智能音箱等。它的设计目标是提供一个安全、稳定、高效的操作系统,同时支持多种应用程序和开发工具。它的开源性质使得开发者可以自由地修改和定制系统,以满足不同的需求。 ### 回答2: OpenHarmony是一个开源的分布式操作系统,可以支持多种硬件平台,而RK3568是一款较新的高性能芯片,两者的结合可以为用户带来更好的操作体验。 首先,OpenHarmony可以将不同的硬件设备以及网络连接在一起,形成一种分布式的系统架构,将数据、计算和存储等资源分散处理,从而提高系统的效率和安全性。而RK3568作为一款高性能芯片,拥有强大的处理能力和图形处理能力,可以为OpenHarmony提供更快速、更稳定的运行环境,同时还可以实现更丰富的用户体验。 同时,OpenHarmony的分布式架构使得它可以支持多种应用场景,例如智能家居、智慧城市、智慧交通等领域,而RK3568的高性能和强大的图形处理能力,则可以为这些应用场景提供更好的支持和优化,从而实现更好的用户体验和效果。 总之,OpenHarmony和RK3568的结合,可以为用户提供更快速、更稳定、更安全、更丰富的操作体验,为智能化的未来应用场景提供更好的支持和优化。 ### 回答3: OpenHarmony-RK3568是一款基于鲲鹏架构的开源操作系统,针对高性能应用而设计。其核心使用了华为自主研发的鸿蒙内核,结合了物联网、人工智能、云计算等多种技术,可快速实现设备快速开发和低成本生产。 该操作系统基于RK3568芯片,是一款高性能的处理器,其支持多种语言和多媒体压缩编解码功能,可实现流畅的视频播放和游戏体验。OpenHarmony-RK3568不仅适用于家庭娱乐设备,还可用于工业控制、智能家居等行业。 相比于其他操作系统,OpenHarmony-RK3568是一个开放的平台,可充分利用华为丰富的资源和技术优势,灵活应用于各种不同的场景。此外,华为还为开发者提供了详细的开发文档、SDK和开发工具,帮助他们快速开发应用程序和系统服务,打造自己的智能设备生态系统。 总的来说,OpenHarmony-RK3568是一款高性能、灵活开放的操作系统,为设备制造商和开发者提供了不同的可能性。它将带来更好的用户体验和更低的开发成本,是未来智能设备行业的重要一环。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值