FIRM
Overview
This is the file format for the 3DS' Firmware, it contains four 'sections' of ARM code (ARM9 and ARM11).
A structural example of a FIRM file (created using the specs in ctrtool) can be found here (Note does not contain ARM code, it's just a structural example)
FIRM Header
| OFFSET | SIZE | DESCRIPTION | 
|---|---|---|
| 0x000 | 4 | Magic 'FIRM' | 
| 0x004 | 4 | Reserved1 | 
| 0x008 | 4 | ARM11 Entrypoint | 
| 0x00C | 4 | ARM9 Entrypoint | 
| 0x010 | 0x030 | Reserved2 | 
| 0x040 | 0x0C0 (0x030*4) | Firmware Section Headers | 
| 0x100 | 0x100 | Header Signature | 
Firmware Section Headers
| OFFSET | SIZE | DESCRIPTION | 
|---|---|---|
| 0x000 | 4 | Offset | 
| 0x004 | 4 | Address | 
| 0x008 | 4 | Size | 
| 0x00C | 4 | Firmware Type ('0'=ARM9/'1'=ARM11) | 
| 0x010 | 0x020 | SHA-256 Hash of Firmware Section |