当前位置: 首页 > news >正文

在Ubuntu22.04 jammy下用qemu模型riscv32环境装鸿蒙(待续)

在使用实体ESP32C3 安装鸿蒙失败后,就是这个:完全按照手册win10里装Ubuntu 虚拟机然后编译ESP32(主要是想针对ESP32C3和S3)开发板的鸿蒙系统(失败)-CSDN博客转向用qemu模拟环境装鸿蒙

学习手册riscv32_virt/README_zh.md · OpenHarmony/device_qemu - Gitee.com

Qemu RISC-V virt 教程

1. 简介

riscv32_virt/ 子目录包含部分Qemu RISC-V虚拟化平台验证的OpenHarmony kernel_liteos_m的代码,目录名为riscv32_virt。 RISC-V 虚拟化平台是一个 qemu-system-riscv32 的目标设备,通过它来模拟一个通用的、基于RISC-V架构的单板。

这次模拟的配置是:RISC-V架构,1个CPU,128M内存。

提示: 系统内存硬编码为128MB。

2. 环境搭建

环境搭建

编译器安装:gcc_riscv32, 提示: 可直接下载

3. 获取源码

代码获取

提示: 可以使用 repo 命令来获取源码。

4. 源码构建

在已经获取的源码根目录,请输入:

hb set

选择ohemu下的qemu_riscv_mini_system_demo选项。

然后执行构建命令如下:

hb build

这个命令构建会产生 OHOS_Image 的镜像文件。

在构建完成之后,对应的镜像文件在如下目录:

out/riscv32_virt/qemu_riscv_mini_system_demo/

5. 在Qemu中运行镜像

a) 如果没有安装 qemu-system-riscv32 ,安装请参考链接:Qemu安装指导

b) 运行

(1). qemu 版本 < 5.0.0

cd device/qemu/riscv32_virt
qemu-system-riscv32 -machine virt -m 128M -kernel ../../../out/riscv32_virt/qemu_riscv_mini_system_demo/OHOS_Image -nographic -append "root=dev/vda or console=ttyS0"

(2). qemu 版本 >= 5.0.0

执行./qemu-run --help提示如下:

Usage: qemu-run [OPTION]...
Run a OHOS image in qemu according to the options.Options:-e, --exec file_name     kernel exec file name-n, --net-enable         enable net-l, --local-desktop      no VNC-g, --gdb                enable gdb for kernel-t, --test               test mode, exclusive with -g-h, --help               print help infoBy default, the kernel exec file is: out/riscv32_virt/qemu_riscv_mini_system_demo/OHOS_Image,and net will not be enabled, gpu enabled and waiting for VNC connection at port 5920.

默认不加参数的情况下,网络不会自动配置,并使用默认镜像文件,若需更改默认镜像文件,可以利用 ./qemu-run -e [file_name] 指定

6. gdb调试

cd device/qemu/riscv32_virt
vim liteos_m/config.gni

将 board_opt_flags 中的

board_opt_flags = []

编译选项修改为:

board_opt_flags = [ "-g" ]

保存并退出,在OHOS根目录重新编译:

hb build -f

在一个窗口中输入命令:

./qemu-run -g

在另一个窗口中输入命令:

riscv32-unknown-elf-gdb out/riscv32_virt/qemu_riscv_mini_system_demo/OHOS_Image
(gdb) target remote localhost:1234
(gdb) b main

更多gdb相关的调试可以查阅:gdb指导手册。

7. 用法示例

  • 用FAT映像传递文件

实践

安装python库

pip3 install setuptools scons kconfiglib pycryptodome ecdsa six

pip install 

安装gcc-riscv32

安装apt库

下载源码:

wget https://gitee.com/openharmony/docs/blob/HEAD/zh-cn/device-dev/get-code/sourcecode-acquire.md

获取源码这块就晕了,竟然好几G,我就想装个riscv32的鸿蒙啊

下载这个试试

git clone https://gitee.com/openharmony/kernel_liteos_a

kernel_liteos_a: LiteOS kernel for embedded devices with rich resources | 适用于资源较丰富嵌入式设备的LiteOS内核

直接下载编译器

wget https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fharmonyos%2Fcompiler%2Fgcc_riscv32%2F7.3.0%2Flinux%2Fgcc_riscv32-linux-7.3.0.tar.gz

 安装qemu-system-misc试试

apt install qemu-system-misc

中间一度碰到清华源报错的问题,改为山大源

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.sdu.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.sdu.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.sdu.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.sdu.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.sdu.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.sdu.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
# deb https://mirrors.sdu.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# # deb-src https://mirrors.sdu.edu.cn/ubuntu/ jammy-security main restricted universe multiversedeb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse# 预发布软件源,不建议启用
# deb https://mirrors.sdu.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# # deb-src https://mirrors.sdu.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

