前言
- 本文目标:
- 了解 idf.py 常用命令使用
- 明白为什么我们需要使用命令行来进行项目管理。
idf.py 全命令中文帮助
idf.py 入门命令
查看 idf 版本
idf.py --version
- 当我们需要知道当前使用的 idf 版本时可以使用改命令,例如从下图命令可知,我们知道当前使用的是 v5.2.2 。
设置芯片目标
idf.py set-target
- 我们首先需要选择芯片平台是什么,如下是以 esp32c3 为例。
- 如果不知道自己当前的模组是什么系列的芯片,可以查看 芯片概览。
构建命令
idf.py build/all
- 该命令将会把当前文件进行一次编译
- 如下两种写法效果一样
烧录命令
idf.py flash
- 该命令将会把工程文件烧录进 esp32 。
- 但是如果你还没有执行 idf.py build 进行编译。那么该命令将会将会自动编译,如果编译通过自动将程序烧录进入芯片。
- 需要注意,如果电脑只插入了一个 esp32,只需要执行如下命令,自动将代码烧录。
- 如果电脑同时插入多个 esp32 那么我们需要指定端口。假设我们当前要将程序烧录进入 /dev/ttyUSB0 ,命令如下。
清除命令
idf.py clean
- 该命令会删除 build 目录中的生成文件和对象文件,但会保留某些缓存文件和配置文件。
- 适用于需要重新构建项目但不想清除所有缓存和配置的情况。执行时间较短,因为它保留了一些缓存,可以加快后续的构建过程。
idf.py fullclean
- 该命令会彻底清理构建目录,包括所有生成文件、对象文件、缓存文件和配置文件。适用于需要完全重置构建环境,确保没有任何遗留文件影响重新构建的情况。
工具命令
idf.py monitor
- 该命令会让芯片复位,并且显示串口信息。
- 如果插入了一个 esp32,只需要执行如下命令。
- 如果电脑同时插入多个 esp32 那么我们需要指定端口。
idf.py menuconfig
- 该命令能够设置一些 esp32 的配置信息,从而进行相应的处理。该功能是一个开源项目,在 linux 和 rtthread 上均有实现。
- menuconfig 将会和 kconfig 配合。配置教程 : ESP32 之 ESP-IDF 教学(十八)—— 组件配置(KConfig)
idf.py 进阶命令
分步构建
idf.py app
- 如果我们仅修改了 app 程序,为了加快开发,验证 app 程序是否能够正常编译,即可使用该命令。
- 如果想要摸鱼,那么每次程序调整,都可以使用如下命令。那样每次验证都是重新开始,基本需要半分钟以上,项目大一点,可能需要一两分钟。
idf.py bootloader
- 如果我们仅修改了 bootloader 程序,为了加快开发,验证 bootloader 程序是否能够正常编译,即可使用该命令。
- 摸鱼套装同上。
idf.py partition-table
- 该命令只会编译分区表相关信息。
- 当我们调整了分区表,同时想看看分区表的分区信息,可调用该命令查看。
- 通过下面的例子,我们知道当前分区表信息
名字 | 类型 | 子类型 | 偏移 | 大小 | 标志 |
nvs | data | nvs | 0x9000 | 24K | / |
phy_init | data | phy | 0xf000 | 4K | / |
factory | app | factory | 0x10000 | 2500K | / |
assets | data | spiffs | 0x281000 | 1000K | / |
storage | data | spiffs | 0x37b000 | 100K | / |
esp_secure_cert | 63 | 6 | 0x394000 | 8K | encrypted |
fctry | data | nvs | 0x396000 | 24K | / |
分步烧录
idf.py app-flash
- 改命令仅仅会将 app 程序烧录进芯片。这样可以加快开发速度。
- 如果程序没有执行 idf.py app 。该命令将会自动执行 idf.py app 编译后烧录。
idf.py bootloader-flash
- 改命令仅仅会将 bootloader 程序烧录进芯片。
- 如果程序没有执行 idf.py bootloader 。该命令将会自动执行 idf.py bootloader 编译后烧录。
idf.py partition-table-flash
- 改命令仅仅会将 partition 程序烧录进芯片。
- 如果程序没有执行 idf.py partition 。该命令将会自动执行 idf.py partition 编译后烧录。
CMake 重新运行
idf.py reconfigure
- 当我们对 CMakeList 文件做了调整。需要使用命令重新运行 CMake 。
- 如果我们使用摸鱼套件,那么就无需再使用改命令了。因为 idf.py fullclean 会将 CMake 相关配置信息删除,执行 idf.py flash 时会重新运行 CMake 。
信息查看命令
idf.py save-defconfig
- 该命令能够生成一个 sdkconfig.defaults 文件,该文件包含与默认选项不同的配置选项。
- 使用该命令,我们可以即可知道需要调整那些 menuconfig 的配置项。
idf.py size
- 打印应用程序的基本大小信息。
- 下图为某个程序的打印结果。
idf.py size-files
- 如果仅idf.py size-files,那么 shell 中将会打印每个源文件的大小信息。
- shell 中看信息终究是有些许麻烦,因此我们可以将打印信息存储到 size-file.txt 文件中,那样利用文本阅读软件,方便进行内存优化。
擦除命令
idf.py erase-flash
- 该命令将会擦除整个 flash 。
- 当 esp32 配网建立时,相关信息会存储在 nvs 中。当程序不是很健全,而你使用 esp32 配网失败后,程序卡死。你调整代码,执行 idf.py flash 命令将依旧没有用。因为 idf.py flash 命令不会自动擦除 NVS 分区中的数据,它只会将固件写入指定的闪存区域,而不会影响 NVS 中的内容。
- 如果遇到该问题,程序执行流程应当如下
高级用法
批量烧录
- 如下为一个8个设备同时烧录的脚本。
批量烧录—部分数据不同
- 如果我们需要批量烧录程序,但有部分数据需要调整,那么烧录脚本将会有些许不同。
- 如下为 gatt_server 的程序批量烧录方法。我们需要烧录相同的程序,但是每台设备的设备名要求不一样。那么我们就使用如下脚本
参考
- idf.py --help