用途
board-selection 用于在嵌入式项目启动前,根据项目需求选择、替换或比较具体的开发板。它要求从需求出发确定一个明确的板卡目标,而不是停留在“ESP32”“Arduino”这类营销系列名称上。该技能会产出一份决策记录,供后续技能(如引脚分配、接线安全检查、库选择、内存预算、硬件 TDD 等)消费。
与 board-support 的边界
当用户已经指定了某块板卡,需要其精确档案、能力、引脚风险、源码状态或框架兼容性时,应使用 board-support。当用户正在选择、替换或根据项目需求比较板卡时,使用本技能。本技能应消费 board-support 的板卡档案,而不是重复或猜测其中的事实。
主要能力
- 将项目需求转化为硬性约束与偏好。
- 淘汰在电压、引脚方向、外设、内存、功耗或恢复能力上不满足约束的候选板卡。
- 对剩余板卡按精确 SKU、框架/核心、工具链、库架构、上传路径、安全/更新支持、供货情况与维护周期进行对比。
- 记录选定板卡、被拒绝的替代方案、原因、未决风险,以及确切的构建标识/FQBN/环境。
- 将板卡档案移交给 pin-assignment、wiring-safety-check、library-selection、memory-budgeting 和 hardware-tdd 等下游技能。
使用方式
信息采集
需要采集的信息包括:所需电压与电源轨、输入/输出、PWM/ADC/定时器、总线与协议、内存/闪存/PSRAM、无线/USB、时序、电源与峰值负载、物理约束、生产数量、工具链、库约束、安全/更新需求以及恢复访问方式。
应阅读 ../../references/boards/README.md,并使用 ../board-support/SKILL.md 获取相关板卡的精确档案。如果该板卡未被覆盖,则使用厂商产品页、MCU/模块数据手册、板卡原理图和所选框架变体源码,并标注推断值。
处理流程
- 将需求转化为硬性约束和偏好。
- 淘汰在电压、引脚方向、外设、内存、功耗或恢复约束上不合格的候选。
- 对剩余板卡按精确 SKU、框架/核心、工具链、库架构、上传路径、安全/更新支持、供货情况和维护周期进行对比。
- 记录选定板卡、被拒绝的替代方案、原因、未决风险,以及确切的构建标识/FQBN/环境。
- 将板卡档案移交给 pin-assignment、wiring-safety-check、library-selection、memory-budgeting 和 hardware-tdd 等适用技能。
输出
返回一个紧凑表格,包含 requirement、constraint、candidate result、source 和 verification status 字段,随后给出决策与未决风险。不得将板卡系列的事实当作板卡具体版本的保证。
反合理化对照
| 捷径说法 | 回应 |
|---|---|
| “ESP32”已经足够精确。 | 要求提供模块后缀、DevKit 版本、闪存/PSRAM 和 USB 用途。 |
| “板子内存够用。” | 区分标称内存、应用内存、堆/栈、文件系统和 OTA 分区。 |
| “USB 供电就能跑。” | 检查电源轨电压、稳压器余量、启动峰值和外部负载。 |
| “任何 Arduino 库都能用。” | 检查架构、框架、版本、API 和依赖兼容性。 |
| “能编译就说明板子选对了。” | 电气、硬件、系统和部署层面的验证仍需保持开放。 |
验证要求
- 记录确切的板卡/版本、MCU/模块、框架、工具链和版本。
- 每个选定值都有主要来源,或标记为
to verify。 - 为所选目标存在仅编译或干运行路径。
- 被拒绝的替代方案和未解决的风险保持可见。
共享输出契约
使用共享 Arduino 技能契约(../../docs/arduino-skill-contract.md):说明假设、所需工具与版本、实现步骤、按证明阶段划分的测试/证据、已知限制,以及恢复/安全说明。
适用场景
适用于需要在项目实现前从需求出发确定具体开发板型号、替换现有板卡或对比多个候选板卡的嵌入式开发场景。
限制
该技能本身不提供板卡的具体技术档案,需依赖 board-support 技能或外部数据手册。对于未覆盖的板卡,需自行查阅厂商资料并标注推断值。输出中的事实必须可追溯,未验证内容需明确标记。