Files
nexus/wiki/sources/engineering-embedded-firmware-engineer.md
2026-05-03 05:42:12 +08:00

56 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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]]:开源 RTOSESP-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 基金会托管的开源 RTOSNordic/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/移动)可适度使用快速原型