设置环境变量

将gcc_riscv32目录放置到/opt目录,设置环境变量:

export PATH=/opt/gcc_riscv32/bin:$PATH

 这是至少命令是可以执行了

hb工具是啥

hb是HarmonyOS2.0里新增加的编译构建命令行工具。需要Python 3.7.4及以上版本的支持,建议安装3.8.x。源码在OpenHarmony\build\lite\hb这个目录下。
安装方法,可以直接使用pip安装打包好的工具。但是我们为了方便调试,我们直接使用源码进行单步调试。

python3 -m pip install --user ohos-build

源码构建

在已经获取的源码根目录,请输入:

hb set

选择ohemu下的qemu_riscv_mini_system_demo选项。

然后执行构建命令如下:

hb build
git clone https://gitee.com/openharmony/kernel_liteos_a

进入目录后,hb报错:

hb
Traceback (most recent call last):File "/usr/local/bin/hb", line 8, in <module>sys.exit(main())File "/usr/local/lib/python3.10/dist-packages/hb/__main__.py", line 49, in maintopdir = find_top()File "/usr/local/lib/python3.10/dist-packages/hb/__main__.py", line 37, in find_topraise Exception("Please call hb utilities inside source root directory")
Exception: Please call hb utilities inside source root directory

下载这个包试试:

git clone https://gitee.com/openharmony/device_qemu

 hb还是报错

相关文章:

在Ubuntu22.04 jammy下用qemu模型riscv32环境装鸿蒙(待续)

在使用实体ESP32C3 安装鸿蒙失败后&#xff0c;就是这个&#xff1a;完全按照手册win10里装Ubuntu 虚拟机然后编译ESP32&#xff08;主要是想针对ESP32C3和S3&#xff09;开发板的鸿蒙系统(失败)-CSDN博客转向用qemu模拟环境装鸿蒙 学习手册riscv32_virt/README_zh.md OpenHar…...

C++:基本-union是没有构造函数和析构函数的

今天发现当我在union中包含了多个结构体时&#xff0c;结构体有默认构造函数时&#xff0c;编译报错。 问题点&#xff1a; union不支持构造函数和析构函数union中的元素本身也是不支持构造函数和析构函数的。包含union的结构体也不支持构造函数和析构函数。 出错代码如下&a…...

报错 JSON.parse: expected property name or ‘}‘,JSON数据中对象的key值不为字符串

报错 JSON.parse: expected property name or ‘}’ 原因 多是因为数据转换时出错&#xff0c;可能是存在单引号或者对象key值不为string导致 这里记录下我遇见的问题&#xff08;后端给的JSON数据里&#xff0c;对象key值不为string&#xff09; 现在后端转换JSON数据大多…...

LeetCode 热题 100_旋转图像(20_48_中等_C++)(原地旋转;翻转)

LeetCode 热题 100_旋转图像&#xff08;20_48&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;原地旋转&#xff09;&#xff1a;思路二&#xff08;翻转&#xff09;&#xff1a; 代码实现&#xff08;思路…...

mysql查询所有用户及删除用户

查询用户 select user, host, password_expired from mysql.user;删除用户 DROP USER [username]localhost &#xff1b;刷新权限 FLUSH PRIVILEGES&#xff1b;查询所有用户/账号设置/日志/开启日志 select user,host,password_expired,password_last_changed,password_li…...

Vue 鼠标滚轮缩放图片的实现

