qemu的详细资料大全(入门必看!!!)
qemu介绍
qemu是一个虚拟机,或者说是模拟器,类似VMware。主要对单片机或者嵌入式常用的一些处理器模拟,嵌入式开发中使用广泛,比如arm,sparc,riscv等架构处理器。
对于每种架构处理器的模拟,qemu都是一个单独的exe,比如
arm的:qemu-system-arm.exe
(它里面会细分为具体的arm处理器,比如cortex-m内核,cortex-a内核)
riscv的: qemu-system-riscv.exe
官网:QEMU
官网包含了 详细使用文档下载,源码下载(喜欢折腾的自己编译呗,自己编译好像还得依赖很多库,而且都是Linux上的编译教程,windows上的没发现有人搞),或者编译好的安装包下载。支持Linux,windows系统,但是Linux系统中用得最多。这里我要做windows里的IDE,所以只研究qemu在Windows上的使用。
qemu使用
qemu的使用方式:
QEMU的基本使用方法(MIPS)_子曰小玖的博客-CSDN博客_qemu使用教程
QEMU入门指南_Font Tian的博客-CSDN博客_qemu
一文读懂QEMU虚拟机_Font Tian的博客-CSDN博客_qemu虚拟机是什么
qemu教程_QEMU实例教程_cunjiu9486的博客-CSDN博客
也就是给这些后台运行的qemu-system-xx.exe
发命令来使用,类似gcc,gdb,clang这些的使用方式。
一般使用形式(例如arm):
qemu-system-arm -M xilinx-zynq-a9 -cpu cortex-a9 -nographic -kernel $BUILD_DIR/mm.elf -m 512M -s -S
- 使用机器
xilinx-zynq-a9
- 处理器
cortex-a9
- 因为这是裸机,所以可执行文件是一个自包含的ELF文件
-m 512M
表示平台具有512 MiB的RAM-s
是的快捷方式-gdb tcp::1234 (也就是说qemu自带了gdbserver,可以让gdb连它)
-S
表示在启动时冻结CPU
除了可以直接命令行操控qemu外,还能用一些通用IDE去可视化操作它,比如eclipse(用QEMU模拟调试裸机ARM64汇编,支持gdb单步调试_科学边界的博客-CSDN博客_qemu单步调试),vscode(https://hkt999.medium.com/nuttx-%E7%9A%84%E7%92%B0%E5%A2%83%E6%9E%B6%E8%A8%AD-qemu-vscode-%E9%96%8B%E7%99%BC-posix-%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%B5%B1-42a342fbb81b)等
如果想知道qemu关于arm cortex-a9架构处理器的运行方式,qemu模拟A9,如何一步步写裸机(网上其它的大部分博客都是直接启动uboot和Linux的,参考价值不大),可以看下面这些文章:
- Alice OS 0-Preparation | SilentMing's Gensokyo (这个人写的比较详细,一步步怎么做,但是写到mmu时候,就没有再写了,有点可惜,但是也可以作为不错的参考)
- https://descent-incoming.blogspot.com/2017/05/for-qemu-armvexpress-a9-0-hello-world.html (支持a9,但是写了一个好像不是很完善的启动代码)
- GitHub - umanovskis/baremetal-arm: An ebook about bare-metal programming for ARM (支持a9,写得比较全,里面还给了个对应的pdf,太贴心了,必看!!!)
- Embedded Programming with the GNU Toolchain (这个也是详细教程,但是不确定是qemu模拟哪款处理器)
- Qemu Xilinx Zynq A9 baremetal(Xilinx Zynq A9是一款双核a9,最近几年非常火爆,可以看xilinx它官方对qemu的支持情况,裸机编写都有)
(对了顺便说一下,这个官方的qume虽然支持几个stm32板子,但是串口stm32程序输出不到控制台的。想输出到控制台,可以看我别的qemu文章,你一定会有收获的)
qemu的stm32扩展
如果觉得官方qemu支持的板子不够多,qemu因为是开源的,所以可以自己修改源码,添加一些驱动代码啥的,重新编译成可执行文件,定制自己要模拟的板子。
主要是对支持arm的stm32做了定制,其实最新的官方qemu已经支持很多的cortex-m内核的stm32了,自己用,其实就用官方的就行。
1. 专门对stm32各种板子(Olimex STM32 p103这板子),做了全面的模拟,较大的增强了qemu:(对了顺便说一下,这个的qume的串口输出不到控制台,原作者自己也说了不知道为什么,而且多个博客也看到有人说printf无效的。想输出到控制台,可以看我别的qemu文章,你一定会有收获的)
- qemu的STM32虚拟化环境_南波儿万的博客-CSDN博客_qemu模拟stm32 (使用教程)
- https://github.com/beckus/qemu_stm32 (魔改的qemu源码)
- GitHub - beckus/stm32_p103_demos: A suite of demo applications for the Olimex STM32 P103 Development Kit(一些demo程序)
2. 专门针对stm32,但是便于与eclipse做了集成的一个版本的魔改 qemu-system-gnuarmeclipse.exe (即GNU MCU Eclipse QEMU,完全支持半主机模式,看官方使用教程)(同样支持了 Olimex STM32 p103这个板子),这个提供了编译好的exe下载
https://github.com/xpack-dev-tools/qemu-arm-xpack/
这儿讲了这个emu-system-gnuarmeclipse.exe命令行选项的详细使用 (是qemu官方版选项的子集,针对stm32有些特定的选项了)
The GNU MCU Eclipse QEMU command line options | The xPack Build Framework
3. rtthread的qemu,增加了几个stm32f4的板子的支持(主要是stm32程序的串口在控制台输出了),做得不错,看我这个博客 关于windows上使用qemu分别仿真stm32和a9以及串口输出_标biao的博客-CSDN博客
RT-Thread-Studio-Mirror/sdk-debugger-qemu
针对stm32的qemu的博客:如何对基于STM32 Soc的STM32-P103进行QEMU仿真 - STM32 - 电子技术论坛 - 广受欢迎的专业电子论坛!
总结:利用编译好的exe即可,免得自己折腾。用 emu-system-gnuarmeclipse.exe,板子选择 Olimex STM32 p103,demo也选择上面的Olimex STM32 p103(一些demo程序)
其它的一些参考博客:
- qemu最简单的跑stm32程序:qemu上跑stm32 模拟stm32开发板 - 连任 - 博客园
- 教我们如何编译:https://www.jianshu.com/p/9df79a090663
- 如果没有在exe中找到自己钟意的板子,那么这样启动qemu吧:qemu-system-arm -cpu cortex-m3 -nographic -monitor null -serial null -semihosting -kernel main.elf,ST Community
- 详细的介绍qemu运行stm32,使用 QEMU 仿真 STM32 CubeMX 生成的Makefile项目 - - 21ic电子技术开发论坛
注意:qemu中如果想输出程序打印信息,需要使用半主机模式:半主机是用于 ARM 目标的一种机制,可将来自应用程序代码的输入/输出请求传送至运行调试器的主机。 例如,使用此机制可以启用 C 库中的函数,如 printf() 和 scanf(),来使用主机的屏幕和键盘,而不是在目标系统上配备屏幕和键盘。
qemu的详细资料大全(入门必看!!!)相关推荐
- 95后数据科学家教你从零自学机器学习,这有3本入门必看书籍
晓查 发自 凹非寺 量子位 编译 | 公众号 QbitAI 厌倦了现在的工作,想转行做数据科学,但是却没有计算机专业的相关学历,应该怎样才能入门? 这类的教程已经有很多.最近一位22岁的数据科学家D ...
- python基础教程书籍推荐-初学者python入门必看书籍推荐(上)
随着最近Python的热度上涨,学习的人数也在增多,也因为Python这门语言的简短.易学.语言优美的优点,吸引了很多人来学习它.初学者想要入门,就必须先通过阅读,学习大量的理论知识对Python有一 ...
- arduino开发ESP8266配置方法,入门必看,esp8266开发板库离线安装包package2.7.1
公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 群里经常有朋友问arduino开发ESP8266的配置方法,今天在之前的文章基础上, ...
- 200528更新arduino开发ESP8266配置方法,入门必看,esp8266开发板库离线安装包package2.7.1...
公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 群里经常有朋友问arduino开发ESP8266的配置方法,今天(200528)在之 ...
- 怎么安装python_零基础入门必看篇:浅析python,PyCharm,Anaconda三者之间关系
今天为大家带来的内容是:零基础入门必看篇:浅析python ,PyCharm,Anaconda三者之间关系 众所周知,Python是一种跨平台的计算机程序设计语言,简单来说,python就是类似于C, ...
- powershell 开发入门_详谈Ubuntu PowerShell(小白入门必看教程)
早在去年八月份PowerShell就开始开源跨平台了,但是一直没有去尝试,叫做PowerShell Core. 这里打算简单介绍一下如何安装和简单使用,为还不知道PowerShell Core on ...
- IntelliJ IDEA 最常用配置详细图解,新手入门必看
转载自 IntelliJ IDEA 最常用配置详细图解,新手入门必看 刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工. 比如:设置文件字体大小,代 ...
- 五分钟教你使用vue-cli3创建项目(三种创建方式,小白入门必看)
五分钟教你使用vue-cli3创建项目(三种创建方式,小白入门必看) 一.搭建vue环境 安装Nodejs 官网下载Nodejs,如果希望稳定的开发环境则下LTS(Long Time Support) ...
- 语音识别从菜鸟到入门必看的参考书目
原标题:语音识别从菜鸟到入门必看的参考书目 此前研究这一方面的容,搜罗了些资料,在这里整理如下,做毕业设计,写毕业论文的朋友购书时可以参考一下: 一.<MATLAB数字信号处理> 编者:王 ...
- c#语言经典程序100例,C#入门必看的实例程序100个 - 源码下载|Windows编程|其他小程序|源代码 - 源码中国...
C#入门必看的实例程序100个\实例01\01.bmp C#入门必看的实例程序100个\实例01\csc编译器路径.txt C#入门必看的实例程序100个\实例01\hello.cs C#入门必看的实 ...
最新文章
- 872.叶子相似的树
- 智领先机 惠普推出家庭信息中心HIC
- 没学过编程能学python吗_没有编程基础,可以自学Python吗?
- python request.get乱码_python的request中文乱码怎么办
- android备忘录教学_android基础备忘录(一)
- 1ke android逆向助手_android: 使用android逆向助手反编译APK
- 左操作数必须为左值_进入“左转弯待转区”被罚怎么回事?
- wxWidgets:事件
- VS2017 下载离线MSDN文档
- 软考网络管理员学习笔记3之第三章网络体系结构
- 求n的阶乘【VB代码实现】
- Hadoop下载地址/hbase下载地址
- R语言 聚类分析代码 系统聚类 K均值聚类 可视化
- lumion渲染太慢、卡顿怎么办?分享3个加快渲染的小技巧
- 软文标题怎么写吸引人?记住这几个套路
- 《书生云超融合一体机》T-CAM评审会召开
- GitHub学生优惠:repl.it 使用--Python爬虫示例
- 牛客刷题——part2
- Echarts icon图标 默认样式 样式总结
- 自律是最大程度的自由