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的基本使用方法(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-a9cortex-a9-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的,参考价值不大),可以看下面这些文章:
(对了顺便说一下,这个官方的qume虽然支持几个stm32板子,但是串口stm32程序输出不到控制台的。想输出到控制台,可以看我别的qemu文章,你一定会有收获的)
如果觉得官方qemu支持的板子不够多,qemu因为是开源的,所以可以自己修改源码,添加一些驱动代码啥的,重新编译成可执行文件,定制自己要模拟的板子。
主要是对支持arm的stm32做了定制,其实最新的官方qemu已经支持很多的cortex-m内核的stm32了,自己用,其实就用官方的就行。
1. 专门对stm32各种板子(Olimex STM32 p103这板子),做了全面的模拟,较大的增强了qemu:(对了顺便说一下,这个的qume的串口输出不到控制台,原作者自己也说了不知道为什么,而且多个博客也看到有人说printf无效的。想输出到控制台,可以看我别的qemu文章,你一定会有收获的)
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中如果想输出程序打印信息,需要使用半主机模式:半主机是用于 ARM 目标的一种机制,可将来自应用程序代码的输入/输出请求传送至运行调试器的主机。 例如,使用此机制可以启用 C 库中的函数,如 printf() 和 scanf(),来使用主机的屏幕和键盘,而不是在目标系统上配备屏幕和键盘。
嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
1.问题描述使用Python的turtle(海龟绘图)模块提供的函数绘制直线。2.问题分析一幅复杂的图形通常都可以由点、直线、三角形、矩形、平行四边形、圆、椭圆和圆弧等基本图形组成。其中的三角形、矩形、平行四边形又可以由直线组成,而直线又是由两个点确定的。我们使用Python的turtle模块所提供的函数来绘制直线。在使用之前我们先介绍一下turtle模块的相关知识点。turtle模块提供面向对象和面向过程两种形式的海龟绘图基本组件。面向对象的接口类如下:1)TurtleScreen类:定义图形窗口作为绘图海龟的运动场。它的构造器需要一个tkinter.Canvas或ScrolledCanva
文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定
TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是
文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景 最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。 在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记