【开源鸿蒙】模拟运行OpenHarmony轻量系统QEMU RISC-V版

文章目录

    • 一、准备工作
      • 1.1 编译输出目录简介
    • 二、QEMU安装
      • 2.1 安装依赖
      • 2.2 获取源码
      • 2.3 编译安装
      • 2.4 问题解决
    • 三、用QEMU运行OpenHarmony轻量系统
      • 3.1 qemu-run脚本简介
      • 3.2 qemu-run脚本参数
      • 3.3 qemu-run运行效果
      • 3.4 退出QEMU交互模式
    • 四、问题解决
    • 五、参考链接

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

本文将会介绍如何从源码安装QEMU 6.2.0,以及如何使用QEMU运行OpenHarmony轻量系统。通过本文,你将会对QEMU和OpenHarmony轻量系统又一个初步的认知,并对如何使用QEMU又一个初步的理解和体会。

一、准备工作

开始之前,需要准备:

  • Ubuntu 系统的开发环境(可以是物理主机也可以是虚拟机);
  • 下载OpenHarmony 4.0 Release源代码,参考文章:
    • 【开源鸿蒙】下载 OpenHarmony 4.0 源代码和工具链
  • 为QEMU编译OpenHarmony轻量系统,参考文章:
    • 【开源鸿蒙】为QEMU RISC-V虚拟平台构建OpenHarmony轻量系统

上一篇文章介绍了如何为QEMU RISC-V虚拟平台构建OpenHarmony轻量系统。

构建完成后,输出如下:

Untitled

1.1 编译输出目录简介

hb set命令选择qemu_riscv_mini_system_demo平台后,hb build命令构建完成后,所有输出文件将会保存在out/riscv32_virt/qemu_riscv_mini_system_demo 目录,具体内容如下:

Untitled

其中,OHOS_Image就是本文将要运行的RISC-V平台的OpenHarmony轻量系统ELF文件。

二、QEMU安装

按照如下步骤,从源码安装QEMU 6.2.0版本。

2.1 安装依赖

sudo apt install build-essential zlib1g-dev pkg-config libglib2.0-dev  binutils-dev libboost-all-dev autoconf libtool libssl-dev libpixman-1-dev virtualenv flex bison

2.2 获取源码

wget https://download.qemu.org/qemu-6.2.0.tar.xz

或官网下载: qemu-6.2.0.tar.xz

2.3 编译安装

# 解压源码包
tar -xf qemu-6.2.0.tar.xz# 跳转到源码解压后目录
cd qemu-6.2.0# 创建构建目录,用于存放中间文件
mkdir build && cd build# 创建qemu安装目录,也可以改为其他目录
sudo mkdir /usr/qemu/# 配置源码,生成构建规则文件
# --prefix 参数指定安装目录
../configure --prefix=/usr/eqmu/# 开始构建,8个并发任务
make -j8

等待编译结束, 执行安装命令:

make install

最后将安装路径添加到环境变量中:

vim ~/.bashrc

在~/.bashrc最末尾加入:

export PATH=$PATH:/usr/qemu/bin

2.4 问题解决

上一小节描述的步骤中,可能出现一些问题,本节介绍如何解决常见的问题。

Cannot find Ninja问题:

Untitled

解决方法:

sudo apt install ninja-build

正常编译成功之后,可以看到如下输出:

Untitled

三、用QEMU运行OpenHarmony轻量系统

编译成功后,就可以进入本篇文章的正题了——尝试使用QEMU运行RISC-V虚拟平台的OpenHarmony轻量系统。

3.1 qemu-run脚本简介

OpenHarmony顶层目录,有一个qemu-run的链接文件:

Untitled

它实际指向一个脚本文件:

Untitled

该脚本用于启动qemu虚拟机,并加载可执行程序。

3.2 qemu-run脚本参数

脚本qemu-run文件支持一些命令行参数,具体如下:

Untitled

由于exec默认值已经是正确的可执行程序了,所以直接运行该脚本就可以启动虚拟机,并运行OpenHarmony轻量系统。

3.3 qemu-run运行效果

