Qt Creator 与 ESP-IDF QEMU 模拟器使用指南

news2024/9/9 0:22:37

标题: Qt Creator 与 ESP-IDF QEMU 模拟器使用指南

概要: 本文为开发者提供了使用 Qt Creator 和 ESP-IDF QEMU 模拟器进行 ESP32 开发的详细指南,包括环境准备、项目创建和编译、模拟器设置、编程和调试等方面的内容。通过本指南,可以快速上手 Qt Creator 和 ESP-IDF QEMU 模拟器,开始开发自己的 ESP32 项目。

关键词: Qt Creator, ESP-IDF, QEMU 模拟器, ESP32, 开发者指南

  • 环境准备
  • 安装必要工具
    • 安装 ESP-IDF 和 QEMU 模拟器
      • 下载 ESP-IDF 源代码
      • 安装 IDF-ESP 工具
      • 安装 QEMU 模拟器
    • 配置 Qt Creator
  • 项目创建和编译
    • 使用 IDF 的 idf.py 命令创建新项目
    • 在 Qt Creator 中打开项目并进行编译
    • 使用 QEMU 模拟器启动 ESP32
  • 调试
    • 命令行调试
    • 使用 QtCreator 调试。

环境准备

在开始使用 Qt Creator 和 IDF QEMU 模拟器之前,需要确保你的环境已经准备好。

安装必要工具

在开始使用 Qt Creator 和 IDF QEMU 模拟器之前,需要确保你的环境已经准备好。

  • Git
  • Python(3.8+)

设置 Python 国内镜像代理

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.trusted-hosts pypi.tuna.tsinghua.edu.cn
安装 ESP-IDF 和 QEMU 模拟器

可以从 ESP-IDF 的官方网站下载并安装最新版本的 ESP-IDF。QEMU 模拟器则可以从 espressif-qemu 分支仓库上下载安装。

下载 ESP-IDF 源代码

递归克隆 ESP-IDF 仓库

git clone --recursive https://github.com/espressif/esp-idf.git

如果你需要克隆指定标签仓库和深度,这个命令克隆一个指定的标签,指定的深度,并递归包含所有子模块。
你可以替换 <tag_name> 为你的想要的标签名,和 <depth> 为你想抓取的提交数量。

git clone -b <tag_name> --depth <depth> --recursive <repository_url>

如果网络连接不稳定,可以使用下面的命令通过加速下载。

git clone --recursive https://gh-proxy.com/https://github.com/espressif/esp-idf.git

具体来说,这行命令会通过 gh-proxy.com 下载,针对一些网络不太好的地区可能会有所帮助

截止 2024/07/30 ,以下加速都可用。
https://ghproxy.org/
https://gh-proxy.com/
https://pd.zwc365.com/

使用 github 代理加速 clone 时,设置 git 配置项。
此命令会将 github url 重定向到 gh-proxy.com,使 clone 速度更快。

git config --global url."https://gh-proxy.com/github.com/".insteadof "https://github.com/"
安装 IDF-ESP 工具

在 windwos 系统中,使用仓库中的 install.bat 脚本执行安装 IDF-ESP 工具。

设置 IDF_TOOLS_PATH 环境变量,可指定安装路径,如没有设置则默认安装在当前用户 ~/.espressif 目录。
设置 IDF_GITHUB_ASSETS 环境变量,可加快国内下载速度。

cd <esp-idf_repository_url>
set IDF_TOOLS_PATH=<your_install_path>
set IDF_GITHUB_ASSETS=dl.espressif.cn/github_assets
install.bat

安装完成后,使用如下指令设置永久的环境变量,确保后续调用 export.bat 脚本。正确读取 ESP-IDF 工具路径:

setx IDF_TOOLS_PATH <your_install_path>
setx IDF_GITHUB_ASSETS dl.espressif.cn/github_assets

当然,也可以通过UI的方式,编辑环境变量,命令行窗口输入 rundll32 sysdm.cpl,EditEnvironmentVariables 打开环境变量编辑UI,在里面设置上述环境变量。

最后运行 export.bat 脚本,如看到类似以下输出,则说明安装 ESP-IDF 完成。
export.bat

安装 QEMU 模拟器

在接下来的步骤中,我们将使用 IDF-ESP 工具中创建的 Python 虚拟环境来安装 QEMU 模拟器。
在命令行中执行以下命令:

C:\Users\root\.espressif\python_env\idf5.4_py3.12_env\Scripts\python.exe %IDF_PATH%/tools/idf_tools.py install qemu-xtensa qemu-riscv32

该命令将使用虚拟环境中的 Python 执行器来安装 QEMU 模拟器。

qemu

国内网络不好的朋友要记得设置 set IDF_GITHUB_ASSETS=dl.espressif.cn/github_assets 走国内代理下载。

运行 export.bat 脚本来刷新环境变量。
qemu

运行以下命令来验证 QEMU 模拟器是否正确安装:

qemu-system-xtensa.exe --M help

该命令将显示 QEMU 模拟器的支持的机器信息。

qemu

通过完成这些步骤,我们已经成功配置 QEMU 模拟器,并可以继续进行后续的开发工作。

