Addr (MCU) |
Addr (DSP) |
Size | Description |
---|---|---|---|
000 | 0800 | 164 | MDISND queue data |
0A4 | 0852 | 2 | MDISND queue tail (next available entry) store new tail here after write to queue |
0A6 | 0853 | 2 |
MDISND queue head (oldest entry)
free space in queue is |
0A8 | 0854 | 36 |
Init data
Initialisation data 1 18 words: 0x900F (0) 0x0000 (1) ... 0x0000 (10) 0xFF80 (11) 0x0000 (12) 0xFFFF (13) 0x0000 (14) 0x0000 (15) 0x0000 (16) 0x0000 (17) |
0CC | 0866 | 2 | MDI flags 0x01 Process MDISND |
0DA | 086D | 2 | DSP->MCU short MDI command Short type (one byte) MDI packet. Handled in IRQ4. MCU writes 0 when handled. Low byte = MDI type High byte = Parameter |
0DC | 086E | 2 | MCU->DSP short MDI command Short type MDI packet. Handled on DSP interrupt, DSP writes 0 when handled. Low byte = MDI type High byte = Parameter |
0DE | 086F | 2 | ND command from DSP to MCU Something with ND task. Handled in IRQ4. MCU writes 0 when handled. |
0E0 | 0870 | 2 | Cobba command (dsp_write_command) handled on DSP interrupt, DSP writes 0 when handled |
0E2 | 0871 | 2 |
Code block request from DSP to MCU
Request to the MCU to upload a certain code block. Handled in IRQ4. =0x14 The first one requested after primary DSP initialisation (memory is cleared, setup basic registers and interrupt vectors are set up). Contains secondary initialisation. =0x01 Second one that is requested MCU writes to |
0E4 | 0872 | 2 | Code block reply MCU sets this to !=0 to acknowlegde having uploaded some code. DSP clears this to 0 when ready for more uploaded code. |
0F6 | 087B | 10 | Upload codeblock header The first 5 words of the codeblock header are copied here after the codeblock has been written to DSP shared memory. Possibly bootstrap code. |
100 | 0880 | 200 | MDIRCV queue data 100 words, of which 1 will always be unused to prevent head=tail when full (because that means empty) |
1C8 | 08E4 | 2 | MDIRCV queue tail (next available entry) |
1CA | 08E5 | 2 |
MDIRCV queue head (oldest entry - read here)
number of words in queue is |
1D2 | 08E9 | 16 | r_dsp2ftd (temporary DSP counters) 8 words; exact meaning yet unknown (they show up in Netmonitor though) |
1E2 | 08F1 | 2 | ASIC ID I/O [0x20000] is put here by the ARM firmware. |
1E4 | 08F2 | 4 | Some timer |
E00 | 0F00 | 0 | Address invoked on DSP reset After the DSP is reset, it boots to 0xFF80 in ROM, which does a jump to this address in the shared memory range. Note that the DSP process dies instantly when shared access is not enabled. (so make sure it is enabled before reset) |
Last updated: 2005-02-21 14:19
This site is the result of a great deal of assembly code reading, research, countless (mostly futile) searches for data sheets, cross-referencing and analysing. If you use this information in any way please mention wumpus <blacksphere@goliath.darktech.org> (and others in the credits section) in the credits of your program/document. And tell me :) If you have more information please contribute. If you just copy this, stick your name on it and call it yours I hope you get your genitals bitten off by a three headed monkey. Have a nice day.
No mobile phones were harmed in the production of this site.