Embedded
Documentation

Version Latest

Reference and troubleshooting

Embedded module settings, keys, supported file formats and vendor paths with their verification state, the verification kits, and fixes for common problems.

Keys

KeyAction
Cmd+Shift+B (Ctrl+Shift+B)Build the selected configuration
Cmd+Alt+U (Ctrl+Alt+U)Flash
F5Flash and Debug

With neuralInverse.embedded.keymap set to keil, iar or eclipse, the vendor IDE's keys run the same commands (for example F7 builds in the IAR keymap). See Vendor keymaps and debug layouts.

Settings

All settings are under neuralInverse.embedded.. Settings that name a program or arguments to run are restricted: a workspace that is not trusted cannot set them.

Project and build

SettingDefaultMeaning
cmake.sourceDirectoryempty (detect)Folder with CMakePresets.json
elfFileempty (newest .elf)Image to measure, flash and debug, relative to the preset's build folder
linkerScriptempty (the -T script)Linker script whose MEMORY regions the size report uses
paths.<tool>emptyPath to a tool or its folder; see tool ids
toolVersions{}Pinned tool versions, by tool id
clangd.arguments[]Extra clangd arguments, after the Editor's
keymapnonenone, keil, iar, eclipse
debugLayoutideide, keil, iar, eclipse

Device, packs and pins

SettingDefaultMeaning
deviceemptyVendor::Device from an installed pack
packs.rootemptyCMSIS pack root
packs.indexUrlhttps://www.keil.com/pack/index.pidxPack index, or a company mirror
svdFileemptySVD file for registers
svdOverlays[]SVD or IAR .ddf files added to the device
ortiFileemptyORTI file of an OSEK or AUTOSAR OS
pins.filepins.jsonPin configuration
pins.headerpins.hHeader Generate Pin Header writes
pins.dataPathemptyLocal ST pin data or STM32CubeMX db folder
pins.repositoryST's public STM32_open_pin_data repositoryGit repository Download STM32 Pin Data clones; set it to a company mirror

Probes

SettingDefaultMeaning
probeServerautoauto, jlink, stlink, trace32, openocd, linkserver, pemicro
jlink.device, jlink.interface, jlink.speed, jlink.serialempty, SWD, 4000, emptyJ-Link
stlink.serial, stlink.frequency, stlink.connectUnderResetempty, 0, falseST-LINK
trace32.cpu, trace32.connection, trace32.node, trace32.debugPort, trace32.script, trace32.flashScript, trace32.gdbServerSetup, trace32.portempty, USB, empty, empty, empty, empty, script, 30000TRACE32
openocd.board, openocd.interface, openocd.target, openocd.adapterSerial, openocd.adapterSpeed, openocd.argumentsboard/stm32f4discovery.cfg, empty, empty, empty, 0, []OpenOCD
linkserver.device, linkserver.core, linkserver.probe, linkserver.overridesNXP LinkServer
pemicro.device, pemicro.interface, pemicro.port, pemicro.speedPEmicro
stm32Programmer.externalLoaderemptyExternal loader listed first
stm32Bootloader.baudRate115200STM32 system bootloader over UART
jflash.productionRecordCSV production record of J-Flash runs

Debug

SettingDefaultMeaning
debug.gdbPort3333OpenOCD's GDB port
debug.rtosautoOpenOCD RTOS awareness
debug.semihostingfalseSemihosting output in the Debug Console
debug.rtt, debug.rttChannelfalse, 0SEGGER RTT output
debug.swo, debug.swoCpuClock, debug.swoFrequency, debug.swoPortfalse, 0, 2000000, 0ITM over SWO
debug.liveWatchInterval500Live Watch interval in ms
debug.livePlotInterval50Live Plot interval in ms
debug.profileSampleRate10000PC samples a second for the Firmware Profile
debug.profileExceptionstrueCount exception entries in the profile
debug.cycleStopwatchfalseStart the cycle stopwatch at the first halt
fault.recordSymbolg_fault_recordThe firmware's fault record symbol

Serial monitor

serial.baudRate (115200), serial.dataBits (8), serial.parity (none), serial.stopBits (1), serial.flowControl (none), serial.lineEnding (crlf), serial.localEcho (false), serial.timestamps (true), serial.logToFile (true), serial.logDirectory (empty).

