开发板来源与扫描路径
idf.py bmgr 在生成代码前,从以下来源汇总当前工程可用的开发板。
自动扫描来源
BMGR 默认按如下顺序扫描,同名开发板以后扫描到的来源为准:
managed_components/ 下名称含 boards 的组件:通过组件管理器下载的开发板集合,例如
espressif__esp_boards/,最多向下递归 3 层。工程 components/ 目录(
components/):工程内独立维护的开发板组件,例如components/my_board/,最多向下递归 3 层。适合存放自定义开发板或对官方开发板做改动后的副本。同名时,工程components/中的开发板优先于managed_components/中的开发板。main/idf_component.yml 中 path 覆盖的板级依赖:在主组件清单中通过
override_path:或path:将某个 board 依赖指向本地目录,最多向下递归 3 层,常用于本地调试。-c 指定的板根目录(
-c <path>):通过命令行传入的附加板集合根目录,最多向下递归 3 层。扫描顺序最后,同名时优先级最高。
备注
向下递归 N 层:从给定根目录出发,最多展开 N 层子目录,超出部分不再展开。
执行 idf.py bmgr -l 可列出当前工程识别到的全部开发板及其来源标记。
备注
idf.py bmgr -l 的输出顺序由当前工程可见的开发板来源、依赖版本和自定义板路径共同决定。文档或示例中的开发板列表和序号仅作参考,选择开发板时请以当前工程的实际输出为准。CI 脚本建议直接使用开发板名称,不使用列表序号。
按名称选板:-b <name>
-b 传入开发板名称时,BMGR 先按上述顺序汇总扫描池,再从中查找匹配项:
idf.py bmgr -b esp32_s3_korvo_2_3
若多个来源存在同名开发板,扫描顺序即为覆盖顺序(后扫描到的生效)。-b 也接受序号,序号与 idf.py bmgr -l 输出的顺序对应。
直接指定路径:-b <path>
若 -b 的值是磁盘上已存在的开发板目录(绝对路径,或相对工程根的路径),BMGR 直接使用该目录,并覆盖扫描池中同名的已有条目,优先级高于所有自动扫描来源:
idf.py bmgr -b /abs/path/to/my_board
适用于临时验证、CI 中指向代码仓库路径,或调试外部目录而无需将开发板复制进工程。
-c 与 -b 组合
-c <path> 将指定目录加入扫描池(第 4 来源)。典型组合:
按名称从自定义目录选板:若目标开发板仅存在于 -c 路径,可在扩展后的扫描池中直接按名称选中:
idf.py bmgr -b my_custom_board -c /path/to/custom_boards
版本说明
0.5.x:官方开发板内置于 BMGR 组件,无需额外声明依赖即可使用。
0.6 及以上版本:官方开发板从 BMGR 组件内移除,拆分为多个独立板级组件:
espressif/esp_boards提供乐鑫官方开发板(BMGR 0.6 默认声明此依赖)。espressif/esp_friends_boards提供合作伙伴与社区开发板。espressif/m5stack_boards提供 M5Stack 系列开发板。
工程需要在主组件清单(
idf_component.yml)中声明所需板级组件依赖。组件下载后,BMGR 通过来源 1 自动识别其中的开发板。各开发板所属组件,参见 开发板参考。
推荐做法
使用官方开发板:在工程主组件清单中声明对应板级组件依赖,例如
espressif/esp_boards、espressif/esp_friends_boards或espressif/m5stack_boards。各开发板所属组件见 开发板参考。自定义开发板:放在工程
components/<board_name>/,或发布为独立板级组件后在工程中声明依赖。idf.py bmgr -x清理生成代码时不会影响自定义开发板目录。临时调试:
idf.py bmgr -b /abs/path/to/board,无需将开发板复制进工程。发布板级组件:将开发板目录发布为独立组件,方便其他工程引用。