Star on GitHubStar1.1k stars

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.
  • 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.

About this entry

The description was reviewed against primary sources.

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 89 entries in Firmware and hardware

↑↓ move↵ open⌘↵ new tab