【开源鸿蒙】编译OpenHarmony轻量系统QEMU RISC-V版

文章目录

    • 一、背景介绍
    • 二、准备OpenHarmony源代码
    • 三、准备hb命令
      • 3.1 安装hb命令
      • 3.2 检查hb命令
    • 四、编译RISC-V架构的OpenHarmony轻量系统
      • 4.1 设置hb构建目标
      • 4.2 启动hb构建过程
    • 五、问题解决
      • 5.1 hb set 报错问题解决
    • 六、参考链接

开源鸿蒙坚果派,学习鸿蒙一起来!

本文将介绍如何编译OpenHarmony轻量系统的QEMU RISC-V虚拟平台版。得益于QEMU的CPU指令模拟执行能力,该方法可以在没有实际开发板硬件的情况下,调试和运行OpenHarmony轻量系统。另外,本文介绍的该方法,可以用于OpenHarmony操作系统源码的学习和研究,也可以用于其他操作系统源代码的学习和研究。

一、背景介绍

QEMU是一个开源的虚拟化平台,它可以实现目标平台的CPU指令级别的模拟。因此,可以使用QEMU进行操作系统的学习和研究,也可以在没有硬件的情况下对开发板进行模拟。

QEMU是一款开源的虚拟机监控程序,可模拟多种硬件环境,并支持多种处理器架构。它能够在不同平台上实现虚拟化,运行各种操作系统。QEMU具有高度的灵活性和可移植性,被广泛用于开发、测试和部署虚拟化环境。

二、准备OpenHarmony源代码

开始之前,需要准备:

  • Ubuntu 系统的开发环境(可以是物理主机也可以是虚拟机);
  • 下载OpenHarmony 4.0 Release源代码,参考上一篇文章:
    • 【开源鸿蒙】下载 OpenHarmony 4.0 源代码和工具链

三、准备hb命令

3.1 安装hb命令

编译OpenHarmony源码之前,需要先安装hb命令。

# 跳转到OpenHarmony源码目录,例如上一篇文章介绍的 OpenHarmony 4.0 Release
cd ohos/openharmony

# 如果没有 pip 命令,则需要先安装 python3-pip
# sudo apt install python3-pip

# 安装 hb 命令:
pip install build/hb

安装成功如下图所示:

Untitled

3.2 检查hb命令

安装完成后,可以通过 hb help命令测试是否可以正常使用。

如果报告 command not found,如下图所示:

Untitled

则表明hb所在目录没有加到PATH环境变量中,如果是Ubuntu系统,需要先检查~/.profile文件是否存在,并检查其中是否有如下代码:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi

如果有以上代码,关闭当前shell会话,重新打开,就可以正常使用hb命令了。

如果没有~/.profile文件,则可以将以上代码添加到 ~/.bashrc 文件中。

如果报告Please call hb utilities inside ohos source directory,则是正常的,需要在ohos源码目录下执行hb命令。

Untitled

四、编译RISC-V架构的OpenHarmony轻量系统

4.1 设置hb构建目标

开始编译之前,首先需要设置hb构建的目标产品或开发板是什么。使用hb set命令,进行交互式设置。

依次选择 mini → qemu_riscv_mini_system_demo

Untitled

Untitled

设置完成后,会在源码目录的顶层生成 ohos_config.json 文件,内容如下:

Untitled

4.2 启动hb构建过程

使用hb set设置完目标平台后,就可以使用hb build命令进行编译了。

构建完成后,输出如下:

Untitled

五、问题解决

5.1 hb set 报错问题解决

如果遇到报错:cannot import name ‘Mapping’ from 'collections’

Untitled

这个报错是因为Python 3.10中,Mapping已经不在collections包中了。

解决方法,修改文件: ~/.local/lib/python3.10/site-packages/prompt_toolkit/styles/from_dict.py

手动将 collections 改为 collections.abc 即可。

六、参考链接

  1. OpenHarmony官网: https://www.openharmony.cn/
  2. OpenHarmony编译形态整体说明: https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/quick-start/quickstart-appendix-compiledform.md
  3. OpenHarmony代码仓: https://gitee.com/openharmony/

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【操作系统】以Pthread线程库为例详解多线程并发运行的特点

目录 写在开头 1.线程的创建 2.主线程与子线程的结束顺序 3.线程之间的数据共享与并发执行 4.蒙特卡洛法求pi(单线程) 5.蒙特卡洛法求pi(多线程) 写在最后 写在开头 近期准备重学操作系统,感觉还是有很多细节的…

通过切面编程(AOP)实现不同字段转换为同一字段

文章目录 前言一、切面编程(AOP)是什么?二、demo样例1.实体类a.新增订单b.更新订单b.日志实体类 2.实现相关a.类型转换接口类b.类型转换接口实现类c.自定义注解d.切面配置e.运行 三、结果示例四、其他 前言 项目中有很多场景需要去记日志,,也…

深入浅出前端本地储存

引言 2021 年,如果你的前端应用,需要在浏览器上保存数据,有三个主流方案: CookieWeb Storage (LocalStorage)IndexedDB 这些方案就是如今应用最广、浏览器兼容性最高的三种前端储存方案 今天这篇文章就聊一聊这三种方案的历史…

Python学习:列表

Python 列表概念 在Python中,列表(List)是一种有序、可变、允许重复元素的数据结构。列表使用方括号 ​[]​来表示,可以包含任意类型的元素,如整数、字符串、列表等。 Python 访问列表中的值 在Python中&#xff0…

