发布于 

常见开发板选型与信息速查

一句话结论

如果不确定买什么,按这个优先级买:ESP32-S3 DevKitC 一块 + STM32F103C8T6 蓝丸两块 + 树莓派 5(或 4B)一台。这三块覆盖了「联网 IoT」「裸机/实时控制」「Linux 应用」三条完全不同的技术路线,加起来不到 500 元。剩下的板子等具体需求出现了再买。

一、按层级速查总表

1.1 入门 MCU 级(8/32 位单片机,无操作系统)

板卡 主控/架构 主频 SRAM / Flash 可用 GPIO 关键外设 典型功耗 参考价格 最适合 不适合
Arduino Uno R3 ATmega328P(AVR 8 位) 16 MHz 2 KB / 32 KB(+1 KB EEPROM) 14(6×PWM)+ 6×ADC UART×1、SPI、I2C、无无线 约 40–60 mA 国产兼容 ¥25–45,原装 ¥150+ 纯零基础教学、点灯、读传感器、丰富的 Shield 生态 联网、低功耗电池、任何 RAM > 2 KB 的需求
Arduino Nano ATmega328P(CH340 克隆为主) 16 MHz 2 KB / 32 KB 14 + 8×ADC UART、SPI、I2C 约 20–40 mA ¥12–25 面包板原型、体积受限的小作品 同上,且无 DC 插孔,供电能力弱
Arduino Nano Every ATmega4809(AVR) 20 MHz 6 KB / 48 KB 14 + 8×ADC UART×2、SPI、I2C 约 25 mA ¥60–90 想要 Uno 生态但资源不够用 性价比敏感场景
Arduino Nano 33 IoT SAMD21 Cortex-M0+ 48 MHz 32 KB / 256 KB 14 + 8×ADC(12 位) WiFi + BLE(NINA W102 协处理)、6 轴 IMU 约 40 mA ¥150–220 要 Arduino 官方生态 + 官方无线支持 性价比、深度定制无线
STM32F103C8T6「蓝丸」 Cortex-M3 72 MHz 20 KB / 64 KB(多数实为 128 KB) 约 32 2×SPI、2×I2C、3×USART、CAN、USB 2.0 FS、10 通道 12 位 ADC 30–60 mA ¥12–25 实时控制、CAN 总线、学 HAL/RTOS、工业小批量 联网(需外接模块)、内存吃紧的算法
STM32F407VE/ZE 开发板 Cortex-M4F(FPU + DSP) 168 MHz 192 KB / 512 KB 约 50–80 以太网 MAC、DCMI 摄像头、2×CAN、USB OTG FS/HS、DAC 80–150 mA ¥45–90 网络 + 控制混合、跑 FreeRTOS/LwIP/USB 主机 电池供电、极低成本
STM32F411CEU6「黑丸」 Cortex-M4F 100 MHz 128 KB / 512 KB 约 30 USB Type-C、SPI/I2C/USART、无以太网 40–80 mA ¥20–35 想要 M4 性能但板子要小 需要以太网/DCMI 的项目
CH32V003 开发板 沁恒 RISC-V RV32EC 48 MHz 2 KB / 16 KB 18 UART、SPI、I2C、ADC、无 USB(需 CH32V003 无 USB,用串口下载) 约 10 mA 板 ¥10–20,芯片 ¥0.5–1.5 极致成本量产、替代 8 位机 原型开发、需要 USB/无线
GD32F103C8T6 开发板 兆易 Cortex-M3 108 MHz 20 KB / 64–128 KB 约 32 与 STM32F103 引脚兼容 30–60 mA ¥10–20 STM32 缺货时的国产替代 直接烧录 STM32 二进制固件

1.2 无线 IoT 级(自带 WiFi / BLE)

板卡 主控/架构 主频 SRAM / Flash 可用 GPIO 关键外设 典型功耗 参考价格 最适合 不适合
ESP8266(D1 mini / NodeMCU) Tensilica L106 32 位 80 / 160 MHz 约 50 KB 可用 / 外挂 4 MB 11(D1 mini) WiFi 802.11 b/g/n 2.4G、无 BLE、仅 1 路 ADC(0–1 V) 深度睡眠 ~20 µA,峰值 ~170 mA ¥10–20 老项目维护、极低成本 WiFi 开关 新项目(ESP32 全面更优)、BLE、多路 ADC
ESP32 DevKitC(WROOM-32) Xtensa LX6 双核 240 MHz 520 KB / 外挂 4 MB 约 26–34 WiFi 4 + BT 4.2(含经典蓝牙)、TWAI(CAN 控制器)、电容触摸×10、2×8 位 DAC、18 通道 ADC 深度睡眠 ~10 µA,峰值 240 mA+ ¥20–40 IoT 主力、MQTT、蓝牙网关、Mesh 超低功耗电池长期(C3 更省)、USB 原生设备
ESP32-C3 RISC-V 单核 160 MHz 400 KB / 外挂 4 MB 22 WiFi 4 + BLE 5、无 DAC、原生 USB CDC(部分型号) 深度睡眠 ~5 µA ¥10–18 量产首选、低成本 + 安全特性齐全 需要 DAC/双核/多 IO
ESP32-S2 Xtensa LX7 单核 240 MHz 320 KB / 外挂 4 MB 43 WiFi 4、原生 USB OTG、无蓝牙、电容触摸 同上量级 ¥18–30 USB 设备(HID/CDC)+ WiFi 需要蓝牙
ESP32-S3 Xtensa LX7 双核 240 MHz 512 KB / 8–16 MB + PSRAM 45 WiFi 4 + BLE 5、原生 USB OTG、向量指令(AI/ DSP 加速)、DCMI 摄像头、LCD 接口 峰值 300 mA+ ¥25–50 摄像头、语音、本地 AI、USB HID、IO 密集型 极致成本(选 C3)
ESP32-C6 RISC-V 32 位 160 MHz 512 KB / 外挂 4 MB 30 WiFi 6 + BLE 5 + 802.15.4(Thread/Zigbee) 低功耗 ¥20–35 Matter / Thread 智能家居、WiFi 6 生态尚在成熟中
ESP32-H2 RISC-V 32 位 96 MHz 320 KB / 外挂 4 MB 19 BLE 5 + 802.15.4(Zigbee/Thread),无 WiFi 极低 ¥15–28 Zigbee / Thread 网关节点 需要 WiFi 的项目
RP2040 + 无线(Pico W) 双核 Cortex-M0+ 133 MHz 264 KB / 板载 2 MB QSPI 26 WiFi 4 + BLE 5(CYW43439)、8×PIO 状态机、原生 USB 休眠较低,峰值 ~100 mA ¥35–45 PIO 波形 + 联网、MicroPython 教学 ADC 精度、模拟前端要求高的项目

1.3 Linux 单板级(跑完整操作系统)