Analysis and standards

analysis.misra (true), analysis.misraRuleTexts, analysis.checks, analysis.suppressionsFile, analysis.exclude, analysis.onSave (false), standards.requiredHeader, standards.noDynamicAllocationDirectories, standards.exclude. See Static analysis and MISRA C.

Vendor paths and their state

Vendor pathState
IAR .ewp in-place build (iarbuild)Code written; not yet run against IAR
IAR language support through clangdThe __packed translation run directly with Apple clang and clangd 15.0.0 on macOS (below the Editor's minimum of clangd 17); not yet run against iccarm
IAR C-SPY tests and C-RUN (cspybat)Not yet run against cspybat
Keil .uvprojx in-place build (UV4)Code written; not yet run against Keil
STM32CubeIDE .cproject in-place build and editNot yet run against STM32CubeIDE
Keil and IAR debug settings, .ini and .mac set-up scriptsNot yet run against uVision or IAR Embedded Workbench; scripts run in QEMU sessions on Linux
SEGGER Ozone project importNot tested against Ozone
Arm Compiler 6 through CMakeDetected in unit tests; not translated for clangd as IAR is
SEGGER J-Link: flash, debug, RTT, live reads, J-FlashNot yet run against J-Link or J-Flash
ST-LINK GDB server, STM32CubeProgrammer: flash, debug, option bytes, external flash, bootloaderNot yet run against them
Lauterbach TRACE32: debug, flash, complex breakpoints, BMCNot yet run against TRACE32
NXP LinkServer, PEmicroNot run with them or a real probe
OpenOCDUnit-tested; no verified run
QEMURun in Emulator verified against QEMU 9.1.1

File formats

FormatWhat the module does with itState
.ewp, .eww (IAR)Build in place, import into CMake, edit in placeEdits byte-identical on public demo projects (Linux); builds not run against IAR
.uvprojx (Keil)Build in place, import into CMake, edit in placeEdits byte-identical on public demo projects (Linux); builds not run against Keil
.uvoptx, .uvopt, IAR settings/, .ewdImport breakpoints and debugger settingsParsers on real public files
.ini (uVision), .mac (C-SPY)Run as GDB set-up scriptsRun in QEMU sessions on Linux
.cproject (STM32CubeIDE)Build in place, import, editEdits byte-identical on ST examples (Linux)
.ewt (IAR)C-RUN options read and changedIAR's C-RUN evaluation projects (Linux)
settings/*.xcl (IAR)cspybat command linesEmbedded Workbench 7.4 to 8.3 files
.custom_argvars (IAR)Passed to iarbuild with -varfileUnit tests
.stldr (STM32CubeProgrammer external loader)External flash, memory range readFiles laid out by arm-none-eabi-gcc 13.2.1
.FLM (CMSIS pack flash algorithm)Flash sector layout for sector eraseThe real STM32F4xx_1024.FLM
.ioc (STM32CubeMX)Pinout editor, pin importUnit tests
CMakePresets.json, CMakeUserPresets.jsonPresets in the status barUnit tests
.svd (CMSIS-SVD)Registers editor, hover, Peripherals scopeFixtures; ST's STM32F407 SVD shown in the running app
.ddf (IAR)Registers added to the deviceNot verified against IAR
.pdsc and the pack indexDevice pickerUnit tests
.elf, .axf, .out, .hex, .binFlash, size, compare with releaseFlash not run on a board
GNU ld linker script (.ld)Memory regions of the size reportFixtures
GNU ld .mapNot read
.su (GCC stack usage)Problems, Firmware Memory editorFixtures
compile_commands.jsonclangd, Cppcheck
CTest JSON, JUnit XMLTesting viewFixtures
.jdebug, .jdebug.user (Ozone)Debug configuration importThree public projects; not against Ozone
.jflashProduction runs8 public projects; not against J-Flash
.orti, .ortRTOS viewTrampoline in QEMU (Linux)
.cmm (TRACE32 PRACTICE)Colouring, outline, navigationPublic scripts (Linux)
RTX_Config.h, FreeRTOSConfig.h, .dbgconf with wizard annotationsConfiguration WizardArm and ST annotated files (Linux)

Verification kits

A kit runs exactly the commands the Editor runs, on a reference project, on your own installation, and collects the results into one archive. It needs no administrator rights, no Python or other runtime and no network: Windows PowerShell 5.1 on Windows, bash on Linux.

KitProvesHardware
stm32cubeprogrammerTest Connection, Read Option Bytes, Flash, Erase Flash Sectors; optionally external flash and the STM32 bootloader (option bytes are never written)ST-LINK, STM32F407VG board
jlinkTest Connection, Flash, a debug session with a log point and a memory write, RTT output and input, Erase Flash Sectors; optionally a J-Flash production projectJ-Link, STM32F407VG board
stlink-gdbserverFlash and a debug session through ST's GDB serverST-LINK, STM32F407VG board
iar-clangdLanguage support for code built with iccarmNone
iar-keil-buildIn-place IAR and Keil builds, round-trip edits, C-SPY tests, C-RUNSee the kit
trace32Debugging, flashing, complex breakpoints and BMC through TRACE32See the kit
vendor-licencesLicence status and real licence failure output of Arm Compiler 6, Keil MDK and IARNone
stm32cubeide-buildSTM32CubeIDE headless builds, before and after the Editor edited the .cprojectNone
nxp-probesFlash and debug through LinkServer and PEmicroAn NXP board; a PEmicro probe
heap-stack-symbolsHeap and stack symbols on IAR ILINK, armlink and MCUXpresso imagesNone
ortiORTI expressions through your GDB serverThe board running the OS image

To run one:

powershell -NoProfile -ExecutionPolicy Bypass -File .\run-kit.ps1
./run-kit.sh

The script ends with the path of ni-verify-<kit>-<date>-<time>.zip (Windows) or .tar.gz (Linux), holding the operating system and tool versions, every command line as run, each tool's full output, and results.tsv with PASS, FAIL or SKIPPED per check. It contains probe serial numbers, device identification and paths from your machine, and nothing of your own source code. The TRACE32 kit's scripts are run-trace32-kit.ps1 and run-trace32-kit.sh. Send the archive to your Neural Inverse contact whether the checks passed or failed. The PowerShell scripts have not yet been run on Windows by Neural Inverse; the first report from each kit is also the first run of its script. No report has been received yet.

Troubleshooting

ProblemWhat to do
Nothing embedded appearsTrust the workspace. Check that it holds a firmware project the module recognises; a CMake project must set up an Arm bare-metal compiler.
The status bar shows ToolchainA tool the project needs is missing or older than the minimum. Run Show Toolchain for install hints, or set neuralInverse.embedded.paths.<tool>.
A pinned tool is reported missingThe version in neuralInverse.embedded.toolVersions is not installed. The module never falls back to another version.
A tool installed in a custom folder is not foundThe Windows registry is not read. Set its path setting.
clangd does not startInstall clangd 17 or later yourself; the module does not ship it.
IAR keywords show errors in clangdBuild once (or configure) so the compile commands are translated. __packed with a line break before struct is not handled.
A build stops at the licenceRead the notification: it names the feature, the server or settings folder, and the variable that named it. Run the vendor-licences kit and send it if the message looks wrong.
Live Watch values do not update while runningOnly OpenOCD and the J-Link GDB Server read while the core runs; the ST-LINK GDB server and TRACE32 read only while halted.
SWO output is garbleddebug.swoCpuClock must be the real core clock, and debug.swoFrequency must divide it exactly.
RTT output does not appearThe firmware must link SEGGER's RTT sources and initialise them; the session finds _SEGGER_RTT and starts streaming after that.
Option bytes say "not supported for this device"Only STM32CubeProgrammer, and OpenOCD for STM32F2, F4 and F7, are supported.
The emulator asks to accept a generic boardQEMU does not emulate your device (for example the STM32F407). Accept only if the peripherals your test uses do not matter, or name a machine in launch.json.
A download fails behind the proxyThe message names the host. Set http.proxy, or use the offline settings for packs and pin data.

To report a problem, say what you did, what you expected, what happened, the tool versions, and attach a screenshot or the log, or a kit archive.

Last reviewed 18 October 2026View as Markdown

Reference and troubleshooting · Docs · Neural Inverse