Define behavioral equivalence first
A migration is complete when the target meets an explicit behavioral contract, not when it merely compiles. Record:- the source and target MCU, package, board, and board revision;
- the SDK, HAL, RTOS, compiler, linker, and build configuration on each side;
- the public firmware interfaces that must remain compatible;
- required peripherals, pins, clocks, DMA channels, interrupts, and power states;
- timing, throughput, memory, and power budgets;
- boot, flash, debug, and log paths;
- host tests and on-target observations that prove equivalence.
Prepare both sides
1
Select the source project
Associate the workspace with the Embedder project that represents the source firmware. Run
/init if EMBEDDER.md does not already contain the verified source build, test, flash, and debug workflows.2
Identify the exact target
Select or name the target platform and board revision. Add target documentation or schematics when the catalog and board skills do not provide enough evidence.
3
Inventory the source behavior
Locate the entry points, peripheral abstractions, board layer, clock tree, pin configuration, DMA and interrupt paths, linker layout, startup code, tests, and runtime logs involved in the migration.
4
Capture a source baseline
Run the smallest tests and hardware observations that define current behavior. Preserve command output, timing, waveforms, serial markers, memory use, or power measurements that the target must match.
Compare source and target constraints
Ask Embedder to research before it proposes changes:
For a custom board, use parsed schematic references to verify connector routing and populated peripherals:
Create a migration plan
Use Plan mode
Run:- source and target facts with unresolved assumptions;
- the selected pins and proof of board accessibility;
- build-system, startup, linker, and configuration changes;
- a module-by-module implementation order;
- tests at each stable boundary;
- runtime log or measurement points;
- flash, debug, and rollback requirements;
- final behavioral-equivalence checks.
Review the plan before execution
Verify these decisions in the plan:- The target part, package, board, and revision are exact.
- Every proposed pin is reachable and electrically compatible.
- Vendor-generated and hand-maintained code boundaries are explicit.
- The source baseline and target pass criteria use comparable workloads.
- Build and flash commands refer to the target, not the source.
- Destructive setup or generated-file replacement requires review.
- Each implementation step leaves the project in a buildable or testable state.
- A failure has a rollback or diagnosis path.
Implement module by module
Approve the plan to start the implementation turn in Act mode. Keep changes reviewable:1
Establish the target build
Configure the target toolchain, startup files, linker script, SDK or HAL, and board selection. Produce the smallest target image before moving application behavior.
2
Bring up observation
Establish a serial, RTT, simulator, or other log path early. A migration without observable runtime state is difficult to verify.
3
Move one platform service
Port one clock, GPIO, transport, storage, or timing module while preserving its application-facing contract where practical.
4
Run the local checks
Run the focused host tests, target build, and one bounded hardware observation for that module. Stop on the first useful failure.
5
Continue through dependent modules
Move consumers only after the lower-level service has evidence on the target.
.cproject and Libraries/iLLD/, Act mode can run the Windows-only, confirmation-gated aurix_setup workflow. It generates CMake and command wrappers from the selected ADS configuration. The generated files contain host-specific paths; regenerate them per workstation and do not commit them.
Verify the target against the baseline
Use the same observable contract on both platforms:- Run unchanged host tests where the platform boundary permits it.
- Build the intended target configuration and identify its artifact.
- Flash only the selected board and capture early runtime output.
- Exercise the same inputs and operating conditions used for the source baseline.
- Compare protocol traffic, timing, output values, memory use, and power where they are requirements.
- Record accepted differences and the hardware or documentation evidence that justifies them.
Respect platform-specific boundaries
- Board skills provide fixed pinout and tooling context; they do not guarantee every board assembly, silicon step, probe, or toolchain combination.
- Different platform families use different compilers, loaders, debuggers, and startup conventions.
- Embedder does not provide vendor SDKs, compilers, flashers, debuggers, virtual platforms, licenses, or confidential documents.
- There is no automatic platform-diff or code-porting engine. The result depends on the reviewed plan, available source material, project tests, and target evidence.
Agent modes
Compare Plan, Act, and Debug mode boundaries.
Schematics
Verify target pins, nets, power domains, and board revisions.
Common firmware workflows
Execute the approved plan, build, flash, observe, and debug.

