使用 QEMU 模拟器运行 FreeRTOS 实时操作系统

news2024/11/10 5:38:51

文章目录

  • QEMU 官网
  • QEMU 文档
  • QEMU 简介
  • QEMU 安装
  • QEMU 命令
    • 启动虚拟机
    • 串口控制台
    • 监控命令行
  • FreeRTOS
    • 安装编译工具
    • FreeRTOS 源码
    • RISC-V-Qemu-virt_GCC 示例
    • 编译 RISC-V-Qemu-virt_GCC
    • 启动虚拟机运行 FreeRTOS

QEMU 官网

  • https://www.qemu.org/

QEMU 文档

  • https://www.qemu.org/docs/master/

QEMU 简介

QEMU(Quick Emulator)是一款开源的虚拟机模拟器和虚拟化工具,它支持多种硬件架构和操作系统。QEMU 可以模拟整个计算机系统的硬件,包括处理器、内存、硬盘、网络接口等,从而使用户能够在不同的硬件环境下运行操作系统和应用程序。

  • 多架构支持: QEMU 支持多种硬件架构,包括 x86、ARM、MIPS、PowerPC、SPARC 和 RISC-V 等。这使得用户可以在不同的主机平台上模拟各种计算机系统。

  • 灵活的虚拟化模式:

    • 用户模式仿真:QEMU 可以在用户模式下模拟不同架构的二进制文件,使得用户可以在一种体系结构上运行另一种体系结构的软件。
    • 全系统仿真:在这种模式下,QEMU 模拟整个计算机系统,包括处理器、内存、存储和外围设备。用户可以在虚拟环境中安装和运行完整的操作系统。
    • 硬件加速:通过与硬件虚拟化技术(如 Intel VT-x 和 AMD-V)结合,QEMU 可以利用主机系统的硬件加速功能,提高虚拟化性能。
  • 快照和迁移: QEMU 支持虚拟机快照功能,用户可以保存虚拟机的当前状态,并在需要时恢复。此外,还支持虚拟机的迁移,即将虚拟机从一个主机迁移到另一个主机。

  • 图形界面: QEMU 提供了多种用户界面选项,包括命令行界面和图形用户界面(如 QEMU GUI 和 Virt-Manager)。

  • 网络和存储支持: QEMU 提供了丰富的网络和存储选项,可以模拟各种网络设备和存储设备,以及支持通过网络共享和虚拟磁盘文件等功能。

  • 开源和社区支持: 作为一个开源项目,QEMU 拥有活跃的开发者社区,用户可以获得免费的技术支持和持续更新的功能。

使用场景:

  • 开发和测试:开发人员可以在 QEMU 上测试和调试软件,尤其是在不具备目标硬件的情况下。
  • 教育:QEMU 提供了一个实验平台,可以帮助学生和研究人员理解计算机体系结构和操作系统。
  • 安全研究:安全研究人员可以在隔离的虚拟环境中分析恶意软件或进行其他安全研究。

QEMU 安装

  • QEMU 安装包下载:https://www.qemu.org/download/#macos

注: Mac 环境 Homebrew 方式安装

# 安装 QEMU 虚拟化工具
brew install qemu

QEMU 命令

启动虚拟机

qemu-system-[arch] -hda [disk-image] -m [memory] -smp [cpus] -net [network-options]
  • arch:指定架构,例如 x86_64、arm、mips 等。
  • -hda [disk-image]:指定虚拟硬盘映像文件。
  • -m [memory]:设置虚拟机内存大小,例如 1024 表示 1GB。
  • -smp [cpus]:指定虚拟机的 CPU 核心数。
  • -net [network-options]:配置网络选项。

串口控制台

qemu-system-[arch] -hda [disk-image] -serial mon:stdio

监控命令行

qemu-system-[arch] -hda [disk-image] -monitor stdio

FreeRTOS

在这里插入图片描述

FreeRTOS 是一款市场领先的嵌入式系统, RTOS 支持 40 多种处理器架构,内存占用小,执行时间快,具有尖端的 RTOS 功能和库,包括对称多处理 (SMP)、具有 IPv6 支持的线程安全 TCP 堆栈以及与云服务的无缝集成。它是开源的,并得到了积极的支持和维护。

  • Github: https://github.com/FreeRTOS/FreeRTOS
  • 官方文档: https://www.freertos.org/zh-cn-cmn-s

安装编译工具

# 安装 GCC 编译器
brew install gcc
# 安装 ARM Cortex-M 处理器的 GCC 编译器工具链
brew install gcc-arm-none-eabi
# 通过 Homebrew Cask 安装 GCC ARM Embedded 工具链
brew install --cask gcc-arm-embedded
  • 安装 RISC-V 工具链
