Tool

FirmLoader

IDA plugin that applies a microcontroller's memory map to a raw firmware image: once the analyst picks an MCU model, it creates RAM and other memory segments, adds peripheral segments with named registers and, where a vector table is described, labels its entries and turns the handlers they point to into functions. The README compares it to IDA's built-in SVD loader, but it uses a simpler JSON description that can be written by hand from public datasheets. The reviewed commit bundles 813 descriptions for Microchip/Atmel, ST, NXP, TI, Silicon Labs and other MCUs.

Targets
Firmware
Category
Firmware tools
Relationship
Foundation tool
Sources reviewed

Requirements & limits

  • The only release is tag 1.0, titled “IDA 8.X” and published 2024-12-05; it points to a February 2024 commit. The reviewed main commit 5c9c1a1, the last change on 2024-12-05, is four commits ahead: a contributed pull request adds IDA 9.0 support and another adds an STM32L4x1 SRAM2 segment. Older IDA releases were not checked.
  • Installed by copying firmloader.py and the firmloader_data folder into IDA's plugins directory; it needs IDA with IDAPython, and the plugin code uses Python 3.8+ syntax. The analyst loads the image at the base address the processor documentation gives, renames the main code segment to ROM and chooses the model under Edit > FirmLoader; applying it marks the ROM segment for IDA auto-analysis.
  • Input is a firmware image the analyst has already read out of a microcontroller; the repository contains no firmware, only the plugin, MCU description JSON files, a data_template.json and two README images. Of the 813 descriptions, 812 are 32-bit; the 16-bit ATmega328 one lists no peripherals, and four for SPC5 and AURIX TC27x parts have no vector table; README says that where a series has several memory sizes, every unit was generated with the largest RAM. Other MCUs need a hand-written description.
  • Apache-2.0. README names SPC560B64x as a purely hand-written description and otherwise presents the files as a supplement to SVD data without documenting how they were generated; their registers and vectors were not checked against vendor documentation, and no firmware was loaded.

About this entry

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.md GitHub · Accenture/FirmLoader · Revision 5c9c1a1
  2. firmloader.py GitHub · Accenture/FirmLoader · Revision 5c9c1a1
  3. data_template.json GitHub · Accenture/FirmLoader · Revision 5c9c1a1
  4. firmloader_data GitHub · Accenture/FirmLoader · Revision 5c9c1a1
  5. LICENSE GitHub · Accenture/FirmLoader · Revision 5c9c1a1
  6. https://github.com/Accenture/FirmLoader/pull/5
  7. https://github.com/Accenture/FirmLoader/releases/tag/1.0

More in Firmware and hardware

All 65 entries in Firmware and hardware