前面介绍过,由于已经使用hb build编译成功了,直接运行qemu-run,就可以运行RISC-V虚拟平台的OpenHarmony轻量系统。

运行后,可以看到启动日志:

Untitled

Untitled

成功看到OpenHarmony系统启动日志了,可喜可贺!

3.4 退出QEMU交互模式

qemu-run默认会进入QEMU交互模式,退出需要使用:Ctrl+A,然后再按X键

四、问题解决

首次运行qemu-run脚本,可能会遇到报错 libncursesw.so.5 找不到:

Untitled

解决方法:

sudo apt install libncursesw5

五、参考链接

  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/
  4. OpenHarmony riscv32_virt说明:https://gitee.com/openharmony/device_qemu/tree/HEAD/riscv32_virt

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

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

相关文章

scp命令——基于SSH协议远程文件复制

scp命令是英文词组secure copy的缩写,其功能是基于SSH协议的远程文件复制。由于数据是经过SSH协议加密传输的,因此会比HTTP和FTP更加安全。 scp命令可以在多个Linux系统之间通过网络进行文件复制,而cp命令只能在一个Linux系统内部进行文件复…

YOLOv8改进 | 图像去雾 | 门控可微分图像处理GDIP模块改善物体低照度检测检测(适用于图片不清晰等一切场景,全网独家首发)

一、本文介绍 本文给大家带来的改进机制是门控可微分图像处理GDIP模块,其可以理解为是一直图像增强领域的模块,其主要适用于雾天的一些去雾检测,当然了也适用于于一些图片模糊不清的场景,GDIP(Gated Differentiable Im…

论文阅读——EarthPT

EarthPT: a time series foundation model for Earth Observation 一个Earth Observation (EO)预训练的Transformer。EarthPT是一个7亿参数解码Transformer基础模型,以自回归自监督方式进行训练,并专门针对EO用例进行开发。我们证明了EarthPT是一个有效的…

谷歌(edge)浏览器过滤,只查看后端发送的请求

打开F12 调试工具 选择Network 这是我们会发现 什么图片 文件 接口的请求很多很多,我们只需要查看我们后端发送的请求是否成功就好了 正常情况我们需要的都是只看接口 先点击这里这个 过滤 我们只需要点击 Fetch/XHR 即可过滤掉其他请求信息的展示 这样烦恼的问题就…

海豚调度系列之:单机部署

海豚调度系列之:单机部署 一、前置准备工作二、启动 DolphinScheduler Standalone Server三、登录 DolphinScheduler四、启停服务五、配置数据库 Standalone 仅适用于 DolphinScheduler 的快速体验. 如果你是新手,想要体验 DolphinScheduler 的功能&…

windows下修改mysql的max_allowed_packet的值

1)C:\Program Files\MySQL\MySQL Server 5.7 在MySQL 的安装目录下添加my.ini文件,同时添加空的data文件 2)my.ini文件内容如下, [mysqld] port 3306 basedirC:\Program Files\MySQL\MySQL Server 5.7 datadirC:\Program Files\MySQL\MySQ…

lua 中的元表

a{ age0, __tostringfunction() { }, __callfunction() { }, } b{} a.__indexa{}//将a表中的__index指向自己 setmetatable(a,b)//将b设置为a的元表; __tostring 当子表a被当做字符串使用时会调用原表b中的__tostring方法, __call 当子表a被当做字符串使用时…

【鸿蒙HarmonyOS开发笔记】自定义组件详解

自定义组件 除去系统预置的组件外,ArkTS 还支持自定义组件。使用自定义组件,可使代码的结构更加清晰,并且能提高代码的复用性。 我们开发的每个页面其实都可以视为自定义组件内置组件的结合 语法说明 自定义组件的语法如下图所示 各部分…

TCL管理Vivado工程

文章目录 TCL管理Vivado工程1. 项目目录2. 导出脚本文件3. 修改TCL脚本3.1 project.tcl3.2 bd.tcl 4. 工程恢复 TCL管理Vivado工程 工程结构 1. 项目目录 config: 配置文件、coe文件等。doc: 文档fpga: 最后恢复的fpga工程目录ip: ip文件mcs: bit流文件等,方便直接使用src: .…

