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

标题: 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.rhkb.cn/news/390085.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Learning vtkjs之Calculator

过滤器 公式计算器 Calculator 介绍 The Calculator filter is a fast way to add derived data arrays to a dataset. These arrays can be defined over points, cells, or just field data that is “uniform” across the dataset (i.e., constant over all of space). Va…

手把手教你实现日期类

目录 前言 1.头文件的实现 2.日期类函数各项功能实现 2.1 初始化和打印&#xff08;比较简单&#xff09; 2.2日期大小判断 2.3日期的加减运算 3.日期类的输入输出 4.测试代码参考 结束语 前言 前面我们讲解了类的对象的大部分知识&#xff0c;例如拷贝构造&#xff0c…

优化数据处理效率,解读 EasyMR 大数据组件升级

EasyMR 作为袋鼠云基于云原生技术和 Hadoop、Hive、Spark、Flink、Hbase、Presto 等开源大数据组件构建的弹性计算引擎。此前&#xff0c;我们已就其展开了多方位、多角度的详尽介绍。而此次&#xff0c;我们成功接入了大数据组件的升级和回滚功能&#xff0c;能够借助 EasyMR …

乐乐音乐Kotlin版

简介 乐乐音乐Kotlin版&#xff0c;主要是基于ExoPlayer框架开发的Android音乐播放器&#xff0c;它支持lrc歌词和动感歌词(ksc歌词、krc歌词、trc歌词、zrce歌词和hrc歌词等)、多种格式歌词转换器及制作动感歌词、翻译歌词和音译歌词。 编译环境 Android Studio Jellyfish | …

canvas-视频绘制

通过Canvas元素来实时绘制一个视频帧&#xff0c;并在视频帧上叠加一个图片的功能可以当作水印。 获取Canvas元素&#xff1a; let canvas document.getElementById(canvas) 通过getElementById函数获取页面中ID为canvas的Canvas元素&#xff0c;并将其存储在变量canvas中。 …

【C++】C++11(可变参数模板、lambda表达式、包装器)

文章目录 1. 可变参数模板1.1 介绍1.2 emplace系列接口实现 2. lambda表达式2.1 语法介绍2.2 原理 3. 包装器4. bind 1. 可变参数模板 1.1 介绍 可变参数我们在C语言阶段已经了解过了&#xff0c;C语言中叫做可变参数列表&#xff0c;其中使用 ... 代表可变参数。 C语言中的可…

【给嵌入式新人的几条建议(共勉):三-C语言基础怎么补?】

给嵌入式新人的几条建议&#xff08;共勉&#xff09;&#xff1a;三-C语言基础怎么补&#xff1f; 前言1、先回答一个问题&#xff0c;对C语言的害怕到底在哪&#xff1f;&#xff08;纠正认知&#xff09;2、C语言基础&#xff0c;要补全部吗&#xff1f;No2.1 先看下自己属于…

企业个人信息安全保护实践

在数字化浪潮的推动下&#xff0c;个人信息安全问题日益凸显&#xff0c;企业如何在合规的框架下保护个人信息安全&#xff0c;成为了一项重要课题。结合国家标准的个人信息合规审计要求&#xff0c;以下为企业个人信息安全保护的最佳实践路径。 一、构建合规的个人信息保护体…

【文件解析漏洞】

使用windows2003sever服务器 第一个&#xff1a;目录解析 1、打开网站目录&#xff0c;右键打开资源管理器 新建一个1.asp文件 在1.asp目录下新建一个2.txt&#xff0c;输入asp的语句 2、使用本机访问windows2003的IP地址 访问http://192.168.189.155/1.asp/2.txt即可 第…

论文翻译:Large Language Models in Education: Vision and Opportunities

Large Language Models in Education: Vision and Opportunities 文章目录 教育中的大型语言模型&#xff1a;愿景与机遇摘要1 引言2. 教育与LLMsA. 教育背景B. LLMs背景C. 智能教育D. 教育中的LLMs 3. EduLLMs的关键技术4. LLM赋能教育A. LLMs在教育中的应用B. LLMs下教育的特…