BI(商业智能):开启数据驱动的未来

在当今信息时代,企业和组织面临着大量的数据和信息。这些数据包含了各种各样的信息,从市场趋势和消费者行为到销售数据和供应链信息。对于企业而言,利用这些数据来做出明智的决策,提高效率和竞争力变得尤为重要。而商业智能&#…

Learn OpenGL 22 高级光照与Gamma校正

高级光照 Blinn-Phong 冯氏光照不仅对真实光照有很好的近似,而且性能也很高。但是它的镜面反射会在一些情况下出现问题,特别是物体反光度很低时,会导致大片(粗糙的)高光区域。下面这张图展示了当反光度为1.0时地板会…

JS+CSS3点击粒子烟花动画js特效

JSCSS3点击粒子烟花动画js特效 JSCSS3点击粒子烟花动画js特效

docker harbor.v2.9.2搭建镜像无法下载问题解决

在通过部署docker harbor时,采用的是离线包的方式,当解压压缩包后,执行prepare脚本步骤中有一步是要获取prepare:v2.9.2版本镜像 结果执行脚本时报如下错误: Unable to find image goharbor/prepare:v2.9.2 locally 这时候我们就…

若依ruoyi-vue中的文件上传和下载

文章目录 文件上传后端实现前端实现 文件下载后端实现前端实现 在若依(Ruoyi)框架中,结合 Vue 前端框架,文件的上传和下载通常使用以下方法实现: 文件上传 若依现成的功能里面没有文件上传,但是集成了文件…

探索智慧农业项目方案,开启农业智能化新篇章

1. 背景 随着科技的飞速发展和全球人口的不断增长,传统农业模式已难以满足日益增长的粮食和农产品需求。同时,气候变化、资源短缺等环境问题也对农业生产带来了巨大挑战。因此,智慧农业作为一种集成了现代信息技术和农业生产的创新模式&#…

位图与布隆过滤器

目录 一、位图 1、问题用位图来解决: 二、 布隆过滤器 1、将哈希与位图结合,即布隆过滤器 2.布隆过滤器的查找 3.布隆过滤器的删除 4.布隆过滤器优点 5、布隆过滤器缺陷 三、海量数据处理问题: 一、位图 问题1:给40亿个不…

【阅读论文】When Large Language Models Meet Vector Databases: A Survey

摘要 本调查探讨了大型语言模型(LLM)和向量数据库(VecDB)之间的协同潜力,这是一个新兴但迅速发展的研究领域。随着LLM的广泛应用,出现了许多挑战,包括产生虚构内容、知识过时、商业应用成本高昂…

day01_mysql_课后练习 - 参考答案

文章目录 day01_mysql_课后练习第1题第2题第3题第4题第5题 day01_mysql_课后练习 第1题 案例: 1、创建数据库day01_test01_library 2、创建表格books 字段名字段说明数据类型允许为空唯一b_id书编号int(11)否是b_name书名varchar(50)否否…

章节10实验--Ubuntu18.04 Qt MySQL libqsqlmysql.so

前言: 内容参考《操作系统实践-基于Linux应用与内核编程》一书的示例代码和教材内容,所做的读书笔记。本文记录再这里按照书中示例做一遍代码编程实践加深对操作系统的理解。 引用: 《操作系统实践-基于Linux应用与内核编程》 作者:房胜、李旭健、黄…

SAP SD模块影响MRP结果的几个因素

后台最近会收到小伙伴的私信说,我的销售订单已经下达了,但是MRP仍然没有跑出结果,没有跑出需求。遇到这种情况我们就需要一个个地方去进行分析,看哪里的数据存在问题,系统的配置存在问题导致的。接下来文章中将会分析SD销售模块哪些配置点会影响到MRP的运行。 1、首先遇到…

【Web】浅聊Hessian异常toString姿势学习复现

目录 前言 利用关键 调用分析 如何控制第一个字节 EXP 前言 Hessian CVE-2021-43297,本质是字符串和对象拼接导致隐式触发了该对象的 toString 方法,触发toString方法便可生万物,而后打法无穷也! 这个CVE针对的是Hessian2I…

5G智能网关助力工业铸造设备监测升级

随着物联网技术的迅猛发展和工业4.0浪潮的推进,传统工业正面临着严峻的转型升级压力。在这一背景下,铸造行业——这一典型的传统重工业领域,也必须积极探索借助5G、物联网、边缘计算等技术提升生产经营效率的新路径。 本文就基于佰马合作伙伴…

C++初阶 | [九] list 及 其模拟实现

摘要:介绍 list 容器,list 模拟实现,list与vector的对比 list(带头双向循环列表) 导入:list 的成员函数基本上与 vector 类似,具体内容可以查看相关文档(cplusplus.com/reference/list/list/)&…

美食杂志制作秘籍:引领潮流,引领味蕾

美食杂志是一种介绍美食文化、烹饪技巧和美食体验的杂志,通过精美的图片和生动的文字,向读者展示各种美食的魅力。那么,如何制作一本既美观又实用的美食杂志呢? 首先,你需要选择一款适合你的制作软件。比如FLBOOK在线制…

网络电视盒子哪个品牌好?2024畅销电视盒子排行榜

电视盒子的品牌和产品非常多,让新手在选购时难度增大,大部分消费者在此时会选择参考销量排名情况,小编这次结合各个电商平台的销量和用户评价整理了电视盒子排行榜,想买电视盒子不知道网络电视盒子哪个品牌好可以收藏。 TOP 1.泰捷…