56 lines
3.7 KiB
Markdown
56 lines
3.7 KiB
Markdown
---
|
||
title: "Embedded Firmware Engineer Agent Personality"
|
||
type: source
|
||
tags: []
|
||
date: 2026-05-01
|
||
---
|
||
|
||
## Source File
|
||
- [[Agent/agency-agents/engineering/engineering-embedded-firmware-engineer.md]]
|
||
|
||
## 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/移动)可适度使用快速原型
|