The Agentic Firmware Development Lifecycle
Back to blog
AI / LLMSeptember 22, 2026

The Agentic Firmware Development Lifecycle

Firmware development is fundamentally different from traditional software engineering. Unlike pure cloud or web applications, firmware is tightly coupled to physical hardware, real-time timing constraints, and register-level interactions. Context is rarely self-contained within source files alone; it is spread across multi-hundred-page datasheets, pin-multiplexing matrices, clock tree diagrams, and hardware errata sheets.

Chat-based AI assistants hit a wall in this environment. While a chat model can generate a plausible peripheral driver, it lacks awareness of your specific clock tree, pin assignments, RTOS task priorities, or ISR execution context. The result is code that compiles cleanly and looks correct, but silently breaks a timing budget, misconfigures a register, or violates a safety interlock it never knew existed.

Across our embedded engagements, we have moved from using AI as an ad-hoc chat assistant to structuring it as an autonomous agent with governed access to hardware context, versioned rules, and closed-loop verification against physical hardware. In this blog, we share how we practice agentic development for firmware engineering from our experience: The Agentic Firmware Development Lifecycle (FDLC).


The Traditional FDLC Baseline

Before introducing autonomous agents into firmware development, it helps to ground our approach in the traditional Firmware Development Lifecycle (FDLC).

In a traditional engineering setup, firmware development follows a sequential model:

  1. Requirements & Datasheet Analysis: Engineers manually extract hardware constraints and register configurations from multi-hundred-page datasheets, errata sheets, and schematics.
  2. Handwritten or Chat-Assisted Implementation: Hardware Abstraction Layers (HAL), peripheral drivers, RTOS tasks, and system setups are written manually or assembled line-by-line using ad-hoc AI chat prompts.
  3. Manual Host/Bench Debugging: Engineers cross-compile binaries, flash physical target boards on their desks, and analyze failures using oscilloscopes, logic analyzers, and serial trace logs.
  4. Knowledge Silos & Release: Critical rationale behind hardware workarounds stays trapped in email threads, pull request comments, or the heads of senior developers.

While this workflow has delivered reliable firmware for decades, its primary friction point is context loss. Every manual handover risks missing undocumented register constraints or timing interlocks. The Agentic FDLC formalizes these boundaries into machine-verifiable, version-controlled artifacts.


The Firmware Cycle, Adapted for Autonomous Agents

The Agentic Firmware Development Lifecycle (FDLC) organizes firmware development into six governed stages. What makes this a repeatable system is the commitment at each boundary: every stage produces a standard, version-controlled handover artifact that serves as both the input to the next stage and the audit trail for compliance.

01-lifecycle.png


1. Intent

An agent cannot safely write firmware without knowing what it is writing for. System intent captures both physical hardware realities and legacy software architecture:

  • HARDWARE_CONTEXT.md: Defines MCU datasheets, memory maps, pin assignments, clock trees, power budgets, and physical safety limits.
  • SOFTWARE_CONTEXT.md: Defines RTOS task priority ceilings, static memory allocation rules, IPC queue maps, interface contracts, and essential legacy workarounds.

While an agent can read source code directly, SOFTWARE_CONTEXT.md captures architectural intent and system constraints—preventing the agent from misinterpreting deliberate hardware workarounds as legacy technical debt, violating RTOS safety ceilings, or copying un-refactored dynamic allocation patterns. If a peripheral pin, memory block, or software module isn't declared here, the agent is barred from touching it.

2. Design: Feature Specs & Architecture Decision Records (ADRs)

Before writing implementation code, the engineer and agent align on a behavioral contract: state transitions, ISR priority levels, DMA channel allocations, and microsecond timing budgets.

Crucially, this stage captures the "why" behind system design. In traditional firmware projects, design trade-offs and rationale are buried in email threads or lost when senior engineers leave. In the agentic cycle, feature specifications (in docs/specs/) and Architecture Decision Records (ADRs in docs/adr/) preserve the historical context and trade-offs of the system. When an AI agent modifies code months later, reading these records ensures it does not unwittingly undo deliberate architectural trade-offs, break real-time deadlines, or remove intentional hardware errata workarounds. Human sign-off is mandatory before proceeding to code generation.

3. Build

The agent generates implementation code inside the boundaries of HARDWARE_CONTEXT.md, SOFTWARE_CONTEXT.md, feature specs, and AGENT_RULES.md, scaffolding drivers, boilerplate, and RTOS tasks. The agent cross-compiles the build, verifies clean assembly output, checks RAM/Flash memory footprint deltas against the linker map, and runs static analysis. BUILD_REPORT.json stores this machine-verifiable build proof.