# 提供 RISC-V 相关的软件包和工具链
brew tap riscv-software-src/riscv
# 安装 RISC-V 相关的工具链和工具
brew install riscv-tools

注: riscv-tools 安装过程慢。

FreeRTOS 源码

# 克隆 FreeRTOS 项目及其所有子模块
git clone https://github.com/FreeRTOS/FreeRTOS.git --recurse-submodules
  • 进入源码目录
cd FreeRTOS

在这里插入图片描述

RISC-V-Qemu-virt_GCC 示例

注: 该示例用于 RISC-V 架构的交叉编译工具链,特别适用于 QEMU 虚拟环境 中进行开发和测试。这个工具链结合了 GCC 编译器和 QEMU 模拟器,以支持 RISC-V 架构的开发工作。

cd FreeRTOS/Demo/RISC-V-Qemu-virt_GCC

在这里插入图片描述

编译 RISC-V-Qemu-virt_GCC

make

在这里插入图片描述

  • 编译成功输出 RTOSDemo.axf 文件。

在这里插入图片描述

启动虚拟机运行 FreeRTOS

启动 QEMU 模拟器来运行编译后的 RISC-V 程序

qemu-system-riscv32 -nographic -machine virt \
-bios none \
-smp 4 \
-kernel ./build/RTOSDemo.axf

在这里插入图片描述

  • qemu-system-riscv32: 启动 QEMU 的 RISC-V 32-bit 模拟器。
  • -nographic: 不使用图形界面,所有输出和输入都在终端中进行。
  • -machine virt: 使用 QEMU 的虚拟 RISC-V 机器模型。
  • -bios none: 不使用 BIOS,适用于裸机或嵌入式系统。
  • -smp 4: 分配 4 个 CPU 核心给虚拟机。
  • -kernel ./build/RTOSDemo.axf: 加载并启动指定的内核镜像(RTOSDemo.axf)。
  • 使用 -monitor 选项允许你启用 QEMU 的监控控制台,你可以在监控控制台中查看 QEMU 的运行状态,并进行一些控制操作。
qemu-system-riscv32 -machine virt \
-bios none \
-smp 4 \
-kernel ./build/RTOSDemo.axf -monitor stdio
  • 使用 -serial 选项允许你将 QEMU 的串行输出重定向到文件或其他终端。这对于捕获程序输出或调试信息非常有用。
qemu-system-riscv32 -machine virt \
-bios none \
-smp 4 \
-kernel ./build/RTOSDemo.axf -serial mon:stdio

在这里插入图片描述

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

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

相关文章

爆品只是日百商家的表面“风光”

前不久,#大学生买爆台州商家的移动收纳筐#的话题上了热搜。现在的大学生相比以前讲究多了,虽然生活费没涨多少,但生活一定要精致。比如,在有限的预算内买各种收纳神器,把宿舍整理地井井有条。 爆品,往往成…

2024.9.14(RC和RS)

一、replicationcontroller (RC) 1、更改镜像站 [rootk8s-master ~]# vim /etc/docker/daemon.json {"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io",&…

windows远程桌面连接ubuntu

通过 Windows 远程连接到 Ubuntu 的桌面环境,可以使用 远程桌面协议(RDP) 来实现远程登录。 准备工作 一台安装了 Ubuntu 的服务器或计算机。一台 Windows 电脑(安装远程桌面客户端)。两台机器必须在同一网络中&…

M3U8是什么,如何解析下载

M3U8是什么?如何解析下载 M3U8是苹果公司推出的视频播放标准,准确来说是一种索引文件,使用M3U8文件实际上是通过它来解析对应的放在服务器上的视频网络地址,从而实现在线播放。M3U8文件使用UTF-8字符编码。M3U8是一种常见的流媒体…

基于SpringBoot的甜品店管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的蛋糕甜品店管理系…

下载docker镜像报错,dial tcp x.x.x.x:443: connect: connection refused

原因是:国外的连接超时了. 解决方案改为阿里云的数据源 打开阿里云 搜索&#xff1a;容器镜像服务 ACR 把你自己的这个直接复制在linux sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF { "registry-mirrors": ["你自己的"] }…

接口发送 xml 格式的数据如何测试?

什么是 xml &#xff1f; xml 是一种和 html 非常类似的语言&#xff0c;采取一定的格式展示数据。比如&#xff1a; 这个例子非常形象的指明&#xff1a; 这是一个便条 便条是给你的 便条是我写的 标题是&#xff1a;提醒 内容是&#xff1a;今晚八点&#xff0c;不见不散…

【docker】docker 关键技术 —— 镜像制作

docker 镜像制作 镜像制作及原因Docker 镜像制作方式快照方式制作镜像制作命令 Dockerfile 制作镜像Dockerfile 是什么Dockerfile 格式为什么需要 Dockerfilegitee 详细使用 Dockerfile 教程 镜像制作及原因 镜像制作是因为某种需求&#xff0c;官方的镜像无法满足需求&#x…