https://github.com/espressif/esp-toolchain-docs/tree/main/qemu

配置 Qt Creator

添加编译器 gcc 和 g++。
在这里插入图片描述

添加调试器 gdb
在这里插入图片描述

上面编译器和调试器是可选。

添加 BareMetal 插件
在这里插入图片描述

添加 OpenOCD
在这里插入图片描述

添加一个裸机设备并选择我们添加的 OpenOCD
在这里插入图片描述

项目创建和编译

使用 IDF 的 idf.py 命令创建新项目

可以使用以下命令创建一个新的 ESP-IDF 项目:

idf.py create-project my_project

此命令会在当前目录下创建一个名为 “my_project” 的新项目。

在 Qt Creator 中打开项目并进行编译

在命令行中打开 Qt Creator,确保 IDE 继承命令行环境变量:

cd my_project
qtcreator.exe .

在这里插入图片描述

默认情况下,目标为 ESP32。如果需要更改目标,可以使用以下命令:

idf.py set-target <target>
使用 QEMU 模拟器启动 ESP32

可以使用以下命令启动 QEMU 模拟器:

C:\Users\root\.espressif\tools\qemu\bin\qemu-system-xtensa.exe -nographic -machine esp32 -drive file=build/esp-Debug/flash_image.bin,if=mtd,format=raw

生成 flash_image.bin 文件

可以使用以下命令生成 flash_image.bin 文件:

esptool.py --chip esp32 merge_bin --fill-flash-size 4MB -o flash_image.bin @flash_args

也可以在编译后添加自定义步骤进行生成。

在这里插入图片描述

⚠️

  • 请确保 QEMU 模拟器已正确安装并配置。
  • 请确保 flash_image.bin 文件已正确生成。
  • 如果需要更改目标或配置,请使用 idf.py 命令进行设置。

调试

使用以下指令启动模拟器,并等待调试器连接。

qemu-system-xtensa.exe -nographic -s -S -machine esp32 -drive file=build/esp-Debug/flash_image.bin,if=mtd,format=raw
命令行调试

可以使用以下命令启动 GDB:

xtensa-esp32-elf-gdb.exe build/esp-Debug/hello_world.elf -ex "target remote:1234" -ex "monitor system_reset" -ex "tb app_main" -ex "c"

n(next) 步过,s(setp) 步进。

此命令会启动 GDB,并连接到模拟器的程序。可以通过 GDB 提供的命令行接口来进行调试。

使用 QtCreator 调试。

启动模拟器

qemu-system-xtensa.exe -nographic -s -S -machine esp32 -drive file=build/esp-Debug/flash_image.bin,if=mtd,format=raw

点击调试按钮即可调试程序。

在这里插入图片描述

以上就是 Qt Creator IDE QEMU 使用指南的初步内容。希望这可以帮助你开始使用 Qt Creator 和 IDF QEMU 模拟器。

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

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

相关文章

bean管理

获取bean bean作用域 第三方bean

如何使用虚拟机如何安装 Kali Linux ?

1.下载虚拟机&#xff1a;https://www.virtualbox.org/wiki/Downloads 选择你的系统版本 2.下载kali linux系统镜像&#xff1a;https://www.kali.org/get-kali/#kali-virtual-machines 全部下载完成后&#xff0c;我们会得到以下文件&#xff01; 1.压缩Kali Linux压缩包 2.安…

OpenCV C++的网络实时视频流传输——基于Yolov5 face与TCP实现实时推流的深度学习图像处理客户端与服务器端

前言 在Windows下使用TCP协议&#xff0c;基于OpenCV C与Yolov5实现了一个完整的实时推流的深度学习图像处理客户端与服务器端&#xff0c;为了达到实时传输的效果&#xff0c;客户端使用了多线程的方式实现。深度学习模型是基于onnxruntime的GPU推理。&#xff0c;实现效果如…

跨境电商网红营销SOP流程2.0丨出海笔记

之前几位大神已经在出海笔记分享过网红营销一些很落地的干货&#xff0c;无论是想自己找红人还是找Agency都很有必要了解下这里面的流程的&#xff0c;下面我大概总结了一个SOP2.0 供大家快速上手&#xff1a; 以上是网红营销的SOP&#xff0c;做到以上部分基本60分没问题了…

【云原生】Kubernetes中crictl的详细用法教程与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

AI作图接口要怎么调用呢?

一、什么是AI作图&#xff1f; 基于AI大模型的深度学习算法和大规模的图像数据训练&#xff0c;输入图片和关键词&#xff0c;可生成独特及富有创意的山水风格图片。 二、AI作图使用场景有哪些呢&#xff1f; 1.广告与营销&#xff1a; 为产品制作吸引人的宣传海报、广告图片…

OpenStack——nova

计算服务nova nova简介——计算服务nova&#xff08;Iaas侧服务&#xff09; * 提供大规模、可扩展、按需自助服务的计算资源 * 支持管理裸机&#xff0c;虚拟机和容器 * Nova即OpenStack Compute service&#xff0c;负责提供计算资源的模块&#xff0c;也是OpenStack中的核…