CI-Enforced Agent Governance: Rule adherence is not left to developer discipline. In the automated CI build pipeline:

  • Rule & Schema Linting: Every pull request touching AGENT_RULES.md or .agent/rules/ is automatically validated for standard formatting, schema consistency, and conflict detection.
  • Deterministic Static Analysis First: Traditional, fast static analysis tools (cppcheck, clang-tidy, MISRA linters) enforce hard structural rules first (such as banning dynamic memory allocation, auditing stack limits, and catching buffer overflows).
  • Automated Semantic AI Review: Reserving AI evaluation for complex semantic and contextual rule checks, a CI-based review agent inspects incoming diffs against AGENT_RULES.md and context documents:
    • - Did the agent touch unauthorized peripheral registers or memory zones?
    • - Did it introduce subtle RTOS timing violations or bypass safety guidelines?
    • - Are critical ISR contexts, watchdog feeds, and timeout models strictly compliant? If any constraint is violated, the CI check fails immediately with actionable diagnostics, preventing non-compliant code from advancing.

4. Verify

Verification operates across two distinct tiers:

02-verification-loop.png
  • Tier 1 (Host Simulation): Executes on the host machine against HAL mocks or instruction-set simulators. Catches algorithmic logic bugs and state machine errors in seconds without risk to hardware.
  • Tier 2 (Physical Bench & HIL via Remote Restricted Access): Binary is flashed to physical test bench hardware over secure, gated remote tool bridges. The agent operates under restricted hardware permissions — it cannot issue arbitrary raw debug commands, but instead executes predefined bench workflows, parses serial trace outputs, and reads register dumps to isolate intermittent faults. All results are recorded in VERIFICATION_REPORT.md.

5. Deploy

Deploying firmware touches physical silicon, actuators, and regulatory compliance. Rather than an automated push, deployment is treated as a governed gate. RELEASE_MANIFEST.json provides verifiable proof that the binary meets all Flash and RAM budgets, satisfies essential safety audits (such as watchdog enablement), and has received explicit sign-off from a named engineer before touching target hardware.

6. Refine

In traditional firmware, when a bug is fixed, the hard-earned lesson lives only in a commit log or an engineer's memory. In the Agentic FDLC, every defect transforms into permanent institutional intelligence.

Refinement is the compounding flywheel of the lifecycle. Whether a constraint breach is caught by static CI checks in Build, host simulation in Tier 1, or bench telemetry in Tier 2, the resolution is never a fragile, one-off code patch. The root cause is codified directly into rules. Every cycle sharpens the agent's operating boundary, guaranteeing that the system never makes the same class of mistake twice — across any developer, any peripheral, or any future release.


Anatomy of an Agentic Firmware Repository

To understand how this operates in practice, compare a standard embedded repository layout with an agentic repository.

Traditional Firmware Layout (Pre-AI)

In a traditional firmware codebase, the repository revolves almost entirely around source code, build scripts, and manually executed test suites:

Screenshot 2026-09-22 184132.png


Agentic Firmware Layout

An agentic repository maintains the exact same traditional core structure (src/, tests/), but augments it with explicit hardware/software context, versioned rule constraints, Model Context Protocol (MCP) tool bridges, and machine-verifiable handover deliverables:

Screenshot 2026-09-22 184434.png

The Core Mindset: Refine the Intent & Rules, Not Just the Code File

With the repository structure and governance artifacts established, we can examine the core operational mindset of agentic firmware development: refining rules and intent instead of manually patching code.

When engineers first work with coding agents, their natural instinct is to review the output, spot a mistake in a C source file, edit the lines manually, and commit.

While this fixes the immediate bug, it leaves the agent's underlying reasoning unchanged. The next time the agent scaffolds a driver or configures a peripheral interrupt, it will make the exact same class of mistake.

03-review-ratchet.png

The agentic alternative is to treat every correction as institutional knowledge. Instead of editing the output file, the engineer updates AGENT_RULES.md.

Rule Inheritance and Governance

Rules should not exist as isolated, ad-hoc text files. They follow structured engineering principles:

  • Versioned & Owned: Stored alongside source code in git, reviewed in pull requests, and owned by lead system architects.
  • Composable Hierarchy: Projects inherit base rules from an organizational library and extend them with hardware-specific constraints:
04-rule-inheritance.png
  • Machine-Checkable: Rules are enforced by static analysis and agent prompt constraints, ensuring consistency across hundreds of source files.

Closing the Hardware Feedback Loop

In web development, an agent receives feedback as text: compiler stdout or stack traces. In embedded development, the agent must interpret the physical world.

To achieve this safely, agents interact with physical bench hardware through a Hardware Tool Bridge powered by MCP (Model Context Protocol) servers — a mediated abstraction layer that translates agent actions into debugger commands, log captures, and instrument reads.

05-mcp-hardware-bridge.png

Bench Feedback in Action

Consider an agent configuring a DMA UART driver that triggers a MCU fault. The Hardware Tool Bridge captures the register dump via MCP:

Screenshot 2026-09-22 184548.png

The agent reads HARDWARE_CONTEXT.md, correlates address 0x40020014 to the DMA1 peripheral block, notes that the peripheral clock gating register was never asserted, and corrects the initialization sequence. It then appends a new constraint to AGENT_RULES.md requiring clock enablement verification before peripheral register access.


Structural Safety and Governance

Autonomy in embedded systems must be bounded by structural safety controls. In cloud microservices, a faulty deployment triggers an automated container rollback. In firmware, code runs on physical hardware with live power stages, high-voltage buses, and mechanical actuators — you cannot iterate freely on a running machine.

The Agentic FDLC enforces safety through three core mechanisms:

  1. Scope Rules: Define strictly what the agent may modify, what it must never touch (e.g. clock trees, vector tables, ISR contexts), and what requires mandatory human sign-off.
  2. Harness-Level File Protection: Sensitive files (bootloaders, hardware context, security keys) are physically locked using AI harness rules (.claudeignore, read-only paths) so the agent cannot alter core infrastructure regardless of prompt instructions.
  3. Hardware Truth Over Model Speculation: The LLM never has the final word on physical behavior. The physical bench — oscilloscopes, logic analyzers, and named human reviewers — provides the definitive audit before release.

Navigating Brownfield Complexity in Practice

While the Agentic FDLC principles apply universally to all firmware engineering, the real-world reality is that most embedded projects are not greenfield builds. Industry surveys show that 56% of embedded projects upgrade or maintain an existing design, and 20% to 40% of project time is spent on debugging and reverse-engineering existing behavior rather than writing new code.

In brownfield development, the primary AI bottleneck is comprehension and preservation: recovering what a system already does from undocumented register maps and ensuring a change doesn't break a historical workaround put there for a reason lost to time.

When applying the Agentic FDLC to legacy codebases, teams should incorporate these additional care-abouts:

  1. Document Intent Before Refactoring (SOFTWARE_CONTEXT.md): Before granting an agent access to modify legacy C modules, explicitly capture task priority ceilings, IPC contracts, and deliberate NOP delays in SOFTWARE_CONTEXT.md. This prevents the agent from misinterpreting intentional errata workarounds as "legacy technical debt" to be refactored away.
  2. Restrict Scope via Harness Protection: Freeze legacy core files (e.g., bootloaders, clock initialization trees, vector tables) using read-only paths and harness configuration (.claudeignore). This guarantees the agent only touches the specific feature or driver module under active development.
  3. Codify Discovered Quirks into Institutional Memory (AGENT_RULES.md): Whenever a brownfield bug or undocumented hardware behavior is uncovered during bench verification (Stage 4), codify the root cause directly into AGENT_RULES.md. This ensures that historical knowledge is permanently captured and no future agent iteration or developer repeats the mistake.

Getting Started with Agentic FDLC

Adopting the Agentic FDLC does not require rebuilding your infrastructure overnight. Teams can transition incrementally:

  1. Start on the Host: Implement Tier 1 host-side unit testing with HAL mocks. Establish fast, zero-risk feedback loops.
  2. Create AGENT_RULES.md: Capture existing team conventions, register access rules, and coding standards in a version-controlled rules file.
  3. Bridge to Hardware: Introduce automated flashing and serial trace collection via MCP tool servers to close the physical feedback loop.

By shifting from conversational code generation to governed agentic workflows, embedded engineering teams can tackle brownfield complexity, eliminate repetitive scaffolding, and build safer, more reliable firmware at scale.


Authors:
Nirmal Prasad K
Nishanth Rangasamy

Have a similiar challenge?

Tell us what you're working on. We'll tell you how we can help.

Talk to a Soliton Engineer