板卡 主控/架构 主频 RAM / 存储 GPIO 关键外设 典型功耗 参考价格 最适合 不适合
Raspberry Pi Zero 2 W BCM2710A1 四核 Cortex-A53 1 GHz 512 MB / microSD 40 pin WiFi b/g/n + BT 4.2、mini-HDMI、1×micro-USB OTG、CSI(窄排线) 空闲 ~0.5 W,满载 ~2 W ¥80–150 体积/功耗受限的 Linux 节点、机器人子节点 桌面、重算力、多 USB
Raspberry Pi 4B BCM2711 四核 Cortex-A72 1.5 / 1.8 GHz 1/2/4/8 GB / microSD 40 pin 2×micro-HDMI(4K30)、2×USB3.0 + 2×USB2.0、GbE、WiFi 5 + BT 5.0、CSI、DSI 空闲 ~2.7 W,满载 ~7 W(5 V/3 A) ¥300–550 Home Assistant、NAS、ROS 主机、OpenCV 入门 极致低功耗、硬实时
Raspberry Pi 5 BCM2712 四核 Cortex-A76 2.4 GHz 4/8 GB / microSD + PCIe 2.0 ×1 40 pin 2×4-lane MIPI CSI/DSI、2×micro-HDMI(双 4K60)、GbE、WiFi 5 + BT 5.0、RTC + 电源键、风扇接口 5 V/5 A PD(27 W),满载 ~12 W ¥450–700 桌面替代、NVMe 高速存储、PCIe 加速棒(Hailo-8L / Coral TPU)、多路摄像头 电池供电、无散热空间
BeagleBone Black Rev C TI AM3358 Cortex-A8 1 GHz 512 MB / 4 GB eMMC 2×46 pin(65 个 IO) 2×PRU 200 MHz 实时协处理器、micro-HDMI、USB、无 WiFi(需 dongle) 2–5 W ¥250–400 工业 IO 密集、硬实时脉冲(PRU)、学 Device Tree / 驱动 桌面、生态新项目、无线
NanoPi NEO3 / R2S / R4S RK3328 / RK3399 1.4–1.8 GHz 1–4 GB / microSD 24–30 pin 千兆网口(部分双网口)、USB3.0 3–8 W ¥150–450 软路由、OpenWrt、轻量服务器 GPIO 生态、新手入门
NanoPi R5S / R6S RK3568 / RK3588S 2.0–2.4 GHz 4–8 GB / eMMC + NVMe 26–30 pin 2.5G 双网口 + M.2 NVMe、RK3588 6 TOPS NPU 5–15 W ¥450–900 软路由 + 边缘 NPU 推理、旁路由 需要官方长期支持的 GPIO 库
Orange Pi Zero 2W / 3B / 5 全志 H618 / H616 / RK3588S 1.5–2.4 GHz 1–16 GB / microSD + eMMC/NVMe 26–40 pin WiFi + BT、USB3.0、HDMI、部分带 NPU 3–12 W ¥80–600 超低成本 Linux、自制小设备、RK3588 玩法 主线内核支持滞后、新手踩坑
Lichee Pi Zero / 4A 全志 V3s(A7)/ TH1520(RV64) 1.2 GHz / 1.85 GHz 64 MB SiP / 8–16 GB 26–40 pin 极低成本、可自制核心板、RISC-V 版本 0.5–8 W ¥60–500 学 linux-sunxi、做最小 Linux 系统、RISC-V 尝鲜 内存小、资料零散

1.4 边缘 AI / 异构计算级

板卡 主控/架构 算力 RAM / 存储 GPIO 关键外设 典型功耗 参考价格 最适合 不适合
Jetson Nano 4GB(B01) Tegra X1,四核 A57 + 128 CUDA(Maxwell) 472 GFLOPS(FP16) 4 GB / microSD 或 eMMC 40 pin(兼容 Pi 排布) 4×USB3.0、GbE、2×MIPI CSI-2、HDMI、DisplayPort 10 W 模式(5 V/4 A) ¥500–900(已停产,价高) 学 JetPack / CUDA / TensorRT、老项目维护 新项目(选 Orin Nano Super)
Jetson Orin Nano Super(8 GB) 六核 Cortex-A78AE + Ampere GPU(1024 CUDA / 32 Tensor Core) 67 TOPS(INT8) 8 GB / NVMe 推荐 40 pin M.2 NVMe、4×USB3.2、GbE、多路 CSI 7 / 15 / 25 W 可调 ¥1200–2000 YOLOv8/v11 实时推理、ROS 2 机器人、多路视觉 预算极低、电池供电
Jetson Orin NX(16 GB) 八核 A78AE + Ampere GPU 最高 157 TOPS(INT8) 16 GB / NVMe 40 pin 多路 CSI、PCIe ×4、NVMe 10–40 W ¥2500–4500 端侧多模态、具身智能、多路 SLAM 入门学习(性能过剩)
树莓派 5 + Hailo-8L BCM2712 + Hailo-8L(PCIe M.2 HAT) 13 TOPS(INT8) 4–8 GB / NVMe 40 pin 需购买 AI Kit(约 ¥500–700) 额外 2–3 W 板 + Kit 约 ¥1000–1300 想留在树莓派生态又要像样 NPU 对延迟/多模型并发要求高
树莓派 4B / 5 + Coral TPU USB 或 PCIe 加速棒 4 TOPS(INT8,仅支持 TensorFlow Lite) — — USB 3.0 / M.2 2–4 W ¥300–600(棒) 轻量分类/检测、低功耗推理 新项目(Coral 已停售,生态收缩)
BeagleBone AI-64 TDA4VM:双 A72 + 4×R5F + 2×C66x DSP + 4×EVE 8 TOPS 4 GB / 16 GB eMMC 双 46 pin 4×CSI、PCIe、双千兆网(含工业 TSN) 5–15 W ¥1200–1800 工业 + AI 混合、学异构 SoC(R5F 实时核 + DSP) 新手、快速出成果
K230 / K210(嘉楠) RISC-V 双核 + KPU 0.2–6 TOPS 8 MB–1 GB 约 30 摄像头直连、LCD、低功耗 0.3–3 W ¥80–300 超低功耗视觉 AI(人脸/分类) 复杂模型、通用 Linux 开发

1.5 FPGA 入门板(可选)

板卡 芯片 逻辑资源 存储 工具链 参考价格 最适合 不适合
Tang Nano 9K / 20K 高云 GW1NR-9 / GW1N-20 8640 / 20736 LUT 8 Mb PSRAM + SDRAM(部分型号) Gowin EDA(免费 license 需申请) ¥60–150 国内最便宜的 Verilog 入门、HDMI 输出实验 需要开源工具链(yosys+nextpnr 支持有限)
正点原子 达芬奇 / 新起点 Xilinx Artix-7 XC7A35T / XC7A100T 33k / 101k LUT DDR3 Vivado(免费 WebPack) ¥400–900 学 Vivado、IP 核、MicroBlaze 软核 便携/低成本
iCEBreaker / iCE40UP5K Lattice iCE40UP5K 5280 LUT — 全开源:yosys + nextpnr + iceprog ¥200–350 想用完全开源工具链、理解综合实现流程 大设计、高速接口

