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 Schedule](https://dl.espressif.com/dl/esp-idf/support-periods.svg?v=1) - 请阅读[支持政策](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 兼容性 ![Chip support](https://dl.espressif.com/dl/esp-idf/chip-support.svg?v=1) 有关 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, 乐鑫, 低功耗, 固件开发, 实时操作系统, 客户端加密, 嵌入式开发, 嵌入式系统, 嵌入式软件, 开发工具, 开源硬件, 微控制器, 无线通信, 智能家居, 物联网开发框架, 硬件抽象层, 硬件编程, 系统开发包, 网络安全监控, 网络安全研究, 芯片支持, 蓝牙, 逆向工具, 驱动开发