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

- Type: Tool
- Targets: Firmware
- Category: Firmware tools
- Relationship: Foundation tool
- Sources reviewed: 2026-10-27
- Added to the catalog: 2026-11-03
- Original resource: <https://github.com/Accenture/FirmLoader>
- Primary source: <https://github.com/Accenture/FirmLoader/blob/5c9c1a149b2b638d1e2b65d39723b6a45379fdb1/README.md>
- Catalog page: <https://awesomerea.org/resources/firmloader/>
- Record JSON: <https://awesomerea.org/resources/firmloader/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/firmloader/index.md)

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

## Primary sources

1. <https://github.com/Accenture/FirmLoader/blob/5c9c1a149b2b638d1e2b65d39723b6a45379fdb1/README.md>
2. <https://github.com/Accenture/FirmLoader/blob/5c9c1a149b2b638d1e2b65d39723b6a45379fdb1/firmloader.py>
3. <https://github.com/Accenture/FirmLoader/blob/5c9c1a149b2b638d1e2b65d39723b6a45379fdb1/data_template.json>
4. <https://github.com/Accenture/FirmLoader/tree/5c9c1a149b2b638d1e2b65d39723b6a45379fdb1/firmloader_data>
5. <https://github.com/Accenture/FirmLoader/blob/5c9c1a149b2b638d1e2b65d39723b6a45379fdb1/LICENSE>
6. <https://github.com/Accenture/FirmLoader/pull/5>
7. <https://github.com/Accenture/FirmLoader/releases/tag/1.0>

## More in Firmware and hardware

- [IFDA (IoT Firmware Deep Analysis)](https://awesomerea.org/resources/ifda-iot-firmware-deep-analysis/index.md) · Tool
- [basefind2](https://awesomerea.org/resources/basefind2/index.md) · Tool
- [JTAGulator](https://awesomerea.org/resources/jtagulator/index.md) · Tool
- [BIOSUtilities](https://awesomerea.org/resources/biosutilities/index.md) · Tool
- [allyourbase](https://awesomerea.org/resources/allyourbase/index.md) · Tool
- [ghidra_kernelcache](https://awesomerea.org/resources/ghidra-kernelcache/index.md) · Tool

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