Netty4自学笔记 (3) - Netty NIO Server和Client 样例说明

全文详见个人独立博客&#xff1a;Netty4自学笔记 (3) - Netty NIO Server和Client 样例说明 Netty4自学笔记 (3) - Netty NIO Server和Client 样例说明更新节奏缓慢&#xff0c;因为每晚学习注意力不够集中&#xff0c;学习进展缓慢。本还给自己找了一大堆其他理由&#xff0…

适用于个人使用的十大数据恢复工具:综合指南

有许多数据恢复工具和软件可用于帮助恢复丢失或损坏的文件。通过了解您的需求并考虑这里探讨的工具&#xff0c;您将能够选择最佳的数据恢复软件&#xff0c;并希望找回您丢失的宝藏。在本综合指南中&#xff0c;我们将探索个人使用的十大数据恢复工具&#xff0c;重点介绍它们…

自定义CustomRatingBar控件

通过自定义RatingBar的样式实现⭐️⭐️⭐️指示器的方式功能过于受限&#xff0c;而且显示的样式阴影会受到影响。 系统自带显示&#xff1a; 自定义样式&#xff1a; 因此简单自一个符合要求的 CustomRatingBar 支持设置星星数量支持设置星星Rating(float)支持设置空显示…

NICE Seminar(2023-07-16)|演化算法的理论研究到底有什么用?(南京大学钱超教授)

模式定理&#xff08;Schema Theorem&#xff09; 模式定理&#xff08;Schema Theorem&#xff09;是遗传算法&#xff08;Genetic Algorithm, GA&#xff09;的重要理论基础&#xff0c;由约翰霍兰德&#xff08;John Holland&#xff09;在1975年提出。它描述了具有特定模式…

CSS mask-image 实现边缘淡出过渡效果

使用场景 在生产环境中&#xff0c;遇到一个需求&#xff0c;需要在一个深色风格的大屏页面中&#xff0c;嵌入 Google Maps。为了减少违和感&#xff0c;希望地图四边能够淡出过渡。 这里的“淡出过渡”&#xff0c;关键是淡出&#xff0c;而非降低透明度。 基于 Google Ma…

Tecplot安装error找不到指定模块之解决方案

最近有小伙伴反应&#xff0c;在安装Tecplot 2023版本时&#xff0c;参考教程来操作很顺利&#xff0c;但是在开启软件后&#xff0c;有一个error弹窗&#xff0c;内容如下&#xff1a; 随后用中英文翻译&#xff1a;找不到指定模块 同时&#xff0c;软件内部的Tool工具栏打不…

大路灯护眼灯有必要买吗?五款护眼大路灯推荐

大路灯护眼灯有必要买吗&#xff1f;许多消费者对护眼大路灯的了解不够&#xff0c;总是被不专业产品“耍”得团团转。就比如市面上很多声称用了眼睛就不近视的产品&#xff0c;实际上它们毫无专业技术沉淀&#xff0c;还疏于调校光线稳定性、光线均匀度等上百项核心参数&#…

基于IOT架构的数据采集监控平台!

LP-SCADA数据采集监控平台是蓝鹏测控推出的一款聚焦于工业领域的自动化数据采集监控系统&#xff0c; 助力数字工厂建设的统一监控平台。 为企业提供从下到上的完整的生产信息采集与集成服务&#xff0c;从而为企业综合自动化、工厂数字化及完整的"管控一体化”的解决方案…

校园水电费管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;教师管理&#xff0c;宿舍信息管理&#xff0c;学生缴费管理&#xff0c;教师缴费管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;我的 开发系统…

抖音视频素材一般都从哪里找?抖音视频素材库分享

在浏览抖音时&#xff0c;你是否曾被那些内容丰富、制作精良的视频所吸引&#xff1f;这些视频背后的秘密其实非常简单——高质量的视频素材。优质素材能够让你的视频更加出彩。然而&#xff0c;许多抖音内容创作者在初期可能会困惑&#xff1a;这些视频素材究竟从哪里获取呢&a…