{
  "added_at": "2026-10-31",
  "additional_evidence_urls": [
    "https://github.com/leveldown-security/SVD-Loader-Ghidra/blob/4b21fa54a1f516e25e959939f6e1251263c74725/SVD-Loader.py",
    "https://github.com/leveldown-security/SVD-Loader-Ghidra/blob/4b21fa54a1f516e25e959939f6e1251263c74725/SVD-Loader.py#L84-L105",
    "https://github.com/leveldown-security/SVD-Loader-Ghidra/blob/4b21fa54a1f516e25e959939f6e1251263c74725/SVD-Loader.py#L131-L201",
    "https://github.com/leveldown-security/SVD-Loader-Ghidra/blob/4b21fa54a1f516e25e959939f6e1251263c74725/cmsis_svd/__init__.py",
    "https://github.com/leveldown-security/SVD-Loader-Ghidra/blob/4b21fa54a1f516e25e959939f6e1251263c74725/LICENSE"
  ],
  "category": "firmware",
  "description_en": "Ghidra script from leveldown security that reads a CMSIS-SVD file, the XML format describing a microcontroller's memory-mapped peripherals and their registers, and applies it to firmware already loaded in Ghidra. It creates memory blocks for the peripheral address ranges, a structure type for each peripheral with its registers as fields, and a label at each peripheral base address, so register accesses can be read by peripheral and register name. It targets little-endian Arm Cortex-M devices and bundles a fork of the cmsis-svd parser ported to Ghidra's Jython.",
  "description_zh": "leveldown security 发布的 Ghidra 脚本，读取 CMSIS-SVD 文件（描述微控制器内存映射外设及其寄存器的 XML 格式），并将其应用到已载入 Ghidra 的固件上。它为外设地址范围创建内存块，为每个外设生成以寄存器为字段的结构体类型，并在各外设基址处添加标签，从而可按外设和寄存器名称阅读寄存器访问。它面向小端 Arm Cortex-M 设备，并附带一份移植到 Ghidra Jython 环境的 cmsis-svd 解析器分支。",
  "entry_url": "https://awesomerea.org/resources/svd-loader-ghidra/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/svd-loader-ghidra/",
  "evidence_url": "https://github.com/leveldown-security/SVD-Loader-Ghidra/blob/4b21fa54a1f516e25e959939f6e1251263c74725/README.md",
  "group": "tools",
  "id": "svd-loader-ghidra",
  "json_url": "https://awesomerea.org/resources/svd-loader-ghidra/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/svd-loader-ghidra/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/svd-loader-ghidra/index.md",
  "name": "SVD-Loader for Ghidra",
  "name_zh": "SVD-Loader：Ghidra CMSIS-SVD 外设映射脚本",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "The repository has no releases or tags. The reviewed master head is a 2024-02-01 merge that expanded the installation instructions; the last code changes, merged on 2023-03-04, added error handling to the script and fixed derivedFrom handling for peripherals in the bundled parser. The README names no supported Ghidra release, a 2019 commit fixed compatibility with Ghidra 9.1, and the repository has no tests.",
    "It runs inside Ghidra's CodeBrowser: add the cloned repository as a script directory in the Script Manager, then run SVD-Loader.py on the open program. The script is written for Ghidra's Jython environment, and it imports the bundled cmsis_svd package (version 0.4) from the same directory.",
    "Supply the CMSIS-SVD file for the target chip, which the README suggests taking from the cmsis-svd collection or a Keil software pack, and the firmware image already imported into Ghidra. The script stops on an SVD that declares a big-endian CPU and warns but continues when the CPU is not a Cortex-M. Peripheral ranges that conflict with existing memory blocks are reported and skipped.",
    "Only peripherals and registers are applied: the generated memory blocks are uninitialized, volatile and read/write, and register bit fields, enumerated values and interrupts from the SVD are not added. Results depend on the supplied SVD file; when a block or structure cannot be created, the script prints the failure and moves on.",
    "SVD-Loader.py is GPL-3.0; the forked cmsis_svd/ code keeps upstream cmsis-svd's Apache-2.0 license. The blog post the README links for usage details returned HTTP 404 at review."
  ],
  "requirements_zh": [
    "仓库没有发布版本或标签。所审阅的 master 最新提交是 2024-02-01 的一次合并，扩充了安装说明；最近的代码改动于 2023-03-04 合并，为脚本加入了错误处理，并修复了内置解析器对外设 derivedFrom 的处理。README 未说明支持的 Ghidra 版本，2019 年的一次提交修复了与 Ghidra 9.1 的兼容性，仓库也没有测试。",
    "脚本在 Ghidra 的 CodeBrowser 中运行：在脚本管理器中把克隆下来的仓库添加为脚本目录，再对当前打开的程序运行 SVD-Loader.py。脚本面向 Ghidra 的 Jython 环境编写，并从同一目录导入内置的 cmsis_svd 包（版本 0.4）。",
    "需要提供目标芯片的 CMSIS-SVD 文件（README 建议从 cmsis-svd 合集或 Keil 软件包获取），并已把固件镜像导入 Ghidra。若 SVD 声明为大端 CPU，脚本会停止运行；若 CPU 不是 Cortex-M，脚本会提示警告但继续执行。与已有内存块冲突的外设地址范围会被报告并跳过。",
    "脚本只应用外设和寄存器：生成的内存块为未初始化、易失、可读写，不会添加 SVD 中的寄存器位字段、枚举值和中断。结果取决于所提供的 SVD 文件；无法创建内存块或结构体时，脚本只打印失败信息并继续执行。",
    "SVD-Loader.py 采用 GPL-3.0；分支而来的 cmsis_svd/ 代码沿用上游 cmsis-svd 的 Apache-2.0 许可。README 中提供使用说明的博客链接在审阅时返回 HTTP 404。"
  ],
  "targets": [
    "firmware"
  ],
  "url": "https://github.com/leveldown-security/SVD-Loader-Ghidra",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
