{
  "added_at": "2026-11-03",
  "additional_evidence_urls": [
    "https://github.com/Accenture/FirmLoader/blob/5c9c1a149b2b638d1e2b65d39723b6a45379fdb1/firmloader.py",
    "https://github.com/Accenture/FirmLoader/blob/5c9c1a149b2b638d1e2b65d39723b6a45379fdb1/data_template.json",
    "https://github.com/Accenture/FirmLoader/tree/5c9c1a149b2b638d1e2b65d39723b6a45379fdb1/firmloader_data",
    "https://github.com/Accenture/FirmLoader/blob/5c9c1a149b2b638d1e2b65d39723b6a45379fdb1/LICENSE",
    "https://github.com/Accenture/FirmLoader/pull/5",
    "https://github.com/Accenture/FirmLoader/releases/tag/1.0"
  ],
  "category": "firmware",
  "description_en": "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.",
  "description_zh": "为原始微控制器固件镜像套用芯片内存布局的 IDA 插件：分析者选定 MCU 型号后，它会创建 RAM 等内存段，添加带有寄存器命名的外设段，并在描述文件包含中断向量表时标注各表项，把它们指向的处理程序创建为函数。README 称其类似 IDA 内置的 SVD 加载器，但采用更简单的 JSON 描述格式，可依据公开的数据手册手工编写。所审阅提交附带 813 个描述文件，涵盖 Microchip/Atmel、ST、NXP、TI、Silicon Labs 等厂商的 MCU。",
  "entry_url": "https://awesomerea.org/resources/firmloader/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/firmloader/",
  "evidence_url": "https://github.com/Accenture/FirmLoader/blob/5c9c1a149b2b638d1e2b65d39723b6a45379fdb1/README.md",
  "group": "tools",
  "id": "firmloader",
  "json_url": "https://awesomerea.org/resources/firmloader/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/firmloader/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/firmloader/index.md",
  "name": "FirmLoader",
  "name_zh": "FirmLoader 微控制器固件内存布局 IDA 插件",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "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."
  ],
  "requirements_zh": [
    "唯一的发布版本是标签 1.0，标题为“IDA 8.X”，发布于 2024-12-05，指向 2024 年 2 月的一次提交。所审阅的 main 分支提交 5c9c1a1 是 2024-12-05 的最后一次改动，比该标签多四个提交：一个外部贡献的拉取请求加入了 IDA 9.0 支持，另一个为 STM32L4x1 增加了 SRAM2 内存段。",
    "安装方法是把 firmloader.py 和 firmloader_data 文件夹复制到 IDA 的 plugins 目录；需要带 IDAPython 的 IDA，插件代码使用 Python 3.8+ 语法。分析者需按处理器文档给出的基址加载镜像，把主代码段重命名为 ROM，再在 Edit > FirmLoader 菜单中选择型号；应用后插件会将 ROM 段交给 IDA 自动分析。",
    "输入是分析者已从微控制器中读出的固件镜像；仓库不含任何固件，只有插件本身、MCU 描述 JSON 文件、data_template.json 和两张 README 配图。813 个描述文件中有 812 个为 32 位；16 位的 ATmega328 描述文件未列出外设，另有四个 SPC5 和 AURIX TC27x 芯片的描述文件没有中断向量表；README 说明，若同一系列有多种内存容量，所有型号都按最大 RAM 生成。其他 MCU 需要手工编写描述文件。",
    "采用 Apache-2.0 许可。README 指出 SPC560B64x 是完全手工编写的描述文件，其余文件则只称作 SVD 数据的补充，未说明其生成方式。"
  ],
  "targets": [
    "firmware"
  ],
  "url": "https://github.com/Accenture/FirmLoader",
  "verification": "source-reviewed",
  "verified_at": "2026-10-27"
}