⚠️ 注意:以上价格为国内电商(含关税波动与缺货行情)的参考区间,行情变化很快,下单前请以当日实际报价为准。芯片级原厂涨价时,克隆板价格可以差 3–5 倍,务必看清主控丝印。

二、选型决策树

2.1 按需求直接对号入座

你的需求 首选 备选 关键理由
只点个灯、读个温湿度、做教学演示 Arduino Nano(¥12) Arduino Uno R3 生态最厚,翻车率最低,5 V 电平抗造
要联网(MQTT / HTTP / Home Assistant)+ 便宜 ESP32-C3 ESP32-S3 单芯片 WiFi+BLE,深度睡眠 µA 级,Arduino/ESP-IDF/MicroPython 全支持
要联网 + 摄像头 / 语音 / USB HID / 很多 IO ESP32-S3(带 PSRAM) ESP32 原版(仅 IO 够用) 512 KB SRAM + 8 MB PSRAM + 向量指令,原生 USB OTG
要蓝牙(BLE)低功耗传感器节点 ESP32-C3 / nRF52840 ESP32-H2(Zigbee/Thread) 深度睡眠电流 µA 级,nRF52840 生态偏 Zephyr
要硬实时、精确时序、PWM 死区、电机 FOC STM32F103C8T6 / F407 RP2040(PIO 做波形) 定时器/高级定时器资源完整,中断延迟确定
要 CAN 总线(车载 / 工业) STM32F103(需 CAN 收发器) / F407(双 CAN) ESP32(TWAI + 收发器) STM32 的 CAN 外设与生态最成熟
要跑 Linux、写 Python、跑 Docker、Home Assistant 树莓派 5(或 4B) NanoPi / Orange Pi(预算紧) 资料最多,GPIO 生态最全,出问题最好搜
要跑 Linux 且体积/功耗受限 Raspberry Pi Zero 2 W Orange Pi Zero 2W 四核 A53 + WiFi,成本不到百元
要做视觉 / 跑 YOLO / ROS 2 机器人 Jetson Orin Nano Super 8 GB 树莓派 5 + Hailo-8L JetPack 自带 CUDA/TensorRT/VPI,模型部署链路最顺
要多路摄像头 + SLAM + 端侧大模型 Jetson Orin NX 16 GB 工控机 + 独显 带宽和算力都需要,预算也要够
要工业级硬实时 + 大量 IO BeagleBone Black(PRU) STM32 + Linux 主机 PRU 是 200 MHz 确定性协处理器,可在 Linux 旁做硬时序
要超低成本量产(BOM < ¥5) CH32V003 / ESP32-C3 GD32F103 / STM32F030 芯片单价 ¥1 级,但开发效率要权衡
想理解数字电路 / 写 Verilog / 做高速并行 Tang Nano 9K Artix-7 板 并行是 FPGA 的核心优势,别拿它跟 MCU 比"谁快"
想学 Device Tree、内核驱动、U-Boot BeagleBone Black / 全志板 树莓派(主线支持好但闭源 boot) 全志/BB 的资料更偏"底层",树莓派偏"应用"

2.2 决策流程(逐级自问)

Q1. 需要跑 Linux 吗?
├─ 需要 ──→ Q2
└─ 不需要(裸机/RTOS)──→ Q4

Q2. 需要 GPU 算力跑神经网络吗?
├─ 需要 ──→ Jetson Orin Nano Super / Orin NX(> 40 TOPS 选 NX)
│          预算不足则 树莓派 5 + Hailo-8L(13 TOPS)
└─ 只需要通用 Linux ──→ Q3

Q3. 预算和体积?
├─ 体积/功耗优先 ──→ Raspberry Pi Zero 2 W
├─ 通用推荐 ──→ Raspberry Pi 5(4 GB 够用,8 GB 留给多容器)
└─ 预算 < 200 或要网口/软路由 ──→ Orange Pi Zero 2W / NanoPi R2S

Q4. 需要无线(WiFi / BLE)吗?
├─ 需要 ──→ Q5
└─ 不需要 ──→ Q6

Q5. 无线的形态?
├─ 只要 WiFi,成本敏感 ──→ ESP32-C3
├─ WiFi + BLE + 更多 IO / 摄像头 / USB ──→ ESP32-S3
├─ Zigbee / Thread / Matter ──→ ESP32-C6 或 ESP32-H2
└─ 要 PIO 精确波形 + 联网 ──→ Pico W

Q6. 需要硬实时 / CAN / 精确定时器吗?
├─ 需要 ──→ Q7
└─ 只是点灯读传感器 ──→ Arduino Nano(教学)或 CH32V003(量产)

Q7. 资源需求?
├─ 入门、量产、成本敏感 ──→ STM32F103C8T6(注意买带 CAN 收发器底板)
├─ 需要以太网 / 摄像头 / 更高主频 ──→ STM32F407
└─ 需要国产替代 / 供货保障 ──→ GD32F103(注意不兼容 STM32 二进制)

2.3 三种常见错误选型

错误做法 后果 正确做法
用树莓派做精确脉冲控制(步进电机、WS2812 严格时序) Linux 非实时,脉冲抖动导致丢步或灯珠乱闪 用 STM32 / RP2040(PIO)做下位机,树莓派做上位机发指令
用 ESP8266 开新项目 资源紧张、无 BLE、官方 Arduino Core 维护放缓 直接上 ESP32-C3,价格差距已不到 ¥5
用 Arduino Uno 做联网项目 需外挂 ESP-01 + 电平转换,AT 指令调试地狱 ESP32 单芯片解决,还省一块板
用 Jetson Nano 开新 AI 项目 已停产,价格被炒高,性能只有 Orin Nano 的 1/5 Jetson Orin Nano Super,价格接近但性能强很多
只看"主频"选 MCU 168 MHz 的 STM32 做实时控制远胜 1.5 GHz 的树莓派 先问"要不要跑 Linux/要不要确定性时序",再比参数

三、逐板详解:规格 / 上手资源 / 常见坑

3.1 Arduino Uno R3 / Nano

关键规格

项 Uno R3 Nano(国产克隆)
主控 ATmega328P ATmega328P
工作电压 5 V 5 V
输入电压 7–12 V(DC 插孔 / VIN) 7–12 V(VIN)或 5 V(5V 脚)
数字 IO 14(D0/D1 为串口,D3/5/6/9/10/11 支持 PWM) 14(同样 6 路 PWM)
模拟输入 A0–A5,10 位 ADC A0–A7,10 位 ADC
每脚最大电流 20 mA(推荐),40 mA(绝对最大) 同
5V 脚最大输出(外部供电时) 约 400–500 mA 受 USB / 板上稳压限制,更小
Flash / SRAM / EEPROM 32 KB / 2 KB / 1 KB 同
USB 转串口芯片 ATmega16U2(原装)/ CH340(克隆) CH340 为主,少数 FT232

