标题: 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
- 安装 ESP-IDF 和 QEMU 模拟器
- 项目创建和编译
- 使用 IDF 的
idf.py
命令创建新项目 - 在 Qt Creator 中打开项目并进行编译
- 使用 QEMU 模拟器启动 ESP32
- 使用 IDF 的
- 调试
- 命令行调试
- 使用 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 完成。
安装 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 模拟器。
国内网络不好的朋友要记得设置
set IDF_GITHUB_ASSETS=dl.espressif.cn/github_assets
走国内代理下载。
运行 export.bat
脚本来刷新环境变量。
运行以下命令来验证 QEMU 模拟器是否正确安装:
qemu-system-xtensa.exe --M help
该命令将显示 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 模拟器。