Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>FW Mem GuardNew to Visual Studio Code? Get it now.
FW Mem Guard

FW Mem Guard

Preview

FW Mem Guard

|
3 installs
| (0) | Free
Catch firmware Flash/RAM growth between builds. Check your budgets locally in VS Code, with no telemetry or automatic upload.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

FW Mem Guard

Your build grew. Know by how much.

VS Code extension: Windows x64 and macOS 15+ (Apple Silicon / Intel). Linux x64: separate CLI / CI package targeting glibc 2.28+ (Rocky Linux 8 and Ubuntu 24.04); Node.js 22 or 24. There is no Linux VSIX. See docs/CLI_CI.md for runtime dependencies and validation status.

Compare firmware Flash and RAM between builds, right inside VS Code. Check maximum usage and allowed growth against the budgets you choose, with a bundled local engine.

Local processing · No telemetry · No FW Mem Guard account · No automatic upload

Install the pre-release

FW Mem Guard illustrated comparison with actual bundled demo results

Watch the 29-second illustrated demo · English guide · Support

Captioned preview of the bundled FW Mem Guard demo

The visuals illustrate actual bundled demo results; they are not a recording of the VS Code interface.

Catch growth before it becomes a surprise

A build can fit in memory and still exceed your growth budget. The bundled demo shows exactly that:

Memory Baseline Current Growth Allowed growth Result
Flash 720,896 B 772,096 B +51,200 B 16,384 B EXCEEDED
RAM 176,640 B 203,776 B +27,136 B 4,096 B EXCEEDED

Both total-usage checks pass in this example. Both growth checks fail intentionally, so BUDGET_EXCEEDED / exit 2 is the expected demo result, not an installation error. These are actual results from the bundled engine and example profile.

Try it in a minute

  1. Install fwmemguard.fw-mem-guard from Marketplace and select the pre-release. Windows x64 and Mac Apple Silicon/Intel are supported; these Mac packages require macOS 15+. No separate Python or engine installation is needed.
  2. Open a folder you control and trust, then open the Command Palette: Ctrl+Shift+P (Mac: Cmd+Shift+P).
  3. Run FW Mem Guard: Run Demo. Review the results panel, section growth and effective budget checks.
  4. Run FW Mem Guard: Export Report for Sharing. Review the new, unsaved JSON tab before using Save As if you choose. Nothing is uploaded automatically.

The demo uses bundled Map files and a manual profile. It does not validate your own project. This guide covers FW Mem Guard 0.3.7 pre-release for Windows x64 and macOS Apple Silicon / Intel. The bundled engine has a separate component version, 0.2.1-pilot.1.

Bring your own completed builds

Run FW Mem Guard: Set Up / Update Project. Select baseline Map + matching ELF, then current Map + matching ELF. Keep the baseline fixed and distinct from the current files.

The picker shows each region's address range, capacity and coverage of required run and load addresses in both builds. A unique compatible region is suggested; you confirm the Flash and RAM choices explicitly. An unavailable choice explains what does not fit.

Set the four aggregate limits: maximum total usage and allowed growth, for Flash and for RAM. Multi-bank projects also require total and growth limits for every selected bank. A growth limit of 0 forbids positive growth. Review and save a project such as board.fwmg.json.

After the next completed build, use Compare Builds or Repeat Last Comparison. Use Edit Budgets to update limits in the same project. Use Set Up / Update Project to change paths or intentionally replace the baseline.

A report you can review before sharing

Export Report for Sharing opens a reduced JSON snapshot in an unsaved editor tab. No report file is created automatically. Review it, then save a .fwmg-report.json only if you choose to share it.

The export includes totals, effective limits, outcome, versions, context and capture time. Paths, filenames, symbols, section names, addresses and input hashes are excluded. Usage and budgets can still be sensitive. Your chosen service and recipient receive what you share; follow your organization's policy.

Demo reports are labeled examples. Analyze exports say budgets were not checked. A new project/profile operation clears the exportable result, including failure or cancellation. After a reload, run a fresh operation. Opened and saved reports remain static snapshots.

Know what the result means

Outcome Meaning
PASS / 0 All configured comparison budgets passed.
BUDGET_EXCEEDED / 2 At least one total-usage or growth limit failed.
ERROR No valid result for this operation; review diagnostics.
ANALYZED Current totals only; budgets were not checked.

With an active project, Analyze Map identifies the current Map in Output after validating both Map/ELF pairs. Use Compare Builds for a budget verdict.

Check the fit