上手资源

  • 官方:arduino.cc → Documentation → Language Reference
  • 引脚图搜索关键词:Arduino Nano pinout、Arduino Uno pinout diagram
  • IDE:Arduino IDE 2.x(见本系列第 2 篇环境配置)

常见坑

  1. D0/D1 被串口占用:上传程序时 D0(RX)/D1(TX) 必须空闲,接了外设会上传失败(报 avrdude: stk500_recv(): programmer is not responding)。
  2. SRAM 只有 2 KB:String 拼接、递归、大数组极易爆栈,症状是程序随机复位或串口输出乱码。用 char buf[] + snprintf,字符串常量放 F() 宏:Serial.println(F("hello"))。
  3. Nano 的 5 V 脚供电能力弱:直接带继电器 / 舵机会把板子拉复位。舵机、继电器必须单独供电,只共地。
  4. CH340 驱动:Windows 10/11 一般自动装;Linux 需确认 ch341 内核模块;macOS 新版需手动允许内核扩展。
  5. A6/A7(Nano 专属)只能做模拟输入,不能 digitalRead。
  6. 5 V 电平:与 3.3 V 器件(ESP32、树莓派)直连会烧毁对方的 IO。用分压电阻或电平转换模块。

3.2 ESP8266(D1 mini / NodeMCU)

关键规格

项 参数
主控 Tensilica L106 32 位,80 MHz(可超频 160 MHz)
SRAM 约 80 KB,用户可用约 50 KB(其中堆 ~40 KB)
Flash 外挂 SPI flash,常见 4 MB(D1 mini 为 4 MB)
GPIO D1 mini 引出 11 个(D0–D8 + A0 + 部分复用)
ADC 仅 1 路,输入范围 0–1 V(D1 mini/NodeMCU 板载 220 kΩ/100 kΩ 分压,可测 0–3.3 V)
无线 WiFi 802.11 b/g/n 2.4 GHz,无蓝牙
深度睡眠 约 20 µA(需 GPIO16 接 RST 唤醒)
峰值电流 约 170 mA(WiFi TX 瞬间可更高)

上手资源

  • Arduino Core:https://arduino.esp8266.com/stable/package_esp8266com_index.json
  • 官方文档:arduino-esp8266.readthedocs.io
  • 引脚图搜索:Wemos D1 mini pinout

常见坑

  1. GPIO 编号 ≠ 丝印编号:代码里用 D1 对应 GPIO5,digitalWrite(D1) 才对;直接写 5 也对,但写 1 就错了(GPIO1 是 TX)。D1 mini 的 D0=GPIO16、D1=GPIO5、D2=GPIO4、D3=GPIO0、D4=GPIO2。
  2. 上电时的 Strapping 引脚:GPIO0 拉低 = 下载模式,GPIO2 必须高,GPIO15 必须低。外接电路若把这些脚拉到错误电平,板子会无法正常启动(不断重启或进不了程序)。
  3. 不能同时用 ADC 和 WiFi 的某些模式:ADC 读取时 WiFi 会短暂干扰,精度一般。
  4. 电源必须给足:USB 口劣质线或电脑前置面板供电不足,表现为 WiFi 连接时反复重启。加 100 µF + 0.1 µF 电容靠近 VCC。
  5. Flash 模式:老版本需手动设置 DOUT/DIO/QIO,选错会启动即崩。新工具默认 DIO,一般无需改。

⚠️ 注意:ESP8266 只有 1 路 ADC 且量程 0–1 V。往 A0 直接灌 3.3 V/5 V 会烧 ADC 甚至整片。

3.3 ESP32 / ESP32-C3 / ESP32-S3

关键规格对比

项 ESP32(WROOM-32) ESP32-C3 ESP32-S3
内核 Xtensa LX6 双核 RISC-V 单核 Xtensa LX7 双核
主频 240 MHz 160 MHz 240 MHz
SRAM 520 KB 400 KB 512 KB
Flash 外挂 4 MB(最大 16 MB) 外挂 4 MB 外挂 8/16 MB + 可选 PSRAM
无线 WiFi 4 + BT 4.2(BR/EDR + BLE) WiFi 4 + BLE 5 WiFi 4 + BLE 5
USB 无原生(需 CP210x/CH340 桥接) 部分芯片有原生 USB Serial/JTAG 原生 USB OTG(可作 HID/CDC/MSC)
DAC 2×8 位 无 无
ADC 18 通道 12 位(ADC2 与 WiFi 冲突) 6 通道 12 位(GDMA 支持) 20 通道 12 位
电容触摸 10 路 无 14 路
可用 GPIO 约 26–34 22 45(大部分可用)
安全特性 Secure Boot V1/V2、Flash Encryption、eFuse Secure Boot V2、Flash Encryption、HMAC、数字签名外设 同 C3,另加
参考价格 ¥20–40 ¥10–18 ¥25–50

上手资源

  • Arduino Core 索引:https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  • 官方文档(ESP-IDF):docs.espressif.com
  • 编程指南《ESP-IDF 编程指南》中文版质量很高,建议直接读官方而不是二手博客
  • 引脚图搜索:ESP32 DevKitC pinout、ESP32-S3 DevKitC-1 pinout

常见坑(这条最重要,逐条记住)

  1. GPIO 6–11 接内部 Flash,绝对不可用。用了会直接崩(Cache 异常 / 无法启动)。
  2. GPIO 34/35/36/37/38/39 是输入专用(GPI),没有输出驱动,也没有内部上拉(部分有)。digitalWrite() 无效。
  3. GPIO 0 / 2 / 5 / 12(MTDI) / 15(MTDO) 是 Strapping 引脚,上电时的电平决定启动模式与 Flash 电压:
    • GPIO0 拉低 → 进入下载模式(正常运行时必须浮空/上拉)
    • GPIO12 上拉会导致 Flash 电压被设为 1.8 V → 板子不启动。老 ESP32 板若 GPIO12 被外接拉高,表现为"下载成功但一直重启"。新版本芯片可用 eFuse 关闭该 Strapping。
  4. ADC2(GPIO 0/2/4/12–15/25–27)在 WiFi 开启时完全不可用,analogRead() 会失败或返回随机值。需要 ADC 就用 ADC1(GPIO 32–39)。
  5. EN 脚需要上拉 + 电容到地才能保证可靠复位。自制板最常见的不启动原因就是 EN 处理不对。
  6. 下载需要手动进 Boot 模式? DevKitC 一般有自动下载电路(DTR/RTS 控制 EN+GPIO0)。自制板/裸模块需要手动按住 BOOT 键再点 EN。
  7. Flash 频率与模式:menuconfig / Arduino 工具里 Flash 频率选 80 MHz(DIO 或 QIO)。超到 80 MHz OPI 可能不稳;PSRAM 型号选错会 PSRAM ID read error。
  8. 3.3 V 供电,绝不接 5 V。所有 IO 也是 3.3 V 电平,5 V 直连即烧。
  9. WiFi 峰值电流大:USB-TTL 的 3.3 V LDO(尤其 CH340 板)带不动,症状是 WiFi 一连上就重启。用独立 3.3 V ≥ 500 mA 电源 + 100 µF 电容。

芯片/Flash 快速确认命令

# 读芯片 ID 与 Flash 信息(先按住 BOOT 或确保能自动进下载模式)
esptool.py chip_id
esptool.py flash_id

# 读取 eFuse 摘要(看是否有安全特性已启用)
espefuse.py summary

3.4 STM32F103C8T6「蓝丸」与 STM32F407

关键规格

项 F103C8T6(蓝丸) F407VET6(黑板)
内核 Cortex-M3 @ 72 MHz Cortex-M4F @ 168 MHz(含 FPU、DSP)
SRAM / Flash 20 KB / 标称 64 KB(多数实为 128 KB) 192 KB / 512 KB
调试接口 SWD(SWDIO/SWCLK)+ 串口下载 SWD + JTAG
通信 2×SPI、2×I2C、3×USART、1×CAN、USB 2.0 FS 3×SPI、3×I2C、6×USART、2×CAN、USB OTG FS/HS、以太网 MAC、DCMI
ADC 2×10 通道 12 位(1 MSPS) 3×16 通道 12 位(2.4 MSPS)
定时器 2×高级(6 路互补 PWM,带死区)+ 4×通用 2×高级 + 10×通用 + 2×基本
5 V 容忍引脚 部分 IO 支持 5 V(标 FT) 部分支持
供电 3.3 V(板上 LDO 由 5 V 降压) 3.3 V
参考价格 ¥12–25 ¥45–90

上手资源

  • ST 官方:STM32CubeMX、STM32CubeIDE(免费)、HAL/LL 库文档
  • 参考手册必须看:RM0008(F1)、RM0090(F4),Datasheet 看引脚定义与电气特性
  • 数据手册搜索:STM32F103C8T6 datasheet、STM32F407VET6 datasheet
  • 中文资料:正点原子、野火的 F1/F4 教程(适合入门,但注意库版本)

常见坑

  1. USB 的 D+ 上拉电阻错值:标准 USB 全速设备需在 D+(PA12)接 1.5 kΩ 上拉到 3.3 V。很多廉价蓝丸焊的是 4.7 kΩ 或 10 kΩ,导致电脑识别成"无法识别的 USB 设备"或干脆不枚举。解决办法:换 1.5 kΩ 电阻(板上 R10),或在 PA12 与 3.3 V 之间手动飞一个 1.5 kΩ。
  2. 丝印打磨的假芯片:低价蓝丸常见 STM32 打磨片。判断方法:看丝印是否清晰、用 st-info --probe 读芯片 ID(F103 的 IDCODE 为 0x1BA01477)、看 128 KB Flash 是否真的可用。
  3. BOOT0/BOOT1 跳线:BOOT0=1 进系统 Bootloader(串口下载),BOOT0=0 从用户 Flash 启动。下载完忘记把跳线拨回来 = "程序不运行"。
  4. SWD 被禁用:如果用户程序把 PA13/PA14 配成了普通 GPIO,且没接复位,ST-Link 就再也连不上了。救砖方法:按住 RESET → 点连接 → 松手瞬间连上(Connect under reset)。
  5. 读保护 RDP Level 1:一旦设置,调试器读不出 Flash。量产前才设,调试期间不要设 Level 2(不可逆)。
  6. PA13/PA14/PA15/PB3/PB4 默认是 JTAG 脚,当普通 IO 用必须先 __HAL_RCC_AFIO_CLK_ENABLE(); __HAL_AFIO_REMAP_SWJ_NOJTAG();(或禁用 JTAG 保留 SWD)。
  7. ADC 参考电压:多数小板的 VDDA 直接接 3.3 V 数字电源,噪声大,ADC 读数漂。要求精度就要外部基准(如 TL431 / REF3033)或软件多次采样平均。
  8. 不要热插拔 SWD 排线:带电插拔极易打坏调试口。

⚠️ 注意:STM32 的 IO 虽然部分标称 5 V tolerant(FT),但仅在配置为输入/开漏且数字功能时成立。配置为模拟或输出时灌 5 V 照样烧。稳妥做法:与 5 V 系统(Arduino)通信一律加电平转换。

3.5 Raspberry Pi Pico / RP2040

关键规格

项 参数
主控 RP2040,双核 Cortex-M0+ @ 133 MHz(可超频,但不保证)
SRAM 264 KB
Flash 板载 2 MB QSPI(Pico),其它型号 2–16 MB
GPIO 26 个(Pico 引出 26,其中 4 路可用 ADC:GPIO26–28 + 内部温度传感器在 GPIO29)
ADC 12 位 SAR,但实际 ENOB 约 8.5–9 位;参考电压来自 3.3 V 电源
特色 8 个 PIO 状态机:可编程 IO,能精确生成/采样任意波形(DVI、VGA、SDIO、WS2812、曼彻斯特编码等)
USB 原生 USB 1.1(可作 Device;Pico 需借助软件库支持 Host,硬件上支持)
无线 无(Pico W 有 CYW43439:WiFi 4 + BLE 5)
供电 1.8–5.5 V(通过 VSYS),板载 3.3 V LDO(约 300 mA 输出)
参考价格 Pico ¥15–25 / Pico W ¥35–45

上手资源

  • 官方《Get Started with MicroPython on Raspberry Pi Pico》(PDF,中文版有)
  • 官方 C/C++ SDK 文档、Pico SDK Examples
  • 引脚图搜索:Raspberry Pi Pico pinout(官方那张彩色 PDF 必存)

常见坑

  1. Pico W 的板载 LED 不在 GPIO25,而是连在无线芯片(CYW43439)上。要用 machine.Pin("LED", machine.Pin.OUT)(MicroPython)或 cyw43_arch_gpio_put()(C SDK),直接控 GPIO25 无效。
  2. ADC 参考电压是板载 3.3 V,所以电源噪声直接进 ADC。要精度就:外部 3.3 V 低噪声基准 + AGND 脚(Pin 33)接地 + 软件过采样。
  3. GPIO 编号 ≠ 物理管脚号:Pico 的 Pin 1 是 GP0,Pin 2 是 GP1……但中间穿插 GND/电源脚。写代码用 GPx 编号,接杜邦线数物理号。
  4. 烧录方式:按住 BOOTSEL 上电 → 出现 RPI-RP2 U 盘 → 拖入 .uf2。之后所有烧录仍需重新进 BOOTSEL(除非用 SWD 或 picotool)。
  5. 没有用户 EEPROM/Flash 区:要存配置得用外部 EEPROM/Flash,或者占用 Flash 末尾扇区(注意磨损与擦除粒度 4 KB)。
  6. 3.3 V IO,5 V 即烧。Pico 的 VBUS 是 5 V(Pin 40),别把 VBUS 接到信号脚上。

3.6 Raspberry Pi 4B / 5 / Zero 2 W

关键规格对比

项 Zero 2 W 4B 5
SoC BCM2710A1(A53 四核 1 GHz) BCM2711(A72 四核 1.8 GHz) BCM2712(A76 四核 2.4 GHz)
RAM 512 MB LPDDR2 1/2/4/8 GB LPDDR4 4/8 GB LPDDR4X
GPU / VPU VideoCore IV VideoCore VI VideoCore VII
存储 microSD microSD(可从 USB 启动) microSD + PCIe 2.0 ×1(M.2 HAT)
显示 mini-HDMI 2×micro-HDMI,双 4K30 2×micro-HDMI,双 4K60
USB 1×micro-USB OTG 2×USB3.0 + 2×USB2.0 2×USB3.0(5 Gbps)+ 2×USB2.0
网口 无 千兆(受 USB 总线限制,实约 300 MB/s 上限) 千兆(独立,满速)
无线 WiFi b/g/n + BT 4.2 WiFi 5(ac)+ BT 5.0 WiFi 5 + BT 5.0
摄像头 CSI(窄排线,与 Pi 4/5 不同) 1×CSI(2-lane) 2×4-lane CSI/DSI
供电 5 V/2.5 A(micro-USB) 5 V/3 A(USB-C,注意早期板有 CC 电阻 bug) 5 V/5 A(USB-C PD)
40-pin GPIO 电平 3.3 V 3.3 V 3.3 V
参考价格 ¥80–150 ¥300–550 ¥450–700

上手资源

  • 官方文档:raspberrypi.com/documentation
  • 引脚图:终端输入 pinout(需装 python3-gpiozero),或 gpio readall(wiringPi)
  • 镜像烧录:Raspberry Pi Imager(官方,支持预配置 SSH/WiFi/用户名)

常见坑

  1. GPIO 全部是 3.3 V 电平,且没有过压保护。往任意 GPIO 灌 5 V = 直接打穿 SoC。与 Arduino/5 V 传感器连接必须电平转换。即使是 5 V 供电的 HC-SR04 超声波,其 Echo 输出也是 5 V,必须分压(1 kΩ + 2 kΩ)后才能接。
  2. 电源不足导致的"玄学故障":Pi 4B 在 USB 外设多时峰值可超 3 A。欠压表现:右上角出现黄色闪电图标、USB 设备随机掉线、SD 卡损坏、无故重启。Pi 5 更严格:若检测不到 5 A 能力的 PD 电源,USB 口总电流会被限制到 600 mA。
  3. microSD 卡是最大故障源。建议用 A2 级高耐久卡,或直接上 NVMe/USB SSD(Pi 4B 需改 BOOT_ORDER,Pi 5 加 NVMe HAT 即可)。
  4. Pi 5 的 GPIO 库生态断层:RPi.GPIO 在 Pi 5 上支持不完整,官方推荐 gpiozero(底层用 lgpio)或直接 libgpiod / python3-libgpiod。旧代码迁移要注意。
  5. Pi 5 必须主动散热(官方 Active Cooler 或风扇),否则 80 °C 就降频。
  6. 串口分配:Pi 上 ttyAMA0(PL011 高性能串口)与 ttyS0(miniUART)的分配在蓝牙启用时会互换。默认蓝牙占用 ttyAMA0,GPIO14/15 上是 miniUART(波特率随 CPU 频率漂移,不稳定)。要用稳定 UART:在 config.txt 加 dtoverlay=disable-bt 或 dtoverlay=miniuart-bt。
  7. 1-Wire、SPI、I2C 默认关闭,需 raspi-config 或手动改 /boot/firmware/config.txt 开启 dtparam=i2c_arm=on 等。

3.7 NVIDIA Jetson(Nano / Orin)

关键规格对比

项 Jetson Nano 4GB Orin Nano Super 8 GB Orin NX 16 GB
GPU Maxwell 128 CUDA Ampere 1024 CUDA + 32 Tensor Core Ampere 1024 CUDA + 32 Tensor Core
CPU 四核 A57 @ 1.43 GHz 六核 A78AE @ 1.7 GHz 八核 A78AE @ 2.0 GHz
AI 算力 472 GFLOPS(FP16) 67 TOPS(INT8,sparse) 157 TOPS(INT8,sparse)
内存 4 GB LPDDR4(25.6 GB/s) 8 GB LPDDR5(102 GB/s) 16 GB LPDDR5(102 GB/s)
存储 microSD 或 eMMC 模块 microSD 或 NVMe(强烈推荐 NVMe) NVMe
功耗模式 5 W / 10 W 7 W / 15 W / 25 W 10 W / 25 W / 40 W
JetPack 版本 最高 JP 4.6.x(Ubuntu 18.04,已停更) JP 6.x(Ubuntu 22.04) JP 6.x(Ubuntu 22.04)
摄像头 2×MIPI CSI-2(2-lane) 多路 CSI(依载板) 多路 CSI(依载板)
载板 GPIO 40 pin(Pi 兼容排布,3.3 V) 40 pin 40 pin
参考价格 ¥500–900(停产) ¥1200–2000 ¥2500–4500

上手资源

  • 官方:developer.nvidia.com/embedded/jetson → JetPack SDK
  • 刷机工具:SDK Manager(需一台 Ubuntu x86 宿主机)或 jetson-flash / 命令行 l4t_initrd_flash
  • 中文社区:NVIDIA 开发者论坛、JetsonHacks

常见坑

  1. Jetson Nano 已停产,新项目不要买。价格被炒到接近 Orin Nano,性能却只有其 1/5。
  2. 刷机必须用 Ubuntu 宿主机(SDK Manager 不支持 Windows 直刷)。没有 Linux 机器就装虚拟机,但虚拟机 USB 切换容易掉线,用物理机最稳。
  3. JetPack 版本与 Ubuntu 版本强绑定:JP 5 → Ubuntu 20.04,JP 6 → Ubuntu 22.04,JP 4 → Ubuntu 18.04。选错版本会导致 CUDA 库依赖错乱。
  4. Nano 供电需要跳线:用 DC 桶头供电时必须短接 J48 跳线帽(在载板边缘),否则不启动。用 micro-USB 供电时不能接 J48。
  5. 功耗模式要手动切:默认可能是低功耗模式,推理速度上不去。用 sudo nvpmodel -m 0 切最高模式,sudo jetson_clocks 锁频。
  6. 40-pin GPIO 电平 3.3 V,且部分引脚复用为其它功能(如 I2C 的 Gen2 与 Gen8 不同)。用 jetson-gpio 库(pip 装 Jetson.GPIO)而不是 RPi.GPIO。
  7. 不要用 apt upgrade 升级 NVIDIA 的 CUDA 相关包,会搞坏依赖。要升级就整体刷新的 JetPack 镜像。

3.8 BeagleBone / NanoPi / 全志系

BeagleBone Black

项 参数
SoC TI AM3358,Cortex-A8 @ 1 GHz
内存 / 存储 512 MB DDR3 / 4 GB eMMC(部分版本)
GPIO 2×46 pin,共 65 个 IO,多数带复用
实时 2×PRU-ICSS 200 MHz 可编程实时单元,可在 Linux 之外做确定性 IO(5 ns 级)
显示 micro-HDMI
供电 5 V/2 A(DC 插孔,比 micro-USB 稳)
参考价格 ¥250–400
  • 上手资源:beagleboard.org 官方最新 Debian 镜像(不要装老教程里的 Ångström)、config-pin 工具、Device Tree 官方文档
  • 常见坑:
    1. 所有 IO 都是 3.3 V,单脚最大 4–6 mA(比树莓派弱很多),直接驱动 LED 都要串电阻,驱动继电器必须加三极管/MOSFET。
    2. 引脚默认复用不是 GPIO,必须用 config-pin P8.11 gpio 或写 Device Tree Overlay 切换模式。这是新手最大的困惑来源。
    3. eMMC 版本要把镜像刷到 eMMC 才能从 eMMC 启动,否则一直从 SD 卡启动。
    4. 老教程里的 capemgr(Bone 3.8 内核)已废弃,新内核用 config-pin + overlays。

NanoPi / Orange Pi / 全志系

项 NanoPi R5S Orange Pi Zero 2W Orange Pi 5
SoC RK3568(A55 四核 2.0 GHz) 全志 H618(A53 四核 1.5 GHz) RK3588S(A76×4 + A55×4)
NPU 0.8 TOPS 无 6 TOPS
内存 2–8 GB 1–4 GB 4–32 GB
网口 2×2.5 G 无(WiFi) 千兆
存储 microSD + eMMC microSD microSD + eMMC + M.2 NVMe
参考价格 ¥400–600 ¥80–150 ¥350–700
  • 常见坑:
    1. 镜像选择比板子本身更重要。同一块 Orange Pi,用厂商版 Ubuntu/Debian、OpenWrt、Armbian 主线内核,体验天差地别。GPIO/视频编解码通常只有厂商内核完整支持,主线内核可能没 NPU/没有 VPU。
    2. GPIO 库混乱:不同分支的 wiringPi、OPi.GPIO、libgpiod 混用会出错。优先用标准 libgpiod(gpiodetect / gpioinfo / gpioget)。
    3. 供电与散热:RK3588 满载需 5 V/4 A + 主动散热,否则降频重启。
    4. 资料多为中文社区,英文搜索基本搜不到;同时资料时效性差,注意看发布日期与内核版本。

3.9 FPGA 入门板(Tang Nano 等)

  • Tang Nano 9K:高云 GW1NR-9,8640 LUT,板载 8 Mb PSRAM,带 HDMI 输出(用 IO 模拟 TMDS)、1.14 寸 LCD 接口。工具链 Gowin EDA,免费 license 需在官网申请(绑定 MAC 地址)。
  • Artix-7 板:Vivado WebPack 免费,生态最全,IP 核(DDR、PCIe、千兆网)现成。
  • Lattice iCE40:唯一有完全开源工具链(yosys + nextpnr + icestorm)的选择,适合理解"综合—布局布线—生成比特流"全过程。

常见坑:

  1. 不要拿 FPGA 跟 MCU 比"性能"。FPGA 的价值是并行与确定性时序:同一时刻可以跑 100 个独立状态机,且每个都精确到 ns。但写一个 32 位除法器可能比 MCU 慢还更占资源。
  2. IO 电平由 Bank 的 VCCIO 决定,Tang Nano 常见 Bank 电压为 3.3 V,但也可能是 1.8 V,接错就烧。
  3. 时序约束不写 = 结果不可靠。不加 .sdc 约束的综合结果在高速下会随机出错。
  4. 配置存储:多数 FPGA 是 SRAM 架构,掉电丢失,需外部 SPI flash 存比特流。

四、国产替代与供货考量

4.1 主流国产替代方案

原型号 国产替代 兼容性 注意事项
STM32F103 系列 兆易创新 GD32F103 / GD32F303 引脚兼容,软件不兼容 主频可到 108 MHz;Flash 零等待(STM32 需等待周期),所以延时循环会跑快;需使用 GD 官方库或改 HAL;上电时序与 ADC 特性有差异
STM32F4 系列 GD32F4xx、APM32F4(极海) 引脚部分兼容 性能接近,但 USB、以太网 PHY 时序需重新验证
ATmega328P 中微/兆易 8 位机、CH32V003 不兼容 CH32V003 是 RISC-V,性能强很多但生态不同
ESP8266 / ESP32 乐鑫本身就是国产(上海) — 供货稳定,是国产替代的首选目标而非被替代对象
树莓派替代 香橙派、NanoPi、Radxa、firefly 部分 GPIO 兼容 软件生态差距是主要成本,不是硬件
Jetson 替代 地平线 旭日 X3 / RDK X5、瑞芯微 RK3588(6 TOPS) 不兼容 工具链不同;NVIDIA 的 CUDA 生态仍是最大壁垒
通用 8 位机 沁恒 CH32V003 / CH32V103(RISC-V) 不兼容 单价 ¥1 级,自带 USB(V103/V203),开发需 WCH-LinkE 或串口下载

4.2 选型时的供货/成本现实

  1. 克隆板 vs 原装:STM32 蓝丸、Arduino Nano 的克隆板价格是原装的 1/5,但存在打磨片、缩水电容、错值电阻风险。做产品务必从正规代理拿货;做学习无所谓。
  2. 芯片级 vs 开发板级:量产时永远按芯片算 BOM。ESP32-C3 芯片约 ¥6–8,CH32V003 约 ¥0.5–1.5,GD32F103 约 ¥4–8(缺货时翻数倍)。
  3. 供货周期:ST 的 F1/F4 在 2021–2023 年暴涨过一轮,目前回落。国产 MCU(GD、CH、MM32、AT32)在缺货周期里是有效的备选,但要预留 2–4 周的适配时间。
  4. 开源硬件优势:树莓派 Pico(RP2040)、ESP32 的**参考设计与模块(WROOM/WROVER)**都容易直接用于量产——模块已过认证(FCC/CE),省掉 RF 认证费用,这是选 ESP32 做产品的重要理由。
  5. 认证成本:带无线的产品,用现成模组(ESP32-WROOM、ESP32-C3-MINI)比自己画 RF 电路省下十几万的认证费和 3 个月时间。

五、从安全视角看:板卡上的攻击面

这一节是把硬件当成"可被审计的对象"来看,是选型阶段就该考虑的事。

5.1 每块板都有的调试接口

