Dr. Christian Giessen 70561276fe Rewrite ROM analysis walkthrough for real firmware dumps
- Step-by-step format detection using od
- Packed vs padded vs boot stream identification
- File size divisibility check
- Python one-liner to strip 4-byte padding
- PM vs DM file explanation
- DM file inspection with od
- r2 setup including parser warning suppression
- Full analysis workflow (aaa, afl, afb, VV)
- Pattern recognition for FIR, IIR, init, I/O
- Complete r2 command reference
2026-04-27 12:09:49 +00:00
2026-04-22 22:43:15 +02:00

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

Description
ADSP-2191 Reverse Engineering - Disassembler, radare2 plugin, and analysis tools
Readme 2.1 MiB
Languages
C 50.4%
Python 48.6%
Makefile 1%