3.7 KiB
3.7 KiB
title, type, tags, date
| title | type | tags | date |
|---|---|---|---|
| Embedded Firmware Engineer Agent Personality | source | 2026-05-01 |
Source File
Summary(用中文描述)
- 核心主题:The Agency 旗下的嵌入式固件工程师 Agent 人格定义,专注于资源受限嵌入式系统的生产级固件开发
- 问题域:MCU 选型(ESP32/STM32/Nordic nRF)、裸机与 RTOS 固件架构、外设驱动可靠性、通信协议实现、OTA 升级
- 方法/机制:FreeRTOS 任务架构设计(队列/信号量/事件组)、静态内存分配优先、ISR 最小化原则、平台差异化实践(ESP-IDF / STM32 LL/HAL / Nordic Zephyr)
- 结论/价值:交付零栈溢出、ISR 延迟可测量、Flash/RAM 使用可文档化、生产级可靠固件
Key Claims(用中文描述)
- RTOS 任务中禁止动态分配(malloc/new),必须使用静态分配或内存池
- ISR 必须最小化——通过队列或信号量将工作延迟到任务处理
- 栈大小必须计算而非猜测,使用
uxTaskGetStackHighWaterMark()验证 - STM32 时序关键代码优先使用 LL 驱动而非 HAL
- Nordic 平台使用 Zephyr devicetree 和 Kconfig,禁止硬编码外设地址
- PlatformIO 生产环境
platformio.ini必须锁定库版本,禁止使用@latest
Key Quotes
"ISRs must be minimal — defer work to tasks via queues or semaphores" — ISR 设计核心原则,强制最小化中断处理路径 "Stack sizes must be calculated, not guessed — use
uxTaskGetStackHighWaterMark()" — 栈大小验证规范,防止生产环境栈溢出 "Never use dynamic allocation (malloc/new) in RTOS tasks after init" — RTOS 内存安全铁律,消除堆碎片风险
Key Concepts
- FreeRTOS:开源 RTOS,ESP-IDF/Nordic Zephyr 均基于此实现多任务调度,提供队列/信号量/事件组等 IPC 机制
- ARM-Cortex-M:嵌入式 MCU 主流架构,ESP32/STM32/Nordic nRF 均基于此系列
- ESP-IDF:乐鑫官方 ESP32 开发框架,包含 Wi-Fi/BLE 驱动、OTA、文件系统等组件
- STM32-HAL-LL:STM32 的两套驱动层——HAL 通用但时序差,LL 轻量且时序精确
- Nordic-nRF:Nordic 半导体低功耗蓝牙 SoC 系列,使用 Zephyr RTOS 和 nRF Connect SDK
- Zephyr-RTOS:Linux 基金会托管的开源 RTOS,Nordic/Zephyr 生态核心,支持 devicetree 和 Kconfig
- OTA-Upgrade:空中固件升级,ESP-IDF/STM32 自定义 bootloader/MCUboot 各有实现路径
Key Entities
- ESP32:乐鑫 Wi-Fi+BLE SoC,ESP-IDF 目标平台,固件 OTA 升级主力芯片
- STM32:STMicroelectronics MCU 系列,STM32-HAL-LL 驱动层,面向工业传感/控制场景
- Nordic-nRF:Nordic 蓝牙 SoC,面向可穿戴/IoT 低功耗应用
- PlatformIO:跨平台嵌入式开发环境,支持 ESP32/STM32/Nordic,统一
platformio.ini配置 - FreeRTOS:嵌入式 RTOS,内核被 ESP-IDF 和 Zephyr 引用,提供任务调度和 IPC
Connections
- engineering-backend-architect ← uses → FreeRTOS — 后端架构师使用消息队列,嵌入式固件工程师设计 FreeRTOS 队列作为 IPC
- engineering-software-architect ← informs → ARM-Cortex-M — 软件架构师了解硬件抽象,固件工程师精通 MCU 底层
Contradictions
- 与 engineering-rapid-prototyper 的速度哲学对比:
- 冲突点:快速原型是否允许技术债
- 当前观点:固件工程师禁止使用 malloc/动态分配、不允许
platformio.ini使用@latest,强制稳定优先 - 对方观点:Rapid Prototyper 允许先跑通再优化,接受短期技术债换取速度
- 协调方案:固件层严格执行规范,上层应用层(Web/移动)可适度使用快速原型