qemu仿真调试esp32,以及安装版和vscode版配置区别

不得不说,乐鑫在官网的qemu介绍真的藏得很深

首先在首页的sdk的esp-idf页面里找找

然后页面拉倒最下面

入门指南

我这里选择esp32-s3

再点击api指南-》工具

才会看到qemu的介绍

QEMU 模拟器 - ESP32-C3 - --- ESP-IDF 编程指南 latest 文档https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32c3/api-guides/tools/qemu.html#id2

文档中也么有windows的安装方法。

先跳过下面两个标注的,继续往下看我怎么安装windows的vscode的qemu

++++++++++++++++++++++++++++++++++++++++++++++++++++

下面这个是qemu维护的分支。看看就好,要编译,先掠过

esp-toolchain-docs/qemu/README.md at main · espressif/esp-toolchain-docs · GitHub

https://github.com/espressif/esp-toolchain-docs/blob/main/qemu/README.md

esp-toolchain-docs/qemu/README.md at main · espressif/esp-toolchain-docs · GitHubRepository with documentation related to toolchains and debuggers maintained by Espressif - esp-toolchain-docs/qemu/README.md at main · espressif/esp-toolchain-docshttps://github.com/espressif/esp-toolchain-docs/blob/main/qemu/README.md

++++++++++++++++++++++++++++++++++++++++++++++++++++

=====================插曲==========================

但是乐鑫官网提供的是源代码,我上网找了一个哥们的的文章,有句话说的很好感动了我,选了windows,我干嘛还要去编译。

为了在qemu中模拟esp32,在windows中安装qemu esp32c3 riscv32模拟环境_win11 安装esp32 qemu-CSDN博客文章浏览阅读1.3k次,点赞37次,收藏20次。为了实践方便,准备在windows中安装qemu esp32c3 riscv32模拟环境。说实话,在Windows中安装qemu我认为反而更难一点,比如刚开始为了找Windows下已经编译好的二进制文件,就找了好久。在qemu官网,是提供了源代码,供大家下载编译使用。问题是我都选了Windows,还选编译安装,那我Windows不是白选了吗?选Windows不就是为了图它安装软件简单吗?最终找到一家德国的网站,直接提供编译好的安装文件。_win11 安装esp32 qemuhttps://blog.csdn.net/skywalk8163/article/details/144491103参照此文

QEMU for Windows -- Installers (64 bit)QEMU Binaries for Windowshttps://qemu.weilnetz.de/w64/一个德国人的网站,提供了一个安装包,找一个下载安装就好了

复制代码
这个是那个哥们提供的地址,已经失效了
wget https://qemu.weilnetz.de/w64/qemu-w64-setup-20241124.exe
我重新找了一下地址
wget https://qemu.weilnetz.de/w64/2024/qemu-w64-setup-20241124.exe
用迅雷下载也一样的

173M,不算小

然后,我没装,因为看了一眼那哥们的文章后面一句话

==========================结束插曲==================================

最后他也还是按照乐鑫官网安装的。看来乐鑫说维护一个qemu分支是有原因的。

我问了一下kimi,kimi给了一个安装脚本,试试啊看

复制代码
idf_tools.py install qemu-xtensa qemu-riscv32

安装了,看下结果

然后项目里运行idf install

整个项目就被重新编译了一遍。等下再看看

编译完,直接运行

复制代码
idf.py qemu monitor

helloworld就被完美运行了,命令行里看到的和实际跑硬件的代码逻辑输出是一样的

//

下来我在vscode中试试qemu

然后,一直不成功,提示没有安装qemu,经过不懈努力,终于搞明白怎么回事了

不同命令行环境的差异

VSCode 的默认终端是 PowerShell,而 PowerShell 和 CMD 使用不同的环境变量引用方式。
在 CMD 中,使用 %IDF_PATH% 来引用环境变量。
在 PowerShell 中,使用 $env:IDF_PATH 来引用环境变量。

原来是这样,两个环境使用的不同,vscode默认是powershell,这个原因造成的。

这下终于正确了。

idf.py --version 和 Get-Command idf.py是查看版本和查找安装路径的命令。

、、、、、、、、、、、划重点、、、、、、、、、、、、、、

好了,下面这段话,是我花了一晚上时间,终于把idf的安装版本和vscode版本的差别搞清楚了

两者真的是可混淆,也可独立,如果不清除idf的设计意图,还真的是容易一脸懵逼。

单刀直入,说说后来感悟到的设计意图,人家乐鑫一开始就是把框架和工具分开了,