接口 常见位置 暴露风险 防护 / 关闭方式
UART 板边 3–4 pin 排针(VCC/GND/TX/RX),或测试点 IoT 设备最常见的 root shell 入口。波特率试 9600/19200/38400/57600/115200,连上常直接给 root 生产时移除排针/丝印;软件里禁用 console;启用 Secure Boot 后关闭日志
SWD(STM32) PA13/SWDIO、PA14/SWCLK,10 pin 或 4 pin 排针 可全速 halt CPU、读/写全部 Flash 与 SRAM、绕过密码校验 设置 RDP Level 1(Level 2 不可逆);物理上灌胶
JTAG 4–5 pin(TMS/TCK/TDI/TDO/nTRST) 同 SWD,且常见于 Linux 板(Jetson、 routers) 熔断 JTAG 熔丝(如 Jetson 的 odmfusewrite);BGA 下不留测试点
串口 Bootloader STM32 BOOT0 跳线、ESP32 GPIO0 可通过串口 dump 整个 Flash STM32 设 RDP;ESP32 启用 Flash Encryption
SPI Flash 芯片 板上 8-pin SOIC(25Qxx 系列) 用夹子(如 Pomona 5250)在线读取,或热风枪拆下放编程器读 启用 Flash Encryption(ESP32)、加密文件系统(Linux)
USB DFU / Recovery Pi 的 USB-C(RPi Boot)、Jetson 的 Recovery 模式 可重新刷写,绕过系统内权限 物理封口;设 BOOT_ORDER 禁 USB 启动;加 eFuse 写保护

5.2 各平台的安全特性对比

平台 安全启动 Flash 加密 调试口锁死 备注
ESP32 Secure Boot V1/V2(V2 基于 RSA-PSS,推荐) Flash Encryption(AES-256-XTS) eFuse DIS_DOWNLOAD_MODE、JTAG_DISABLE 一旦烧 eFuse 不可逆,先在测试片上验证
ESP32-C3/S3 Secure Boot V2 + 数字签名外设 Flash Encryption + XTS-AES 同 C3/S3 另有 HMAC、密钥管理单元
STM32F1 无 无(只有 RDP 读保护) RDP Level 1/2 F1 年代久远,安全特性很弱
STM32F4/L4/H5 部分型号有 RDP + PCROP;H5 有 TrustZone 部分有 AES 硬件(CRYP) RDP + MPU 高安全需求选 L5/H5/U5 系列
树莓派 支持(需自行签名 + signing_key) 需自行配置 LUKS 全盘加密 可禁 JTAG GPIO 复用 默认全部关闭,SD 卡拔下来就能读
Jetson Secure Boot(PKC/ SBK 密钥) 磁盘加密 ODM fuse 熔断后禁用调试 烧 fuse 不可逆,务必先小批量验证

5.3 选型时的安全红线

  1. 做产品就不要选 STM32F103 这种没有硬件安全特性的老型号,除非 BOM 压力极大。起码选带 RDP Level 2 或 TrustZone 的型号。
  2. ESP32 的 eFuse 操作不可逆:DIS_DOWNLOAD_MODE、JTAG_DISABLE、Secure Boot 的公钥哈希一旦烧写就无法回退。开发阶段用开发板试,量产片单独走流程。
  3. 树莓派的 SD 卡等于明文硬盘:任何人拔下卡插到电脑上就能读全部文件。要做产品必须全盘加密 + 启用安全启动 + 禁用 USB 启动。
  4. 调试口留测试点 = 给攻击者留门。做 PCB 时把 UART/SWD 的测试点放到 BGA 下方或灌胶,成本几乎为零,收益极大。

⚠️ 注意:以上都是针对自己拥有或已授权测试的设备。对他人设备做未授权的固件提取、调试口读取,属于违法行为,不在本系列讨论范围内。本文的安全视角仅用于自己产品加固与理解攻击面。

六、入门采购清单建议

6.1 最小可用套装(约 ¥400)

数量 物品 参考价格 用途
1 ESP32-S3 DevKitC-1(N8R8 或 N16R8) ¥35 主力开发板,联网/USB/AI 都能玩
2 STM32F103C8T6 蓝丸 ¥30 学裸机/SWD 调试,坏一块不心疼
1 ST-Link V2 调试器 ¥20 STM32 烧录与调试必备
1 Raspberry Pi Pico(W 版可选) ¥25 学 PIO、MicroPython
1 面包板 + 830 孔 ¥10 免焊接原型
1 杜邦线(母对母 / 公对母 / 公对公 各 20 根) ¥15 最常缺的耗材
1 逻辑分析仪(8 通道 24 MHz,兼容 Saleae) ¥40 查 I2C/SPI/UART 时序,比万用表好用
1 万用表(带蜂鸣档 + 电容档) ¥50 通断、电压、短路检测
1 传感器模块包(DHT22、OLED SSD1306、MPU6050、HC-SR04、SG90 舵机、LED、按键、继电器、电阻包) ¥80 覆盖第 3 篇全部实验
1 可调电源模块 / 5 V 3 A 电源 ¥40 避免 USB 供电不足的玄学故障
1 电烙铁(推荐 T12 或 936)+ 焊锡 + 助焊剂 ¥100 焊接排针、飞线

第二梯队(有具体需求再买):树莓派 5、Jetson Orin Nano Super、示波器(二手 100 MHz 约 ¥800–1500)、恒温烙铁/热风枪、直流稳压电源。

6.2 常用查询命令速查

# —— ESP32 / ESP8266 ——
esptool.py chip_id                    # 读芯片型号与 ID
esptool.py flash_id                   # 读 Flash 厂商、容量
esptool.py read_mac                   # 读 MAC 地址
espefuse.py summary                   # 查看 eFuse(安全特性状态)
esptool.py read_flash 0 0x400000 fw.bin   # 备份整片 Flash(4MB)

# —— STM32 ——
st-info --probe                       # 识别 ST-Link 连接的芯片
st-info --flash --size                # 查 Flash 大小
st-flash read firmware.bin 0x8000000 0x10000   # dump Flash

# —— 树莓派 ——
pinout                                # 打印 GPIO 排布图(终端内)
cat /proc/cpuinfo | grep Revision     # 查板子 Revision
vcgencmd measure_temp                 # CPU 温度
vcgencmd get_throttled                # 0x0 表示无欠压/无降频
cat /sys/firmware/devicetree/base/model

# —— Jetson ——
jetson_release                        # 打印 L4T/JetPack/CUDA 版本
jtop                                  # 需 pip3 install -U jetson-stats
sudo nvpmodel -q                      # 当前功耗模式
tegrastats                            # 实时 CPU/GPU/内存/温度

# —— 通用 ——
lsusb                                 # 看 USB 设备(CH340/CP210x/ST-Link)
dmesg -w                              # 插上设备看内核日志
ls /dev/ttyUSB* /dev/ttyACM*          # 查串口设备
udevadm info -q property -n /dev/ttyUSB0 | grep ID_   # 查设备属性

七、延伸阅读与本系列导航

  • 本系列第 2 篇:《嵌入式开发环境配置实战》——Arduino IDE / PlatformIO / ESP-IDF / STM32Cube / 树莓派 / Jetson 的环境搭建与排错
  • 本系列第 3 篇:《硬件模块与通信协议基础》——UART/I2C/SPI/PWM/ADC/CAN 精讲 + 常用模块速查 + 电源与焊接

官方文档优先原则:板卡相关的问题,官方文档(Datasheet、Reference Manual、厂商 Wiki)永远比二手博客准确。二手博客只在"文档没写清楚的具体坑"上有价值——而这正是本系列要补的部分。