This page serves to document information about the NUI Camera DSP, its architecture, instruction set, firmware, and capabilities.
With these, you can extract the NuiCam.bin file from the archives and use segher's dis-nui (below) to start understanding the camera firmware.
Segher figured out the instruction set, and wrote a disassembler: http://git.infradead.org/users/segher/dis-nui.git
< segher> http://git.infradead.org/users/segher/dis-nui.git < segher> have fun :-) < segher> the code in that NuiCam.bin starts at 2*0f14 < segher> so cut it, and then run it through the disassembler < segher> it should start: < segher> 0000: 25d7 mov r5l,#d7 < segher> 0001: 35a6 mov r5h,#a6 < segher> 0002: bb05 mov pc,r5 < segher> (which jumps to a6d7, this is the reset vector)
There are 16 general purpose registers, denoted r0 through r15. Each is 16 bits wide.
There are also 16 "s" registers and 16 "t" registers. A few of these have special usages, noted below.
|r12||stack pointer (nothing in hardware, just the ABI)|
|r13||temp register (gets used for calls a lot)|
|s2||ilr||interrupt link register|
|t5||ctr||Counter, used for loops|