1.比如我的esp-idf-v5.3.1.zip下载下来就是框架文件,直接解压缩就可以了,就是一个完整的框架,里面包含了idf库,包括一些源文件啥的。components这个文件夹下就是封装了各种功能的代码,我看都是.h和 .c,这么看idf就是开源的了。明白了。

2.第二件事,就是tool工具了,这里我就吐槽了,tool这个文件夹名字让我晕头转向的原因,就是名字不能换一个嘛。。。。。

我们仔细来看,这个其实是一个最最基本的,比如cmake之类的工具,也就是编译器之类的,最基础的自带的一些工具,甚至于没有python,

然后我们讲解安装版和vscode版的区别,

install.bat安装版 ::我们使用install.bat去安装的时候,会使用操作系统内的python,而不是带一个内置python(vscode版却是内置的)。并且,这个安装主要就都是下载和解压缩复制文件,貌似没有操作系统关联的工作,重点是,这个脚本会把项目需要的工具包,安装到

这个位置,他么的名字也叫tools,位置难找,而且文件夹名字一样,我会误以为框架目录下那个就是工具包。其他那个目录交个base_tools多好,反正后续的工具都是安装在其他位置。

vscode插件版::这个插件版本,在配置插件时候有两个文件夹,一个是框架位置,一个是工具包位置。框架位置是你必须选中的就是刚才那个加压缩后的框架位置,所以,两个版本框架位置可以共用(工具位置按照我现在理解也可以共用,但是我就不尝试了,因为我对比了一下文件夹,默认安装,两个文件夹内容都不一致)。框架就选择解压缩后的就行,然后工具包,就是会自动完成安装的工作,而不需要再去脚本执行命令。这个时候,后续项目用到的文件夹,就是你指定的文件夹了。这个关系搞清楚,就不再混淆了。

、、、、、、、、、、、前面是两个版本的区别和关系、、、、、、、、、、、、、、、、、、

好了,两个版本的关系搞清楚了,就不再有啥困扰的了

vscode在他自己的终端窗口去执行命令,就会按照vscode的配置文件中的目录,也就是你的插件安装指定的tools目录中去下载和安装qemu了。

出现在自己定义的文件夹了。

vscode插件版本,在终端中输入

复制代码
idf monitor qemu

启动qemu。至于右下角那个讨厌的按钮,好像是vscode自带插件的启动方式,好像还需要配置脚本,太多太乱了,有一个能用就行了,我就不再研究了。

==========================================

再说一下xtensa和riscv32两种架构,在乐鑫里主要对应esp32c3和esp32S3,两种最主要的芯片区别在这,架构不同,性能和耗电也不同,应用的方向也不同。

早期的esp32系列是Xtensa架构,8266是RISC 架构。

这么看乐鑫好像esp32和8266算是第一代,每个架构各一个产品系列

到最近几年第二代主流芯片就是c3和s3这俩最火了,也是每个架构各一个。

我只用过这四个芯片,所以给我的主观感受是这样,好了,本文结束了。

相关推荐
Msshu1233 小时前
受电端快充协议芯片,支持外部MCU读取充电器功率信息,支持最大140W功率给设备供电
单片机·嵌入式硬件
嵌入式-老费4 小时前
Linux上位机开发实践(mcu模块的补充应用)
单片机·嵌入式硬件
青牛科技-Allen5 小时前
D133AL低功耗LDO稳压器:技术解析与应用设计
科技·单片机·嵌入式硬件·笔记本电脑·激光雷达电机·游戏本散热风扇
L小李要学习7 小时前
STM32学习
stm32·嵌入式硬件·学习
正点原子9 小时前
【正点原子STM32MP257连载】第二章 ATK-DLMP257B使用前准备 #串口软件 #MobaXterm
linux·stm32·单片机·嵌入式硬件
ℳ๓. Sweet9 小时前
【STM32】在FreeRTOS下使用硬件SPI收发数据出现的时序耦合问题(WK2124芯片为例)
stm32·单片机·嵌入式硬件
charlie11451419110 小时前
IMX6ULL2025年最新部署方案2在Ubuntu24.04上编译通过Qt5.12.9且部署到IMX6ULL正点原子开发板上
linux·嵌入式硬件·qt·系统架构·嵌入式软件·移植教程
努力创造奇迹12 小时前
STM32 HAL库 实现485通信
stm32·单片机·嵌入式硬件
Tlog嵌入式12 小时前
STM32提高篇: 以太网通讯
网络·stm32·单片机·嵌入式硬件·mcu·iot
菜狗想要变强14 小时前
RVOS-7.实现抢占式多任务
linux·c语言·驱动开发·单片机·嵌入式硬件·risc-v