Supported Scope
Hosts Windows x64; Mac Apple Silicon/Intel, macOS 15+; VS Code 1.85+.
Guided inputs Complete GNU ld MAP + matching ARM ELF32 little-endian linked executable (ET_EXEC); one or more explicitly selected non-overlapping banks per memory class; unchanged layout between builds. Each section must fit one selected bank.
WSL Guided WSL inputs on a Windows host; full selected Map/ELF files transfer through VS Code to Windows.
Accounting Allocated output-section bytes. Initialized RAM also contributes its Flash load image.

Firmware OS, compiler name and board family alone do not establish compatibility. Overlays, overlapping allocated sections, dynamic linking, TLS, relocatable ELF objects, compressed/unsupported allocated sections and missing ELF tables are excluded. Named aliases alone do not establish multiple active banks.

A separate Linux x64 CLI supports CI (glibc 2.28+; Rocky Linux 8 and Ubuntu 24.04; Node.js 22 or 24) using the same project validation. This is not a Linux VS Code extension. Multiple banks use project schema 2 with aggregate and per-bank budgets. Full reports include conservative GNU object/archive contributions and explicit unattributed bytes. Remote-SSH, Dev Containers, Codespaces/browser execution, IAR/Keil, symbol attribution and runtime peak heap/stack measurement remain unsupported. The packaged docs/CLI_CI.md explains dependencies, setup and CI use.

Limits: 64 MiB per ELF, 32 MiB per Map, 1 MiB per project JSON. Full ELF files are read. Structural agreement does not prove shared build provenance or an atomic snapshot: choose matching files from completed builds.

WSL and recovery

Install Microsoft's WSL extension and open a WSL-connected VS Code window. Use the remote picker and save the project beside its inputs in the same WSL filesystem. FW Mem Guard runs on the Windows UI host; no Linux engine or Python installation is needed in WSL.

Input reading has a default 30-second timeout and Cancel, excluding selection, engine execution and saving. A late response cannot produce a result or save a project. Retries wait for any previous read of the same URI to settle. Reconnect and retry; if the pending-read message persists, save your work, run Developer: Reload Window, reconnect and Open Project. Setting: fwMemGuard.inputReadTimeoutSeconds (1–300 seconds).

Commands

Command (FW Mem Guard:) Action
Run Demo Try the bundled intentional budget violation.
Set Up / Update Project Configure artifact paths, baseline, regions and limits.
Open Project Open and validate an existing .fwmg.json.
Edit Budgets Update aggregate and, for schema 2, per-bank limits in the existing project.
Compare Builds Compare the active project, or choose setup/open/manual.
Repeat Last Comparison Read the saved comparison's current files again.
Analyze Map Show totals without checking budgets.
Export Report for Sharing Open reduced JSON for review and optional manual saving.
Open User Guide Open offline English or Support.
Open Output Show results and diagnostics.
Manual Profile Comparison Advanced local-only comparison using a reviewed engine profile.
Select Config Select an engine profile; .fwmg.json belongs in Open Project.

Help and privacy

Run FW Mem Guard: Open User Guide and choose English or Support. All open locally inside VS Code, even offline. Customer ZIPs include standalone HTML guides too.

Support: fwmemguard.support@gmail.com

Copy the address into your email service. Review diagnostic text before sending it; firmware/source files are not requested automatically. If execution is blocked, give the diagnostic to IT and follow your organization's security policy.

If fw-mem-guard-pilot.fw-mem-guard is installed, disable it to avoid duplicate commands. Reopen existing projects using Open Project.

Results screen

Successful operations open a results panel with baseline/current/delta in bytes and KiB, aggregate/per-bank checks, conservative object/archive contributions, residual bytes, and section changes sorted from growth to shrinkage. Guided results show linker capacity separately from budget; manual-profile/demo capacity is marked unavailable. Analyze has no budget verdict. Compare again, Edit budgets (guided projects), Export report and Open output use existing commands.

A new operation clears the previous result immediately. Failure, cancellation or a settings-only operation cannot retain an old PASS or export. The export remains the reviewed reduced JSON format, excluding paths and section names. Version 0.3.6 added attribution percentages and a versioned CLI JSON contract. Version 0.3.7 also updates the engine parser to recognize GNU output sections without a leading dot. The original Zephyr 3.7.0 qemu_cortex_m3 example verifies Flash 8778 -> 8778 and RAM 4312 -> 4568, including the controlled +256-byte object contribution. Other Zephyr configurations and nRF Connect SDK need separate acceptance.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft