espressif/esp-idf
GitHub: espressif/esp-idf
乐鑫官方的ESP32系列芯片物联网开发框架,提供完整的工具链和组件库用于专业级嵌入式固件开发。
Stars: 17493 | Forks: 8132
# Espressif IoT Development Framework
* [中文版](./README_CN.md)
ESP-IDF 是乐鑫 支持在 Windows、Linux 和 macOS 上运行的 SoC 开发框架。
# ESP-IDF 版本支持计划

- 请阅读[支持政策](SUPPORT_POLICY.md)和[文档](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/versions.html)以获取有关 ESP-IDF 版本的更多信息。
- 请参阅[停更公告](https://www.espressif.com/en/support/documents/advisories?keys=&field_type_of_advisory_tid%5B%5D=817)以获取关于已停止支持的 ESP-IDF 版本的信息。
# ESP-IDF 版本与 SoC 兼容性

有关 ESP-IDF 与芯片版本之间兼容性的详细信息,请参阅 [ESP-IDF 版本与乐鑫 SoC 版本之间的兼容性](https://github.com/espressif/esp-idf/blob/master/COMPATIBILITY.md)。
2016 年之前发布的乐鑫 SoC(ESP8266 和 ESP8285)由 [RTOS SDK](https://github.com/espressif/ESP8266_RTOS_SDK) 提供支持。
# 使用 ESP-IDF 进行开发
## 设置 ESP-IDF
请访问 https://idf.espressif.com/ 获取根据您使用的芯片设置 ESP-IDF 的详细指南链接。
**注意:** 每个 SoC 系列和每个 ESP-IDF 版本都有其自己的文档。关于如何查找文档以及如何检出特定版本的 ESP-IDF,请参阅[版本](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/versions.html)章节。
### 非 GitHub Fork
ESP-IDF 使用相对路径作为其子模块 URL([.gitmodules](.gitmodules))。因此它们链接到 GitHub。如果 ESP-IDF 被克隆到非 GitHub 的 Git 仓库,您需要在 git clone 后运行脚本 [tools/set-submodules-to-github.sh](tools/set-submodules-to-github.sh)。
该脚本为所有子模块设置绝对 URL,从而允许 `git submodule update --init --recursive` 完成。如果从 GitHub 克隆 ESP-IDF,则不需要此步骤。
## 查找项目
除了入门指南中提到的 [esp-idf-template](https://github.com/espressif/esp-idf-template) 项目外,ESP-IDF 在 [examples](examples) 目录中也附带了一些示例项目。
一旦找到您想要处理的项目,请切换到其目录,然后即可对其进行配置和构建。
要基于示例启动您自己的项目,请将示例项目目录复制到 ESP-IDF 目录之外。
# 快速参考
请参阅上面的入门指南链接以获取详细的设置指南。这是使用 ESP-IDF 项目时常用命令的快速参考:
## 设置构建环境
(有关更详细的完整步骤列表,请参阅上面列出的入门指南。)
* 安装入n门指南中提到的主机构建依赖项。
* 运行安装脚本以设置构建环境。选项包括 Windows 的 `install.bat` 或 `install.ps1`,以及 Unix shell 的 `install.sh` 或 `install.fish`。
* 在 Windows 上运行 export 脚本(`export.bat`),或在 Unix 上 source 它(`source export.sh`),在使用 ESP-IDF 之前的每个 shell 环境中都要执行此操作。
## 配置项目
* `idf.py set-target ` 将项目的目标设置为 ``。不带任何参数运行 `idf.py set-target` 以查看支持的目标列表。
* `idf.py menuconfig` 打开一个基于文本的配置菜单,您可以在其中配置项目。
## 编译项目
`idf.py build`
... 将根据配置编译 app、bootloader 并生成分区表。
## 烧录项目
构建完成后,它将打印一个命令行以使用 `esptool` 烧录芯片。但是,您也可以通过运行以下命令自动执行此操作:
`idf.py -p PORT flash`
将 PORT 替换为您的串口名称(例如 Windows 上的 `COM3`,Linux 上的 `/dev/ttyUSB0`,或 MacOS 上的 `/dev/cu.usbserial-X`。如果省略 `-p` 选项,`idf.py flash` 将尝试烧录第一个可用的串口。
这会将整个项目(app、bootloader 和分区表)烧录到新芯片中。串口烧录的设置可以通过 `idf.py menuconfig` 进行配置。
您不需要在运行 `idf.py flash` 之前运行 `idf.py build`,`idf.py flash` 会自动重建任何需要重建的内容。
## 查看串口输出
`idf.py monitor` 目标使用 [esp-idf-monitor 工具](https://github.com/espressif/esp-idf-monitor)来显示来自乐鑫 SoC 的串口输出。esp-idf-monitor 还具有一系列功能来解码崩溃输出并与设备交互。[查看文档页面以了解详细信息](https://docs.espressif.com/projects/esp-idf/en/latest/get-started/idf-monitor.html)。
通过键入 Ctrl-] 退出监视器。
要一次性完成构建、烧录和监视输出,您可以运行:
`idf.py flash monitor`
## 仅编译和烧录 App
初次烧录后,您可能只想构建和烧录您的 app,而不是 bootloader 和分区表:
* `idf.py app` - 仅构建 app。
* `idf.py app-flash` - 仅烧录 app。
如果任何源文件发生更改,`idf.py app-flash` 将自动重新构建 app。
(在正常开发中,如果 bootloader 和分区表没有更改,每次重新烧录它们并没有什么坏处。)
## 擦除 Flash
`idf.py flash` 目标不会擦除整个 flash 内容。然而,有时将设备设置回完全擦除的状态是很有用的,特别是在进行分区表更改或 OTA app 更新时。要擦除整个 flash,请运行 `idf.py erase-flash`。
这可以与其他目标结合使用,即 `idf.py -p PORT erase-flash flash` 将擦除所有内容,然后重新烧录新的 app、bootloader 和分区表。
# 资源
* 最新版本的文档:https://docs.espressif.com/projects/esp-idf/。此文档是根据本仓库的 [docs 目录](docs)构建的。
* [ESP-IDF 核心概念与资源新手指南](https://youtu.be/J8zc8mMNKtc?feature=shared)
* [esp32.com 论坛](https://esp32.com/)是提问和查找社区资源的地方。
* 如果您发现错误或有功能请求,请[查看 github 上的 Issues 部分](https://github.com/espressif/esp-idf/issues)。在开新 Issue 之前,请检查现有的 Issues。
* 如果您有兴趣为 ESP-IDF 做贡献,请查看[贡献指南](https://docs.espressif.com/projects/esp-idf/en/latest/contribute/index.html)。
标签:Bash脚本, ESP32, ESP32-C3, ESP32-S2, ESP32-S3, ESP8266, ESP-IDF, FreeRTOS, IoT, MCU, SoC, SOC Prime, WiFi, 乐鑫, 低功耗, 固件开发, 实时操作系统, 客户端加密, 嵌入式开发, 嵌入式系统, 嵌入式软件, 开发工具, 开源硬件, 微控制器, 无线通信, 智能家居, 物联网开发框架, 硬件抽象层, 硬件编程, 系统开发包, 网络安全监控, 网络安全研究, 芯片支持, 蓝牙, 逆向工具, 驱动开发