学习笔记2 Beetle ESP32 C6迷你开发板试用初体验之尝试使用IDF
一、项目介绍
非常荣幸能获得Beetle ESP32 C6迷你开发板试用评测的机会,在学习笔记1中我们介绍了在ArduinoIDE中让Beetle ESP32 C6迷你开发板闪烁自带LED灯的程序,有关Beetle ESP32 C6迷你开发板的介绍请点击上一篇学习笔记--学习笔记1 Beetle ESP32 C6迷你开发板试用初体验之点灯。
本次案例,我们使用官方推荐的Windows Installer安装ESP-IDF,从而完成编译代码,点灯的效果。
二、硬件需要
- ESP32-C6 开发板
- USB 数据线
- Windows10系统电脑
三、软件下载与安装
打开乐鑫官网,找到并下载Windows Installer安装的程序。
需在 ESP32-C6 上使用 ESP-IDF,需要安装以下软件:
- 设置 工具链,用于编译 ESP32-C6 代码;
- 编译构建工具 —— CMake 和 Ninja 编译构建工具,用于编译 ESP32-C6 应用程序;
3.获取 ESP-IDF 软件开发框架。该框架已经基本包含 ESP32-C6 使用的AAPI(软件库和源代码)和运行 工具链 的脚本;
有关ESP-IDF、工具链、工程、代码和硬件的关系如图所示:
下载软件
安装软件
- 双击下载的软件,即可打开安装,然后无脑地选择下一步、下一步即可
- 安装结束时,如果勾选了''' Run ESP-IDF PowerShell Environment '''或''' Run ESP-IDF Command Prompt (cmd.exe)''',安装程序会在选定的提示符窗口启动 ESP-IDF。
四、使用命令提示符
-
Win10的命令提示符(CMD)是一个强大的工具,用于执行各种系统命令和脚本。通过命令提示符,用户可以进行系统管理、文件操作、网络配置等任务。如在命令提示符窗口中,用户可以输入各种命令来执行所需的操作。例如,可以使用“mstsc”命令打开远程桌面连接,使用“services.msc”命令打开本地服务设置,或者使用“notepad”命令打开记事本等。此外,命令提示符还支持使用各种高级命令和脚本进行更复杂的操作。在Win10中,有多种方法可以打开命令提示符:
- 通过“开始”菜单打开:点击“开始”按钮,然后向下滚动并展开“Windows系统”文件夹,找到并点击“命令提示符”。
- 使 用搜索功能:在任务栏的搜索框中输入“命令提示符”或“cmd”,然后从搜索结果中找到并点击打开。
- 使用快捷键:按下Win+R组合键打开“运行”对话框,然后输入“cmd”并按下回车键。
- 以管理员身份运行命令提示符可以提供更高的权限,从而允许执行某些需要管理员权限的命令。要以管理员身份打开命令提示符,可以右键点击搜索结果中的“命令提示符”并选择“以管理员身份运行”。
-
ESP-IDF 工具安装器可在“开始”菜单中,创建一个打开 ESP-IDF 命令提示符窗口的快捷方式。本快捷方式可以打开 Windows 命令提示符(即 cmd.exe),并运行 export.bat 脚本以设置各环境变量(比如 PATH,IDF_PATH 等)。
五、使用ESP-IDF新建工程点灯
-
我们暂且使用官方的例程,将blink的文件夹复制到项目位置,也可以在例程中编辑。使用cd命令,经当前工作目录转入blink目录,这里存放着需要的各种文件。编译工作均在该文件夹完成。需要注意的是文件夹名称不能带空格。因为ESP-IDF 编译系统不支持 ESP-IDF 路径或其工程路径中带有空格。
-
连接设备,将您的 ESP32-C6 开发板连接到 PC,并查看开发板使用的串口。在 Windows 操作系统中,串口名称通常以 COM 开头。不能使用小写字母com,否则上传烧录代码会报错,不能识别串口。并记住串口名称,一般分配的串口号为COM数字组成,如COM16。
-
配置工程
输出如下代码:
C:\Espressif\frameworks\esp-idf-v5.1.2\examples\get-started\blink>idf.py set-target esp32c6
Adding "set-target"'s dependency "fullclean" to list of commands with default set of options.
Executing action: fullclean
Executing action: set-target
Set Target to: esp32c6, new sdkconfig will be created.
Running cmake in directory C:\Espressif\frameworks\esp-idf-v5.1.2\examples\get-started\blink\build
Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DPYTHON=C:\Espressif\python_env\idf5.1_py3.11_env\Scripts\python.exe -DESP_PLATFORM=1 -DIDF_TARGET=esp32c6 -DCCACHE_ENABLE=1 C:\Espressif\frameworks\esp-idf-v5.1.2\examples\get-started\blink"...
-- Existing sdkconfig 'C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/sdkconfig' renamed to 'C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/sdkconfig.old'.
-- Found Git: C:/Espressif/tools/idf-git/2.43.0/cmd/git.exe (found version "2.43.0.windows.1")
-- ccache will be used for faster recompilation
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0
-- The ASM compiler identification is GNU
-- Found assembler: C:/Espressif/tools/riscv32-esp-elf/esp-12.2.0_20230208/riscv32-esp-elf/bin/riscv32-esp-elf-gcc.exe
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Espressif/tools/riscv32-esp-elf/esp-12.2.0_20230208/riscv32-esp-elf/bin/riscv32-esp-elf-gcc.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Espressif/tools/riscv32-esp-elf/esp-12.2.0_20230208/riscv32-esp-elf/bin/riscv32-esp-elf-g++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Building ESP-IDF components for target esp32c6
Processing 2 dependencies:
[1/2] espressif/led_strip (2.5.3)
[2/2] idf (5.1.2)
-- Project sdkconfig file C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/sdkconfig
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of time_t
-- Check size of time_t - done
-- Found Python3: C:/Espressif/python_env/idf5.1_py3.11_env/Scripts/python.exe (found version "3.11.2") found components: Interpreter
-- Performing Test C_COMPILER_SUPPORTS_WFORMAT_SIGNEDNESS
-- Performing Test C_COMPILER_SUPPORTS_WFORMAT_SIGNEDNESS - Success
-- App "blink" version: v5.1.2-dirty
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/build/esp-idf/esp_system/ld/memory.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_system/ld/esp32c6/sections.ld.in
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.api.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.rvfp.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.newlib.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.version.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.phy.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.coexist.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.net80211.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.pp.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.wdt.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.newlib-normal.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.heap.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/soc/esp32c6/ld/esp32c6.peripherals.ld
-- Components: app_trace app_update bootloader bootloader_support bt cmock console cxx driver efuse esp-tls esp_adc esp_app_format esp_coex esp_common esp_eth esp_event esp_gdbstub esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server esp_hw_support esp_lcd esp_local_ctrl esp_mm esp_netif esp_netif_stack esp_partition esp_phy esp_pm esp_psram esp_ringbuf esp_rom esp_system esp_timer esp_wifi espcoredump espressif__led_strip esptool_py fatfs freertos hal heap http_parser idf_test ieee802154 json log lwip main mbedtls mqtt newlib nvs_flash openthread partition_table protobuf-c protocomm pthread riscv sdmmc soc spi_flash spiffs tcp_transport ulp unity usb vfs wear_levelling wifi_provisioning wpa_supplicant
-- Component paths: C:/Espressif/frameworks/esp-idf-v5.1.2/components/app_trace C:/Espressif/frameworks/esp-idf-v5.1.2/components/app_update C:/Espressif/frameworks/esp-idf-v5.1.2/components/bootloader C:/Espressif/frameworks/esp-idf-v5.1.2/components/bootloader_support C:/Espressif/frameworks/esp-idf-v5.1.2/components/bt C:/Espressif/frameworks/esp-idf-v5.1.2/components/cmock C:/Espressif/frameworks/esp-idf-v5.1.2/components/console C:/Espressif/frameworks/esp-idf-v5.1.2/components/cxx C:/Espressif/frameworks/esp-idf-v5.1.2/components/driver C:/Espressif/frameworks/esp-idf-v5.1.2/components/efuse C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp-tls C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_adc C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_app_format C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_coex C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_common C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_eth C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_event C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_gdbstub C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_hid C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_http_client C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_http_server C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_https_ota C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_https_server C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_hw_support C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_lcd C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_local_ctrl C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_mm C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_netif C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_netif_stack C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_partition C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_phy C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_pm C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_psram C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_ringbuf C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_system C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_timer C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_wifi C:/Espressif/frameworks/esp-idf-v5.1.2/components/espcoredump C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/managed_components/espressif__led_strip C:/Espressif/frameworks/esp-idf-v5.1.2/components/esptool_py C:/Espressif/frameworks/esp-idf-v5.1.2/components/fatfs C:/Espressif/frameworks/esp-idf-v5.1.2/components/freertos C:/Espressif/frameworks/esp-idf-v5.1.2/components/hal C:/Espressif/frameworks/esp-idf-v5.1.2/components/heap C:/Espressif/frameworks/esp-idf-v5.1.2/components/http_parser C:/Espressif/frameworks/esp-idf-v5.1.2/components/idf_test C:/Espressif/frameworks/esp-idf-v5.1.2/components/ieee802154 C:/Espressif/frameworks/esp-idf-v5.1.2/components/json C:/Espressif/frameworks/esp-idf-v5.1.2/components/log C:/Espressif/frameworks/esp-idf-v5.1.2/components/lwip C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/main C:/Espressif/frameworks/esp-idf-v5.1.2/components/mbedtls C:/Espressif/frameworks/esp-idf-v5.1.2/components/mqtt C:/Espressif/frameworks/esp-idf-v5.1.2/components/newlib C:/Espressif/frameworks/esp-idf-v5.1.2/components/nvs_flash C:/Espressif/frameworks/esp-idf-v5.1.2/components/openthread C:/Espressif/frameworks/esp-idf-v5.1.2/components/partition_table C:/Espressif/frameworks/esp-idf-v5.1.2/components/protobuf-c C:/Espressif/frameworks/esp-idf-v5.1.2/components/protocomm C:/Espressif/frameworks/esp-idf-v5.1.2/components/pthread C:/Espressif/frameworks/esp-idf-v5.1.2/components/riscv C:/Espressif/frameworks/esp-idf-v5.1.2/components/sdmmc C:/Espressif/frameworks/esp-idf-v5.1.2/components/soc C:/Espressif/frameworks/esp-idf-v5.1.2/components/spi_flash C:/Espressif/frameworks/esp-idf-v5.1.2/components/spiffs C:/Espressif/frameworks/esp-idf-v5.1.2/components/tcp_transport C:/Espressif/frameworks/esp-idf-v5.1.2/components/ulp C:/Espressif/frameworks/esp-idf-v5.1.2/components/unity C:/Espressif/frameworks/esp-idf-v5.1.2/components/usb C:/Espressif/frameworks/esp-idf-v5.1.2/components/vfs C:/Espressif/frameworks/esp-idf-v5.1.2/components/wear_levelling C:/Espressif/frameworks/esp-idf-v5.1.2/components/wifi_provisioning C:/Espressif/frameworks/esp-idf-v5.1.2/components/wpa_supplicant
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/build
- 使用以下命令打开工程配置主窗口。打开的窗口如下图所示,您可以通过此菜单设置项目的具体变量,包括 Wi-Fi 网络名称、密码和处理器速度等。
idf.py menuconfig
- 如果终端窗口中显示出的菜单颜色与上图不同。您可以通过选项 --style 来改变外观。
通过测试发现,blink文件夹下的SDKconfig文件包含了以上菜单的配置。
- 编译工程
使用idf.py build
可以编译应用程序和所有 ESP-IDF组件,接着生成引导加载程序、分区表和应用程序二进制文件。编译过程如图所示。
C:\Espressif\frameworks\esp-idf-v5.1.2\examples\get-started\blink>idf.py build
Executing action: all (aliases: build)
Running ninja in directory C:\Espressif\frameworks\esp-idf-v5.1.2\examples\get-started\blink\build
Executing "ninja all"...
[0/1] Re-running CMake...-- ccache will be used for faster recompilation
-- Building ESP-IDF components for target esp32c6
Processing 2 dependencies:
[2/2] idf (5.1.2)-- Project sdkconfig file C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/sdkconfig
-- App "blink" version: v5.1.2-dirty
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/build/esp-idf/esp_system/ld/memory.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_system/ld/esp32c6/sections.ld.in
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.api.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.rvfp.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.newlib.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.version.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.phy.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.coexist.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.net80211.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.pp.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.wdt.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.newlib-normal.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.heap.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/soc/esp32c6/ld/esp32c6.peripherals.ld
-- Components: app_trace app_update bootloader bootloader_support bt cmock console cxx driver efuse esp-tls esp_adc esp_app_format esp_coex esp_common esp_eth esp_event esp_gdbstub esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server esp_hw_support esp_lcd esp_local_ctrl esp_mm esp_netif esp_netif_stack esp_partition esp_phy esp_pm esp_psram esp_ringbuf esp_rom esp_system esp_timer esp_wifi espcoredump espressif__led_strip esptool_py fatfs freertos hal heap http_parser idf_test ieee802154 json log lwip main mbedtls mqtt newlib nvs_flash openthread partition_table protobuf-c protocomm pthread riscv sdmmc soc spi_flash spiffs tcp_transport ulp unity usb vfs wear_levelling wifi_provisioning wpa_supplicant
-- Component paths: C:/Espressif/frameworks/esp-idf-v5.1.2/components/app_trace C:/Espressif/frameworks/esp-idf-v5.1.2/components/app_update C:/Espressif/frameworks/esp-idf-v5.1.2/components/bootloader C:/Espressif/frameworks/esp-idf-v5.1.2/components/bootloader_support C:/Espressif/frameworks/esp-idf-v5.1.2/components/bt C:/Espressif/frameworks/esp-idf-v5.1.2/components/cmock C:/Espressif/frameworks/esp-idf-v5.1.2/components/console C:/Espressif/frameworks/esp-idf-v5.1.2/components/cxx C:/Espressif/frameworks/esp-idf-v5.1.2/components/driver C:/Espressif/frameworks/esp-idf-v5.1.2/components/efuse C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp-tls C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_adc C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_app_format C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_coex C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_common C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_eth C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_event C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_gdbstub C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_hid C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_http_client C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_http_server C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_https_ota C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_https_server C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_hw_support C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_lcd C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_local_ctrl C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_mm C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_netif C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_netif_stack C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_partition C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_phy C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_pm C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_psram C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_ringbuf C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_system C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_timer C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_wifi C:/Espressif/frameworks/esp-idf-v5.1.2/components/espcoredump C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/managed_components/espressif__led_strip C:/Espressif/frameworks/esp-idf-v5.1.2/components/esptool_py C:/Espressif/frameworks/esp-idf-v5.1.2/components/fatfs C:/Espressif/frameworks/esp-idf-v5.1.2/components/freertos C:/Espressif/frameworks/esp-idf-v5.1.2/components/hal C:/Espressif/frameworks/esp-idf-v5.1.2/components/heap C:/Espressif/frameworks/esp-idf-v5.1.2/components/http_parser C:/Espressif/frameworks/esp-idf-v5.1.2/components/idf_test C:/Espressif/frameworks/esp-idf-v5.1.2/components/ieee802154 C:/Espressif/frameworks/esp-idf-v5.1.2/components/json C:/Espressif/frameworks/esp-idf-v5.1.2/components/log C:/Espressif/frameworks/esp-idf-v5.1.2/components/lwip C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/main C:/Espressif/frameworks/esp-idf-v5.1.2/components/mbedtls C:/Espressif/frameworks/esp-idf-v5.1.2/components/mqtt C:/Espressif/frameworks/esp-idf-v5.1.2/components/newlib C:/Espressif/frameworks/esp-idf-v5.1.2/components/nvs_flash C:/Espressif/frameworks/esp-idf-v5.1.2/components/openthread C:/Espressif/frameworks/esp-idf-v5.1.2/components/partition_table C:/Espressif/frameworks/esp-idf-v5.1.2/components/protobuf-c C:/Espressif/frameworks/esp-idf-v5.1.2/components/protocomm C:/Espressif/frameworks/esp-idf-v5.1.2/components/pthread C:/Espressif/frameworks/esp-idf-v5.1.2/components/riscv C:/Espressif/frameworks/esp-idf-v5.1.2/components/sdmmc C:/Espressif/frameworks/esp-idf-v5.1.2/components/soc C:/Espressif/frameworks/esp-idf-v5.1.2/components/spi_flash C:/Espressif/frameworks/esp-idf-v5.1.2/components/spiffs C:/Espressif/frameworks/esp-idf-v5.1.2/components/tcp_transport C:/Espressif/frameworks/esp-idf-v5.1.2/components/ulp C:/Espressif/frameworks/esp-idf-v5.1.2/components/unity C:/Espressif/frameworks/esp-idf-v5.1.2/components/usb C:/Espressif/frameworks/esp-idf-v5.1.2/components/vfs C:/Espressif/frameworks/esp-idf-v5.1.2/components/wear_levelling C:/Espressif/frameworks/esp-idf-v5.1.2/components/wifi_provisioning C:/Espressif/frameworks/esp-idf-v5.1.2/components/wpa_supplicant
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/build
[73/927] Generating ../../partition_table/partition-table.binPartition table binary generated. Contents:
*******************************************************************************
# ESP-IDF Partition Table
# Name, Type, SubType, Offset, Size, Flags
nvs,data,nvs,0x9000,24K,
phy_init,data,phy,0xf000,4K,
factory,app,factory,0x10000,1M,
*******************************************************************************
[919/927] Performing configure step for 'bootloader'-- Found Git: C:/Espressif/tools/idf-git/2.43.0/cmd/git.exe (found version "2.43.0.windows.1")
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0
-- The ASM compiler identification is GNU
-- Found assembler: C:/Espressif/tools/riscv32-esp-elf/esp-12.2.0_20230208/riscv32-esp-elf/bin/riscv32-esp-elf-gcc.exe
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Espressif/tools/riscv32-esp-elf/esp-12.2.0_20230208/riscv32-esp-elf/bin/riscv32-esp-elf-gcc.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Espressif/tools/riscv32-esp-elf/esp-12.2.0_20230208/riscv32-esp-elf/bin/riscv32-esp-elf-g++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Building ESP-IDF components for target esp32c6
-- Project sdkconfig file C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/sdkconfig
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of time_t
-- Check size of time_t - done
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/soc/esp32c6/ld/esp32c6.peripherals.ld
-- App "bootloader" version: v5.1.2-dirty
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.api.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.rvfp.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.newlib.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.phy.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.wdt.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c6/ld/esp32c6.rom.version.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/bootloader/subproject/main/ld/esp32c6/bootloader.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.1.2/components/bootloader/subproject/main/ld/esp32c6/bootloader.rom.ld
-- Components: bootloader bootloader_support efuse esp_app_format esp_common esp_hw_support esp_rom esp_system esptool_py freertos hal log main micro-ecc newlib partition_table riscv soc spi_flash
-- Component paths: C:/Espressif/frameworks/esp-idf-v5.1.2/components/bootloader C:/Espressif/frameworks/esp-idf-v5.1.2/components/bootloader_support C:/Espressif/frameworks/esp-idf-v5.1.2/components/efuse C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_app_format C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_common C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_hw_support C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_system C:/Espressif/frameworks/esp-idf-v5.1.2/components/esptool_py C:/Espressif/frameworks/esp-idf-v5.1.2/components/freertos C:/Espressif/frameworks/esp-idf-v5.1.2/components/hal C:/Espressif/frameworks/esp-idf-v5.1.2/components/log C:/Espressif/frameworks/esp-idf-v5.1.2/components/bootloader/subproject/main C:/Espressif/frameworks/esp-idf-v5.1.2/components/bootloader/subproject/components/micro-ecc C:/Espressif/frameworks/esp-idf-v5.1.2/components/newlib C:/Espressif/frameworks/esp-idf-v5.1.2/components/partition_table C:/Espressif/frameworks/esp-idf-v5.1.2/components/riscv C:/Espressif/frameworks/esp-idf-v5.1.2/components/soc C:/Espressif/frameworks/esp-idf-v5.1.2/components/spi_flash
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/build/bootloader
[106/107] Generating binary image from built executableesptool.py v4.7.0
Creating esp32c6 image...
Merged 2 ELF sections
Successfully created esp32c6 image.
Generated C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/build/bootloader/bootloader.bin
[107/107] cmd.exe /C "cd /D C:\Espressif\frameworks\esp-idf-v5.1.2\examples\g...ks/esp-idf-v5.1.2/examples/get-started/blink/build/bootloader/bootloader.bin
Bootloader binary size 0x5350 bytes. 0x2cb0 bytes (35%) free.
[926/927] Generating binary image from built executableesptool.py v4.7.0
Creating esp32c6 image...
Merged 1 ELF section
Successfully created esp32c6 image.
Generated C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/build/blink.bin
[927/927] cmd.exe /C "cd /D C:\Espressif\frameworks\esp-idf-v5.1.2\examples\g...pressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/build/blink.bin
blink.bin binary size 0x20240 bytes. Smallest app partition is 0x100000 bytes. 0xdfdc0 bytes (87%) free.
Project build complete. To flash, run this command:
C:\Espressif\python_env\idf5.1_py3.11_env\Scripts\python.exe ..\..\..\components\esptool_py\esptool\esptool.py -p (PORT) -b 460800 --before default_reset --after hard_reset --chip esp32c6 write_flash --flash_mode dio --flash_size 2MB --flash_freq 80m 0x0 build\bootloader\bootloader.bin 0x8000 build\partition_table\partition-table.bin 0x10000 build\blink.bin
or run 'idf.py -p (PORT) flash'
如果一切正常,编译完成后将生成 .bin 文件。
运行idf.py -p COM16 flash
命令,将刚刚生成的二进制文件烧录至COM16连接的 ESP32-C6 开发板,如果 PORT 未经定义,idf.py 将尝试使用可用的串口自动连接。如下所示
C:\Espressif\frameworks\esp-idf-v5.1.2\examples\get-started\blink>idf.py -p COM16 flash monitor
Executing action: flash
Running ninja in directory C:\Espressif\frameworks\esp-idf-v5.1.2\examples\get-started\blink\build
Executing "ninja flash"...
[1/5] cmd.exe /C "cd /D C:\Espressif\frameworks\esp-idf-v5.1.2\examples\get-started\blink\build\esp-idf\esptool_py && C:\Espressif\python_env\idf5.1_py3.11_env\Scripts\python.exe C:/Espressif/frameworks/esp-idf-v5.1.2/components/partition_table/check_sizes.py --offset 0x8000 partition --type app C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/build/partition_table/partition-table.bin C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/build/blink.bin"
blink.bin binary size 0x20240 bytes. Smallest app partition is 0x100000 bytes. 0xdfdc0 bytes (87%) free.
[2/5] Performing build step for 'bootloader'
[1/1] cmd.exe /C "cd /D C:\Espressif\frameworks\esp-idf-v5.1.2\examples\get-started\blink\build\bootloader\esp-idf\esptool_py && C:\Espressif\python_env\idf5.1_py3.11_env\Scripts\python.exe C:/Espressif/frameworks/esp-idf-v5.1.2/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/build/bootloader/bootloader.bin"
Bootloader binary size 0x5350 bytes. 0x2cb0 bytes (35%) free.
[2/3] cmd.exe /C "cd /D C:\Espressif\frameworks\esp-idf-v5.1.2\components\esptool_py && C:\Espressif\tools\cmake\3.24.0\bin\cmake.exe -D IDF_PATH=C:/Espressif/frameworks/esp-idf-v5.1.2 -D SERIAL_TOOL=C:/Espressif/python_env/idf5.1_py3.11_env/Scripts/python.exe;;C:/Espressif/frameworks/esp-idf-v5.1.2/components/esptool_py/esptool/esptool.py;--chip;esp32c6 -D SERIAL_TOOL_ARGS=--before=default_reset;--after=hard_reset;write_flash;@flash_args -D WORKING_DIRECTORY=C:/Espressif/frameworks/esp-idf-v5.1.2/examples/get-started/blink/build -P C:/Espressif/frameworks/esp-idf-v5.1.2/components/esptool_py/run_serial_tool.cmake"
esptool.py --chip esp32c6 -p COM16 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 2MB 0x0 bootloader/bootloader.bin 0x10000 blink.bin 0x8000 partition_table/partition-table.bin
esptool.py v4.7.0
Serial port COM16
Connecting...
Chip is ESP32-C6FH4 (QFN32) (revision v0.0)
Features: WiFi 6, BT 5, IEEE802.15.4
Crystal is 40MHz
MAC: 54:32:04:ff:fe:09:b7:f0
BASE MAC: 54:32:04:09:b7:f0
MAC_EXT: ff:fe
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Flash will be erased from 0x00000000 to 0x00005fff...
Flash will be erased from 0x00010000 to 0x00030fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Compressed 21328 bytes to 12928...
Writing at 0x00000000... (100 %)
Wrote 21328 bytes (12928 compressed) at 0x00000000 in 0.4 seconds (effective 404.4 kbit/s)...
Hash of data verified.
Compressed 131648 bytes to 67791...
Writing at 0x00010000... (20 %)
Writing at 0x000199d2... (40 %)
Writing at 0x00021189... (60 %)
Writing at 0x00028004... (80 %)
Writing at 0x0002ef94... (100 %)
Wrote 131648 bytes (67791 compressed) at 0x00010000 in 1.2 seconds (effective 853.2 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 103...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.1 seconds (effective 224.7 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
如果一切顺利,烧录完成后,开发板将会复位,应用程序 'blink' 开始运行。
使用idf.py -p PORT monitor
命令,监视 “blink” 工程的运行情况。注意,不要忘记将 PORT 替换为您的串口名称。我的命令为idf.py -p COM16 monitor
。
Executing action: monitor
Running idf_monitor in directory C:\Espressif\frameworks\esp-idf-v5.1.2\examples\get-started\blink
Executing "C:\Espressif\python_env\idf5.1_py3.11_env\Scripts\python.exe C:\Espressif\frameworks\esp-idf-v5.1.2\tools/idf_monitor.py -p COM16 -b 115200 --toolchain-prefix riscv32-esp-elf- --target esp32c6 --revision 0 --decode-panic backtrace C:\Espressif\frameworks\esp-idf-v5.1.2\examples\get-started\blink\build\blink.elf --force-color -m 'C:\Espressif\python_env\idf5.1_py3.11_env\Scripts\python.exe' 'C:\Espressif\frameworks\esp-idf-v5.1.2\tools\idf.py' '-p' 'COM16'"...
--- WARNING: GDB cannot open serial ports accessed as COMx
--- Using \\.\COM16 instead...
--- esp-idf-monitor 1.3.4 on \\.\COM16 115200 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
I (101) esp_image: segment 2: paddr=00018020 vaddr=420000ESP-ROM:esp32c6-20220919
Build:Sep 19 2022
rst:0x15 (USB_UART_HPSYS),boot:0x1c (SPI_FAST_FLASH_BOOT)
Saved PC:0x40802f96
0x40802f96: rv_utils_wait_for_intr at C:/Espressif/frameworks/esp-idf-v5.1.2/components/riscv/include/riscv/rv_utils.h:33
(inlined by) esp_cpu_wait_for_intr at C:/Espressif/frameworks/esp-idf-v5.1.2/components/esp_hw_support/cpu.c:119
SPIWP:0xee
mode:DIO, clock div:2
load:0x4086c410,len:0xd4c
load:0x4086e610,len:0x2dd4
load:0x40875728,len:0x17d8
entry 0x4086c410
I (23) boot: ESP-IDF v5.1.2-dirty 2nd stage bootloader
I (23) boot: compile time Apr 21 2024 20:36:47
I (24) boot: chip revision: v0.0
I (26) boot.esp32c6: SPI Speed : 80MHz
I (31) boot.esp32c6: SPI Mode : DIO
I (36) boot.esp32c6: SPI Flash Size : 2MB
I (40) boot: Enabling RNG early entropy source...
I (46) boot: Partition Table:
I (49) boot: ## Label Usage Type ST Offset Length
I (57) boot: 0 nvs WiFi data 01 02 00009000 00006000
I (64) boot: 1 phy_init RF data 01 01 0000f000 00001000
I (72) boot: 2 factory factory app 00 00 00010000 00100000
I (79) boot: End of partition table
I (83) esp_image: segment 0: paddr=00010020 vaddr=42010020 size=079e0h ( 31200) map
I (98) esp_image: segment 1: paddr=00017a08 vaddr=40800000 size=00610h ( 1552) load
I (101) esp_image: segment 2: paddr=00018020 vaddr=42000020 size=0e1fch ( 57852) map
I (121) esp_image: segment 3: paddr=00026224 vaddr=40800610 size=08f5ch ( 36700) load
I (130) esp_image: segment 4: paddr=0002f188 vaddr=40809570 size=01094h ( 4244) load
I (134) boot: Loaded app from partition at offset 0x10000
I (135) boot: Disabling RNG early entropy source...
I (150) cpu_start: Unicore app
I (150) cpu_start: Pro cpu up.
W (159) clk: esp_perip_clk_init() has not been implemented yet
I (166) cpu_start: Pro cpu start user code
I (166) cpu_start: cpu freq: 160000000 Hz
I (167) cpu_start: Application information:
I (169) cpu_start: Project name: blink
I (174) cpu_start: App version: v5.1.2-dirty
I (179) cpu_start: Compile time: Apr 21 2024 20:36:34
I (185) cpu_start: ELF file SHA256: c2d6f3b281932de7...
I (191) cpu_start: ESP-IDF: v5.1.2-dirty
I (197) cpu_start: Min chip rev: v0.0
I (201) cpu_start: Max chip rev: v0.99
I (206) cpu_start: Chip rev: v0.0
I (211) heap_init: Initializing. RAM available for dynamic allocation:
I (218) heap_init: At 4080B4C0 len 00071150 (452 KiB): D/IRAM
I (225) heap_init: At 4087C610 len 00002F54 (11 KiB): STACK/DIRAM
I (231) heap_init: At 50000000 len 00003FE8 (15 KiB): RTCRAM
I (238) spi_flash: detected chip: generic
I (242) spi_flash: flash io: dio
W (246) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header.
I (260) sleep: Configure to isolate all GPIO pins in sleep state
I (266) sleep: Enable automatic switching of GPIO sleep configuration
I (273) coexist: coex firmware version: b6d5e8c
I (279) coexist: coexist rom version 5b8dcfa
I (284) app_start: Starting scheduler on CPU0
I (288) main_task: Started on CPU0
I (288) main_task: Calling app_main()
I (288) example: Example configured to blink GPIO LED!
I (298) gpio: GPIO[15]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (308) example: Turning the LED OFF!
I (1308) example: Turning the LED ON!
I (2308) example: Turning the LED OFF!
I (3308) example: Turning the LED ON!
I (4308) example: Turning the LED OFF!
I (5308) example: Turning the LED ON!
I (6308) example: Turning the LED OFF!
I (7308) example: Turning the LED ON!
I (8308) example: Turning the LED OFF!
I (9308) example: Turning the LED ON!
I (10308) example: Turning the LED OFF!
I (11308) example: Turning the LED ON!
I (12308) example: Turning the LED OFF!
I (13308) example: Turning the LED ON!
I (14308) example: Turning the LED OFF!
I (15308) example: Turning the LED ON!
I (16308) example: Turning the LED OFF!
I (17308) example: Turning the LED ON!
I (18308) example: Turning the LED OFF!
I (19308) example: Turning the LED ON!
I (20308) example: Turning the LED OFF!
I (21308) example: Turning the LED ON!
I (22308) example: Turning the LED OFF!
I (23308) example: Turning the LED ON!
此时,您就可以在启动日志和诊断日志之后,看到LED灯闪烁了。如果需要退出IDF监视器,使用快捷键Ctrl+]
,我们也可以运行命令df.py -p PORT flash monitor
,一次性执行构建、烧录和监视过程;