2026-04-22 18:46:54 +00:00
|
|
|
# ADSP-219x Reverse Engineering Toolkit
|
2026-04-12 13:05:06 +00:00
|
|
|
|
2026-04-22 18:46:54 +00:00
|
|
|
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
|
|
|
|
|
|
|
|
|
|
Currently decodes: NOP, IDLE, Type 1 (multifunction), Type 3
|
|
|
|
|
(direct memory), Type 4 (compute + memory), Type 6/7 (immediate
|
|
|
|
|
loads), Type 10/10a (jump/call), Type 17 (reg move), Type 20
|
|
|
|
|
(RTS/RTI).
|
|
|
|
|
|
|
|
|
|
Work in progress: Type 9/9a (standalone compute), Type 11
|
|
|
|
|
(DO UNTIL), Type 15 (shift), Type 18 (mode control), Type 25
|
|
|
|
|
(saturate).
|
|
|
|
|
|
|
|
|
|
## 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).
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
|
|
Plugin code: LGPL-3.0-only. Example code from Analog Devices
|
|
|
|
|
application notes. Documentation extracts from the ADSP-219x
|
|
|
|
|
DSP Instruction Set Reference.
|