wheel"handleZoom" 监听鼠标滚轮事件 event.deltaY < 0 代表向上滚动 event.deltaY > 0 代表向下滚动 使用computed处理scale比例的变化 const imageStyle computed(() > ({ transform: translate(-50%, -50%…...

全景图 与 6面图转换

目录 全景图转6面图&#xff1a; 6面图转全景图 全景图转6面图&#xff1a; https://github.com/springcheese/panoramic_to_cubemap_generation # Necessary Imports import math import argparse import numpy as np from PIL import Image# Dictionary for CUBEMAP FACES…...

深入浅出:PHP 文件操作

文章目录 引言文件的基本操作打开文件读取文件逐行读取读取整个文件 写入文件追加写入覆盖写入 关闭文件 文件和目录的管理检查文件或目录是否存在创建和删除文件创建和删除目录复制和移动文件 处理文件权限设置文件权限获取文件权限 处理文件属性获取文件大小获取文件最后修改…...

116. UE5 GAS RPG 实现击杀掉落战利品功能

这一篇&#xff0c;我们实现敌人被击败后&#xff0c;掉落战利品的功能。首先&#xff0c;我们将创建一个新的结构体&#xff0c;用于定义掉落体的内容&#xff0c;方便我们设置掉落物。然后&#xff0c;我们实现敌人死亡时的掉落函数&#xff0c;并在蓝图里实现对应的逻辑&…...

【批处理脚本】更改Windows系统中的 hosts 解析文件

概述 作用 修改 Windows 系统中的 hosts 文件&#xff0c;可以实现 插入 或 删除 条目。该脚本允许用户以管理员权限执行&#xff0c;将特定的域名解析到指定的 IP 地址 应用场景 非常适用于需要频繁或批量修改 hosts 文件的场景&#xff1a; 屏蔽网站、域名重定向、DNS 污染防…...

fastDFS

docker 部署fastDFS docker pull delron/fastdfs docker-compose.yml version: 3services:fastdfs_tracker:image: delron/fastdfs:latestcontainer_name: trackerhostname: trackernetwork_mode: hostports:- "22122:22122"volumes:- ./data/tracker:/var/fdfsco…...

【Linux】存储

声明&#xff1a;以下内容均来学习自《Linux就该这么学》一书 Linux系统中的一切文件都是从“根(/)”目录开始的&#xff0c;并按照文件系统层次化标准&#xff08;FHS&#xff09;采用树形结构来存放文件&#xff0c;以及定义了常见目录的用途。此外&#xff0c;Linux系统中的…...

hadoop单机安装

步骤 1:安装 Java 安装 OpenJDK bash sudo yum install -y java-1.8.0-openjdk 验证 Java 安装 bash java -version 输出类似以下内容表示成功: arduino openjdk version “1.8.0_xxx” 步骤 2:下载 Hadoop 下载 Hadoop 安装包 前往 Hadoop 官方下载页面,获取最新稳…...

产品批量分类设置——未来之窗行业应用跨平台架构

一、批量统计分类 提高效率 节省时间&#xff1a;当商品数量庞大时&#xff0c;手动逐个修改商品分类是一项极其耗时的任务。例如&#xff0c;一个电商平台有数千种商品&#xff0c;如果手动操作&#xff0c;可能需要花费数天甚至数周的时间来完成分类转移。而批量设置功能可以…...

2024年中国各省份碳相关投资分析:区域差异与未来趋势

随着中国“双碳”目标的推进&#xff0c;各省份的碳相关投资逐渐成为推动绿色经济转型的关键力量。2024年&#xff0c;各地的双碳项目进入了快速发展阶段&#xff0c;尤其是在清洁能源、绿色技术和碳捕集领域。本文将分析中国各省份在碳减排、碳中和目标实现过程中的投资重点和…...

【六足机器人】03步态算法

温馨提示&#xff1a;此部分内容需要较强的数学能力&#xff0c;包括但不限于矩阵运算、坐标变换、数学几何。 一、数学知识 1.1 正逆运动学&#xff08;几何法&#xff09; 逆运动学解算函数 // 逆运动学-->计算出三个角度 void inverse_caculate(double x, double y, …...

路由VueRouter的基本使用

1.下载VueRouter到当前工程。 vue2&#xff1a;VueRouter3.x Vuex3.x。 vue3&#xff1a;VueRouter4.x Vuex4.x。 在终端使用命令&#xff1a; year add vue-router3.6.5 2.引入。 import VueRouter from vue-router 3,安装注册。 Vue.use(VueRouter) 4…...

Guiding a Diffusion Model with a Bad Version of Itself

Guiding a Diffusion Model with a Bad Version of Itself Abstract1. Introduction2. Background3. Why does CFG improve image quality?Score matching leads to outliers.CFG 消除异常值Discussion 4 Our method Abstract 在图像生成扩散模型中&#xff0c;主要关注的轴心…...

快速上手!低功耗Air724UG模组软件指南:FTP示例

Air724UG模组集成了高性能处理器和丰富的外设接口&#xff0c;支持多种通信协议&#xff0c;包括FTP&#xff08;文件传输协议&#xff09;。通过Air724UG模组&#xff0c;开发者可以轻松实现设备的远程文件管理功能。一起接着看下去吧&#xff01; 一、简介 FTP&#xff08;…...

GAMES101 完结篇(笔记和作业)

写在前面 我已经把笔记和作业代码放在了GitHub上&#xff0c;欢迎访问GAMES101笔记及作业 (github.com)&#xff0c;如果对你有帮助&#xff0c;欢迎fork or star 下面我想简单介绍一下这里面的东西 Homework Homework文件夹里有0~8的作业框架&#xff0c;参考的其他大佬的代…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...