Neural Inverse is Open Source →
DocsGetting Started

Getting Started with Firmware Development

Project Detection

Neural Inverse auto-detects firmware projects by scanning for build system configuration files:

FileBuild SystemConfidence
platformio.iniPlatformIOHigh
*.iocSTM32CubeMXHigh
sdkconfigESP-IDFHigh
prj.conf / west.ymlZephyrHigh
CMakeLists.txt (with embedded targets)CMakeMedium
Makefile (with cross-compiler)MakeMedium
Cargo.toml + embedded-halRust embeddedHigh
mbed_app.jsonMbed OSHigh
Arduino includesArduino CLIMedium

When detected, the IDE extracts:

  • MCU variant
  • Build system type
  • RTOS (if any)
  • HAL/framework
  • Board name

Creating a Firmware.inverse Manifest

For explicit configuration or when auto-detection isn't sufficient, create a Firmware.inverse file in your workspace root:

{
  "neuralInverseFirmware": true,
  "version": "1",
  "mcu": "STM32F407VGT6",
  "board": "STM32F4DISCOVERY",
  "rtos": "FreeRTOS",
  "buildSystem": "cmake",
  "hal": "stm32-hal",
  "compliance": ["misra-c-2012"],
  "datasheets": ["docs/stm32f407_rm.pdf"],
  "svd": "docs/STM32F407.svd"
}

Or use the agent tool:

> fw_init

This scans your project and generates the manifest automatically.

Opening the Firmware Console

Press Cmd+Alt+F (macOS) or Ctrl+Alt+F (Linux/Windows) to open the Firmware Environment window.

The console provides 13 tabs:

  1. Dashboard — Session overview, MCU info
  2. Pinout — Pin assignments and conflicts
  3. Architecture — Peripheral schematic
  4. HW Tools — Instrument status
  5. Instruments — Logic Analyzer, Power Analyzer, Oscilloscope
  6. Datasheets — PDF uploads and extraction status
  7. Registers — Register map viewer with bit field layout
  8. Serial — Serial monitor, RTT, ITM
  9. Compliance — Framework violation status
  10. Build — Build output and errors
  11. RTOS — Thread inspection, heap analysis
  12. HIL — Hardware-in-the-loop test runner
  13. Closed-Loop — Autonomous optimization

MCU Selection

Search the built-in database of 361 MCUs:

> fw_search_mcu STM32F4

Or select from the Firmware console's idle screen. The MCU selection loads:

  • SVD register maps (peripheral definitions, bit fields, access types)
  • Memory layout (flash, RAM, CCM, ITCM, DTCM regions)
  • Clock tree constraints
  • Known silicon errata
  • GPIO alternate function database
  • Peripheral list

First Build

Once your project is configured:

> fw_build

This runs your build system's compile command (e.g., pio run, cmake --build, cargo build --target ...).

After building:

> fw_binary_size

Shows section breakdown (.text, .data, .bss) with Flash% and RAM% usage.

Flashing

Detect available flash tools:

> fw_detect_flash_tools

Then flash:

> fw_flash

Status Bar

The status bar shows:

  • MCU family and variant
  • Active compliance framework
  • Datasheet count
  • Peripheral count

Click to focus the Firmware Environment window.

Commands

CommandKeybindingDescription
neuralInverse.openFirmwareCmd+Alt+FOpen/focus Firmware console
neuralInverse.focusFirmwareFocus or open Firmware console
neuralInverse.endFirmwareSessionEnd session, clear state
neuralInverse.scanFirmwareProjectRe-scan workspace for firmware indicators
neuralInverse.createFirmwareInverseGenerate Firmware.inverse manifest

Was this page helpful?

Last edited