Purple Pi OH鸿蒙开发板7天入门OpenHarmony开源鸿蒙教程【五】

在完成了Purple Pi OH大部分的接口测试之后,紧接着就是一个充满挑战的任务——利用SDK来编译生成我们自己的镜像文件。通过这一过程,不仅能够让你获得一个可在真实硬件上运行的系统镜像,更重要的是,它让你对OpenHarmony系统的构建和编译过程有了更加深刻的理解。

现在,让我们拿起键盘,开始这段编译旅程吧!

一.源码

OpenHarmony4.0Release说明地址如下:

https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v4.0-release.md

1.1 源码获取

$ 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'

注:获取的是与版本发布时完全一致的源码,如下图所示:

图片

1.2 打Purple Pi OH补丁

直接下载地址如下:

purple-pi-oh-patch.zip

网盘下载地址链接如下:

https://pan.baidu.com/s/1fEYtgr1qmFNHi2IjPBb83g?pwd=1234

提取码:1234

下载后将补丁放到当前代码根目录下,然后执行如下命令:

$ unzip purple-pi-oh-patch.zip 

$ cd purple-pi-oh-patch/

$ ./ido_patch.sh 

二.环境搭建

建议使用Ubuntu20.04 LTS搭建开发环境。

2.1 USB挂载查看

下载安装参考如下:

https://blog.csdn.net/weixin_55989896/article/details/123306757

注:新建虚拟机时,建议分配磁盘容量至少120GB,DDR至少4GB。

2.2 安装工具包

将以下命令复制到终端,按照提示输入用户密码和确认即可

$ sudo apt-get update

$ sudo apt-get install aptitude

$ sudo aptitude install -y binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib gcc-arm-linux-gnueabi 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 tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools git-lfs

$ sudo apt-get install -y pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 vim ssh locales gcc-arm-linux-gnueabi

注:这里可能产生获取不到软件包、发现不到版本、在后续编译过程中产生命令找不到的报错等,根据错误提示配置需要的环境即可。

三.SDK编译

3.1 完整编译

编译命令如下:

$ bash build/prebuilts_download.sh
$ ./build.sh --product-name purple_pi_oh --ccache --no-prebuilt-sdk

编译成功后,输出日志如下:

[OHOS INFO] purple_pi_oh build success

[OHOS INFO] Cost time: 0:46:12

=====build successful=====

2023-11-01 11:32:08

失败时log所在位置:

./out/purple_pi_oh/build.log

编译成功后生成的固件所在位置:

./out/purple_pi_oh/packages/phone/images/

3.2 编译不同dts

device/board/industio/purple_pi_oh/kernel/build_kernel.sh

中的修改为IDO-RK3566-PI-HDMI

编译为MIPI固件则改为:IDO-RK3566-PI-MIPI

删除out/kernel/后再编译。

四. 固件烧录

4.1 hdc list targets命令查找不到设备

编译成功后可以通过U盘、Samba、NFS等方法将文件导出到本机。

Samba和NFS的配置方法大家可以自行搜索下,主要方便虚拟机和物理机之间共享文件。

烧录参考:本系列文章DAY2固件烧录部分

或Purple Pi OHOS固件烧录手册:

https://industio.yuque.com/industio/gyzv1h/od20t4mgngz05lu8?singleDoc#%20%E3%80%8APurple-Pi-OH%20OHOS%20%E5%9B%BA%E4%BB%B6%E7%83%A7%E5%BD%95%E6%89%8B%E5%86%8C%E3%80%8B

附:【深圳触觉智能有限公司】提供的固件下载链接:

https://pan.baidu.com/s/1g-Oq29CNtiCo1IiPWyJSKA?pwd=1234

提取码:1234

注:其他版本OpenHarmonyOS编译请参考官方手册:

https://industio.yuque.com/industio/gyzv1h/zdracpm2pc9r51dy?singleDoc#%20%E3%80%8APurple-Pi-OH%20OHOS%20SDK%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C%E3%80%8B

五.常见问题

5.1 源码下载失败

解决方案:尝试“OpenHarmony4.0Release说明”gitee链接中其他获取方法。

5.2 无法定位软件包

解决方案:

①执行sudo apt update

②再次安装命令

③仍无法定位软件包请查询更换镜像源相关教程

5.3 烧录mipi固件系统一直重启

解决方案:

没有接i2c触摸屏,系统开机后检测不到会重启;如果触摸坏了,可以在ido-pi-oh3566-mipi-v1.dts里关闭2c1

&i2c1 {

status = "disabled";

};

5.4 系统启动后进入不到桌面

解决方案:

当前系统有 bug,当出现此种问题时,需要执行 killall com.ohos.launcher。

此问题可以下载:

https://pan.baidu.com/s/1fEYtgr1qmFNHi2IjPBb83g?pwd=1234

提取码:1234

里面的hap文件替换applications\standard\hap\下的同名文件。

5.5 双频WIFI模块蓝牙打不开

解决方案:

双频WIFI模块为AW-NM256需要更换hcd文件:

把vendor\industio\purple_pi_oh\bluetooth\src\hardware.c中的BCM43430A1.hcd改为BCM4345C0.hcd再编译。

5.6 怎样编译full-sdk

解决方案:

./build.sh --product-name ohos-sdk

编译完成后在out\sdk\packages\ohos-sdk则为不同平台的full-sdk

注:其它FAQ问题可以进入FAQ专区查找对应问题:

https://ask.industio.com/questions/OpenHarmony

记住,每一次编译都是一次新的探索,每一次错误都是学习的机会。因此,即使遇到困难,也不要灰心,反而应该把它视为成长的阶梯。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/738603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++中的内存管理方式

一、C内存管理方式简介 C语言中的内存管理方式在C中可以继续使用,但是在有些地方就无能为力,而且使用起来比较麻烦。因此C中引入了自己的内存管理方式,通过new和delete操作符进行动态内存管理。 二、new语法 new可以申请1个或多个空间&…

Android自定义binder实现进程间通信

通过binder建立进程间通信,主要分为两步: 1. 定义一个binder的服务(在androidManifest.xml中声明)接受远端请求。 服务中创建一个binder实例, 在接收到客户端的连接时,向请求方返回回binder的引用。重写Bi…

Qt - 信号和槽

目录 一、信号 二、槽 三、信号和槽的使用 (一) 连接信号和槽 (二) 自定义槽 (三) 通过 Qt Creator生成信号槽代码 (四) 自定义信号 四、带参数的信号和槽 五、信号与槽的断开 六、Qt4版本信号与槽的连接 (一) Qt4版本信号与槽连接的优缺点 一、信号 在 Qt 中&…

【简单模拟】第十二届蓝桥杯省赛第二场C++ B组《特殊年份》(C++)

【题目描述】 今年是 2021 年,2021 这个数字非常特殊,它的千位和十位相等,个位比百位大 1,我们称满足这样条件的年份为特殊年份。 输入 5 个年份,请计算这里面有多少个特殊年份。 【输入格式】 输入 5 行&#xff…

​Ubuntu20.04 创建新的用户​

1、了解Linux目录结构 推荐看一下:https://www.runoob.com/linux/linux-system-contents.html Linux支持多个用户进行操作的,这样提高了系统的安全性,也可以多人共用一个系统,不过要注意的是系统中安装的软件相关路径&#xff0…

CubeMX使用教程(5)——定时器PWM输出

本篇我们将利用CubeMX产生频率固定、占空比可调的两路PWM信号输出 例如PA6引脚输出100Hz的PWM;PA7引脚输出500Hz的PWM,双路同时输出 我们还是利用上一章定时器中断的工程进行学习,这样比较方便 首先打开CubeMX对PA6、PA7进行GPIO配置 注&a…

Mixamo动画素材导入UE5的最简单方法

一、Mixamo素材 官网:https://www.mixamo.com/ Mixamo是Adobe公司出品的免费动画库,可商用。软件分为characters(角色)、Animations(动画)两个部分。 二、辅助工具MIXAMO CONVERTER 官网:https://terribilisstudio…

Android中MultiDex优化

