tools/firmware_overview.py analyzes PM binaries and reports: - Memory map (empty / DSP kernel / control flow / code+data) - Entry point detection - All DO UNTIL loops with MAC operation count - All immediate constants with register names and addresses - I/O operations with ADSP-2191 peripheral register names - Optional DM cross-reference (I-reg targets) - Summary statistics Includes ADSP-2191 I/O register name table for SPORT, SPI, UART, Timer, GPIO, DMA, System Controller, and Interrupts.
ADSP-219x Reverse Engineering Toolkit
Radare2 architecture plugin and reference materials for reverse engineering ADSP-2191 firmware.
Contents
r2plugin/ Native radare2 arch plugin (C, GNU style)
examples/ ADSP-2191 assembly examples (FIR, IIR, FFT, Viterbi)
+ assembler-verified ISA test ROM
testrom/ Test ROM generator for plugin validation
docs/ Architecture reference, opcode tables, walkthrough guides
Quick Start
cd r2plugin && make && make install
r2 -a adsp219x -b 24 examples/isa_test.bin
[0x00000000]> pd 48
Requirements
- Radare2 >= 5.8.0 (RArchPlugin API)
- GCC
Plugin Status
The decoder implements all documented ADSP-219x instruction types and has assembler verification for 34 of 37 documented opcode families.
Assembler-verified coverage includes:
- Types 1, 3, 4, 6, 7, 8, 9, 9a, 10, 10a, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 21a, 23, 24, 25, 26, 29, 30, 32, 33, 34, 35, 36, 37
Structural-only coverage remains for:
- Type 22 / 22a (2-word immediate data write)
- Type 31 (IDLE)
- Type 32a (DAG register store with transfer)
For the current verification matrix and test inputs, see
r2plugin/TESTING.md.
Assembler
The examples were assembled with open21xx,
an open-source assembler/linker for ADSP-218x/219x. Build
instructions are in the open21xx README. The resulting ELF is
converted to raw binary with dd (extract the int_pm section).
Analysis Guides
docs/GETTING_STARTED.md- setup, loading ROMs, and basic radare2 usedocs/LARGE_ROM_ANALYSIS_WORKFLOW.md- step-by-step workflow for analyzing large raw ADSP-219x ROM dumps
License
Plugin code: LGPL-3.0-only. Example code from Analog Devices application notes. Documentation extracts from the ADSP-219x DSP Instruction Set Reference.