云服务器和物理服务器的区别在哪

在当今数字化的时代&#xff0c;服务器在企业和个人的信息技术架构中扮演着至关重要的角色。其中&#xff0c;云服务器和物理服务器是两种主要的服务器类型&#xff0c;它们在多个方面存在着明显的区别。 一、硬件方面 物理服务器是实实在在的物理硬件设备&#xff0c;它由机…

写论文还在卡壳?教你用ChatGPT轻松搞定过渡段落!

AIPaperGPT&#xff0c;论文写作神器~ https://www.aipapergpt.com/ 在写论文的路上&#xff0c;最让人头疼的除了查重率飙升&#xff0c;估计就是文献综述了吧&#xff01; 想想看&#xff0c;文献一篇接着一篇&#xff0c;脑子都快炸了&#xff0c;还得想办法把它们连接得…

使用JLink V8烧写友善之臂Mini2440 Superboot2440.bin到NORflash里

1 开发环境 PC&#xff1a;Windows 11、开发板Mini2440、仿真器JLink V8、Jlink转接板、JLinkARM烧录工具V4.34版本Setup_JLinkARM_V434.exe 准备工作&#xff1a;安装好烧录工具JLinkARM&#xff0c;按照网上的接线方法将PC、开发板和JLink仿真器连接起来。 组网&#xff1a;…

Radware Alteon 负载均衡-基于URL Filetype的七层负载均衡

作者&#xff1a;Xiaolei Ren Radware Alteon作为一款高性能的负载均衡器&#xff0c;其基于URL Filetype的七层负载均衡功能为众多企业提供了灵活、高效的解决方案。 该案例实现如下需求&#xff1a;当客户端访问服务器时&#xff0c;默认访问10.200.1.100&#xff0c;在ht…

使用Let’s Encrypt 配置 SSL 证书去除浏览器不安全告警

Let’s Encrypt是什么 https://letsencrypt.org/zh-cn/about/如何操作进行配置实现ssl认证 使用 certbot 获取 Let’s Encrypt 的免费 SSL 证书 更新系统软件包 sudo yum update -y安装 EPEL 仓库(Certbot 通常位于 EPEL 仓库中): sudo yum

【C++】STL——vecot的模拟实现

目录 前言总体结构默认成员函数构造函数拷贝构造赋值重载析构函数 vector的相关容量空间以及访问的实现capacity()和size()迭代器实现operator[]reserve vector类对象的修改操作尾插尾删任意位置插入任意位置删除交换和清理 前言 前面我们已经学习了解了vector重要接口的使用&a…

Appium如何简化混合App的测试和自动化

背景&#xff1a;Hybrid App&#xff08;混合模式移动应用&#xff09;是指介于web-app、native-app这两者之间的app&#xff0c;兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。 什么是混合型应用&#xff08;Hybrid App&#xff09; 我们可以理解…

iPhone 16预售已开,沙漠金色最抢手,喜提新机后别忘了这件事!

9月13日20点&#xff0c;iPhone 16系列正式开启官方预购。今年全新的iphone16不仅新增相机按钮和AI功能&#xff0c;还增加了沙漠金配色。“加量不加价”的iPhone 16系列开售依旧火爆&#xff0c;iPhone 16系列开售1分钟内&#xff0c;苹果官方网站一度被消费者买到崩&#xff…

EasyExcel 快速入门

目录 一、 EasyExcel简介 官网链接&#xff1a; 代码链接&#xff1a; 二、 EasyExcel快速上手 引入依赖&#xff1a; 设置Excel相关注解 编写对应的监听类&#xff1a; 简单写入数据&#xff1a; 简单读取数据&#xff1a; 不需要使用监听器&#xff1a; 需要使…

U盘一打开就让格式化怎么办?教你快速解决方法

在日常生活和工作中&#xff0c;U盘已成为我们存储和传输数据的重要工具。然而&#xff0c;有时我们会遇到一个令人头疼的问题&#xff1a;当插入U盘后&#xff0c;电脑提示需要格式化才能使用。这时&#xff0c;我们该如何应对呢?本文将为大家详细介绍U盘提示格式化的原因及解…

野生动物检测系统源码分享

野生动物检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

时序必读论文06|PITS : 基于非依赖策略学习时序patch特征表示

论文标题&#xff1a;LEARNING TO EMBED TIME SERIES PATCHES INDEPENDENTLY 下载地址&#xff1a;https://arxiv.org/pdf/2312.16427v1.pdf 开源代码&#xff1a;https://github.com/seunghan96/pits 前言 之前的文章我们读了Patch TST&#xff0c;建议大家阅读原论文&…