以西门子winCC为代表的组态界面,还是有很大提升空间的。

组态界面向来都是功能为主&#xff0c;美观和体验性为辅的&#xff0c;这也导致了国内的一些跟随者如法炮制&#xff0c;而且很多操作的工程师也是认可这重模式&#xff0c;不过现在一些新的组态软件可是支持精美的定制化界面&#xff0c;还有3D交互效果&#xff0c;这就是确实…

坐标系转换公式

坐标系转换2种情况&#xff1a; 一、XOY坐标系不动&#xff0c;点P(x, y) 沿顺时针方向旋转 θ \thetaθ&#xff0c;得在XOY坐标系的坐标为P(x′, y′) 设某点与原点连线和X轴夹角为b度&#xff0c;以原点为圆心&#xff0c;逆时针转过a度 , 原点与该点连线长度为R, [x,y]为…

前端开发:Vue2.0桌面组件库-Element

引入Element的步骤&#xff1a; 1.在vscode终端中执行命令&#xff08;需要联网&#xff09; 下载成功 2.在main.js中导入element.ui组件库。 同上&#xff0c;自定义的组件需要先在根组件中引入。 3.访问官网&#xff0c;复制调整代码

C语言:指针的进阶

指针的进阶 一、字符指针&#xff08;一&#xff09;字符指针&#xff08;二&#xff09;常量字符串和字符数组 二、指针数组和数组指针&#xff08;一&#xff09;指针数组 int *p1[10]&#xff08;二&#xff09;数组指针 int (*p2)[10] 三、函数指针&#xff08;一&#xff…

【Unity编辑器拓展】GraphView自定义可视化节点

1、创建节点区域脚本 其中的new class UxmlFactory&#xff0c;可以让该元素显示在UI Builder中&#xff0c;我们就可以在Library-Project中看到我们新建的这两个UI元素&#xff0c;就可以拖入我们的UI窗口编辑了 public class NodeTreeViewer : GraphView {public new class…

UnityShaderUI编辑器扩展

前言&#xff1a; 当我们在制作通用Shader的时候&#xff0c;避免不了许多参数混杂在一起&#xff0c;尽管在材质面板已经使用过Header标签来区分&#xff0c;但是较长的Shader参数就会导致冗余&#xff0c;功能块不够简约明了&#xff0c;如图&#xff1a; 对于Shader制作者来…

如何在 VPS 上安装和使用 VirtualMin

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 关于 Virtualmin Virtualmin 是 Webmin 的一个模块&#xff0c;允许对&#xff08;多个&#xff09;虚拟专用服务器进行广泛的管理。您…

二进制部署k8s集群之master节点和etcd数据库集群(上)

目录 1.操作系统初始化配置 2.升级Linux内核 3.部署docker引擎 4.部署etcd集群 4.1 了解etcdctl工具对etcd做增删改查 4.2 通过etcdctl工具实现数据库的备份和恢复 5.部署Master组件 6.部署 Worker Node 组件 二进制搭建 Kubernetes v1.20 k8s集群master01&#xff1a…

230.信号量

信号量是一种用于多线程同步的机制&#xff0c;可以控制对共享资源的访问。信号量的基本概念是使用计数器来控制多个线程对共享资源的访问。信号量可以分为两类&#xff1a;计数信号量&#xff08;Counting Semaphore&#xff09;和二进制信号量&#xff08;Binary Semaphore&a…

项目风险管理:从理论到实践的探索

项目风险管理&#xff1a;从理论到实践的探索 前言一、项目风险识别二、项目风险应对策略三、综合应对策略结语 前言 在当今快速变化的商业环境中&#xff0c;项目管理已成为组织实现目标的关键工具。然而&#xff0c;项目的成功往往伴随着各种不确定性和潜在风险。有效的风险管…

JCR一区级 | Matlab实现SO-Transformer-LSTM多变量回归预测(蛇群算法优化)

JCR一区级 | Matlab实现SO-Transformer-LSTM多变量回归预测&#xff08;蛇群算法优化&#xff09; 目录 JCR一区级 | Matlab实现SO-Transformer-LSTM多变量回归预测&#xff08;蛇群算法优化&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【JCR一区级】M…

Oracle基础-SQL99标准的表连接方法

SELECT * FROM T_NUM CROSS JOIN T_GROUP; --笛卡尔积 ALTER TABLE T_GROUP RENAME COLUMN GID TO ID; --修改字段名 SELECT * FROM T_NUM NATURAL JOIN T_GROUP; --自然连接 会根据两表同名字段或者主外键自动关联 SELECT * FROM T_NUM JOIN T_GROUP USING(ID); --USING连接&…

正余弦算法作者又提出新算法!徒步优化算法(HOA)-2024年一区顶刊新算法-公式原理详解与性能测评 Matlab代码免费获取

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类智能优化算法及其改进的朋友&#xff0c;可关注我的公众号&#xff1a;强盛机器学习&#xff0c;不定期会有很多免费代码分享~ 目录 原理简介 算法伪代码 性能测评 参考文献 …