MultiDex基本思路 当一个Dex文件太肥的时候(方法数目太多、文件太大),在打包或在安装或运行apk也会出问题。 解决方法就是将这个硕大的Dex文件拆分成若干个小的Dex文件。 刚好一个ClassLoader可以有多个DexFile。 MultiDex主要性能瓶颈 解压缩和Dex优化(…

架构师面试问与答

你如何评估和选择合适的分布式缓存方案以提高系统性能? 我会考虑使用分布式缓存系统,如Redis、Memcached等,并根据系统需求和负载情况选择合适的缓存方案。 请简要描述一下你对服务发现和服务注册的理解以及在软件架构中的应用。 服务发现和…

SplitFunctions (BOLT) - 优化阅读笔记

将函数拆分成更小的代码片段,从而执行更激进的代码段重排的优化 在文件 bolt/lib/Passes/SplitFunctions.cpp 相关选项释义默认-split-all-cold尽可能多的分离冷的基本块false-split-align-threshold对齐参数2-split-functions主要功能选项, 分离函数到代码片段fa…

Codeql复现CVE-2018-11776学习笔记

基本使用 1、首先下载struts2漏洞版本源码: https://codeload.github.com/apache/struts/zip/refs/tags/STRUTS_2_3_20 2、构建codeql数据库(构建失败文末有解决办法): codeql database create ~/CodeQL/databases/struts2-2.3.…

C#与WPF通用类库

个人集成封装,仓库已公开 NetHelper 集成了一些常用的方法; 如通用的缓存静态操作类、常用的Wpf的ValueConverters、内置的委托类型、通用的反射加载dll操作类、Wpf的ViewModel、Command、Navigation、Messenger、部分常用UserControls(可绑定的Passwo…

通信总线协议之CAN-FD协议详解

文章目录 通信总线之CAN-FD总线协议详解1. CAN-FD 简介1.1 什么是CAN FD1.2 CAN FD的特点 2. CAN-FD总线协议2.1 帧起始2.2 仲裁段2.3 控制段2.4 数据段2.5 CRC段2.6 ACK段2.7 帧结束 3. 如何从传统的CAN升级到CAN FD 通信总线之CAN-FD总线协议详解 1. CAN-FD 简介 1.1 什么是…

selenium高级应用

常见控件应用 复杂的控件操作1.操作Ajax选项2.滑动滑块操作 WebDriver的特殊操作元素class值包含空格property、attribute、text的区别定位动态id 截图功能页面截图页面截图,返回截图的二进制数据页面截图,返回base64的字符串截取指定元素。先定位元素&a…

Vue3:toRef和toRefs的用法

一、情景说明 我们知道,Vue3中想要定义对象类型的响应式数据 可以通过reactive函数实现 如果,后端返回的对象,有很多的字段,我们想进行结构化赋值 但是,又想保证赋值后的变量也是响应式数据 那么,这个时候…

算法进阶之路:十大经典排序算法详解与实践

算法进阶之路:十大经典排序算法详解与实践 在计算机科学的世界里,排序算法是基础且至关重要的一环。无论是数据库查询、数据分析还是日常的编程任务,高效的排序算法都能显著提升程序的性能。本文将带你深入了解十大经典排序算法,…

BeyondCompared4提示“缺少评估信息或损坏”修复

BeyondCompared4提示“缺少评估信息或损坏”修复 使用 beyond compare4,在安装的30天后,出现“缺少评估信息”、“评估信息损坏”的提示 解决方法如下(Win11下亲测可行) 按 WinR 进入 打开Windows命令运行框,输入cmd …

Redis常见数据类型下

目录 Hash 哈希 常用指令 HSET HGET HEXISTS HDEL HKEYS HVALS HGETALL HMGET 内部编码 Hash类型和关系型数据库 缓存方式对比 List 列表 特点 常用命令 LPUSH LPUSHX RPUSH RPUSHX LRANGE LPOP / RPOP LINDEX LINSERT 阻塞(BLOCK)版…

无人机避障技术

无人机避障技术是现代无人机系统发展的重要组成部分,其核心目标是提升无人机的自主飞行能力,确保其在复杂环境中的安全性。本文将详细介绍无人机避障项目的背景、技术原理、实现过程、应用前景以及面临的挑战,以期为读者提供全面而深入的了解…

【Linux】文件缓冲区|理解文件系统

目录 预备知识 观察现象 第一:携带\n,不使用fork(),打印到显示器 第二:携带\n,使用fork(),打印到显示器 第三:携带\n,使用fork(),打印到文件里 第四:不携…