# 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](https://github.com/wodz/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 use - `docs/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.