【AI】计算机视觉是什么

更多内容欢迎参考我之前的文章“大厂AI课系列”。 计算机视觉是什么? 一、定义 计算机视觉,作为人工智能领域的一个重要分支,是指通过计算机和相关设备模拟人类视觉系统的功能,从图像或视频中获取信息、理解内容并作出决策的一…

npm包、全局数据共享、分包

使用 npm 包 小程序对 npm 的支持与限制 目前,小程序中已经支持使用 npm 安装第三方包,从而来提高小程序的开发效率。但是,在小程序中使用npm 包有如下 3 个限制: ① 不支持依赖于 Node.js 内置库的包 ② 不支持依赖于浏览器内置…

css常用选择器用法和示例说明

标签选择器 (Element Selector)&#xff1a; 语法&#xff1a;element { property: value; }案例&#xff1a; Css 1p { color: green; } 说明&#xff1a;这个例子将会把所有<p>标签内的文本颜色设置为绿色。 类选择器 (Class Selector)&#xff1a; 语法&#xff1a;.…

webgl canvas系列——快速加背景、抠图、加水印并下载图片

文章目录 ⭐前言⭐canvas绘制图片&#x1f496;绘制csdn图片&#x1f496;给png图片加背景&#x1f496;cavans下载图片&#x1f496;cavans上传图片并抠图&#x1f496;cavans添加文字水印&#x1f496;inscode 完整代码块 ⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#x…

建设IAM/IDM统一身份管理,实现系统之间的单点登录(SSO)

企业实施身份管理的现状&#xff1a; 1.身份存储分散&#xff0c;不能统一供应诸多应用系统&#xff0c;企业用户信息常常存在于多个系统&#xff0c;如HR系统有一套用户信息&#xff0c;OA系统也有一套用户信息&#xff0c;身份存储不集中&#xff0c;不能统一地为诸多应用系…

AJAX概念和axios使用、URL、请求方法和数据提交、HTTP协议、接口、form-serialize插件

AJAX概念和axios使用 AJAX概念 AJAX就是使用XMLHttpRequest对象与服务器通信&#xff0c;它可以使用JSON、XML、HTML和text文本等格式发送和接收数据&#xff0c;AJAX最吸引人的就是它的异步特性&#xff0c;也就是说它可以在不重新刷新页面的情况下与服务器通信&#xff0c;…

Tomcat(二)

一、搭建个人博客 二、状态页 默认的管理页面被禁用&#xff0c;启用方法如下 修改conf/conf/tomcat-users.xml 2.1 开启状态页&#xff08;本地访问&#xff09; 2.2 开启允许远程登录状态页 2.3 host manager

【Spark编程基础】RDD 编程初级实践(附源代码)

目录 一、实验目的二、实验平台三、实验内容1.spark-shell 交互式编程2.编写独立应用程序实现数据去重3.编写独立应用程序实现求平均值问题 一、实验目的 1、熟悉 Spark 的 RDD 基本操作及键值对操作&#xff1b; 2、熟悉使用 RDD 编程解决实际具体问题的方法 二、实验平台 …

widget一些控件的使用

QRadioButton使用 先使用ui界面拖拽创建radio button #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ui->male->setChecked(true);//选中按钮ui->o…

C语言字符串函数strstr、strtok和strerror

1.strstr函数 函数作用&#xff1a; 在字符串1中查找是否存在字符串2。 例子&#xff1a; "bbc"中找”bc“ 函数定义&#xff1a; const char * strstr ( const char * str1, const char * str2 ); str1字符串1的首字符的指针。str2字符串2的首字符的指针。const修…

2024/03/16----面试中遇到的一些面试题

1.请简单的说一下IOC&#xff0c;AOP 1.1 IOC 控制反转&#xff08;IOC&#xff09;是一种设计思想&#xff0c;就是将原本在程序中需要手动创建对象&#xff0c;现在交由Spring管理创建&#xff0c;从而降低代码之间的耦合度。 IoC 最常见以及最合理的实现方式叫做依赖注入…