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.
Primary sources
- README.md GitHub · Accenture/FirmLoader · Revision 5c9c1a1
- firmloader.py GitHub · Accenture/FirmLoader · Revision 5c9c1a1
- data_template.json GitHub · Accenture/FirmLoader · Revision 5c9c1a1
- firmloader_data GitHub · Accenture/FirmLoader · Revision 5c9c1a1
- LICENSE GitHub · Accenture/FirmLoader · Revision 5c9c1a1
- https://github.com/Accenture/FirmLoader/pull/5
- https://github.com/Accenture/FirmLoader/releases/tag/1.0
More in Firmware and hardware
- IFDA (IoT Firmware Deep Analysis) · Tool
- basefind2 · Tool
- JTAGulator · Tool
- BIOSUtilities · Tool
- allyourbase · Tool
- ghidra_kernelcache · Tool