NikonEmulator

(formerly FrEmulator)

What is it ?
Trying to understand how the firmware(s) inside Nikon DSLR work, we thought it could be useful to have a software that would take a firmware as input, then imitate what a microcontroller would do with such instructions and data. That's what is generally known as "emulating" a device.

The NikonEmulator started as a simple interpreter of the Fujitsu FR ("B" microcontroller) instruction set (hence the FrEmulator name), simulating only that CPU and its memory. Then, as understanding progressed, we added a "screen memory viewer", the interrupt controller, reload timers, serial interfaces and other "components", as well as a bunch of debug tools (CPU state viewer/editor, memory editor, memory access trackers, breakpoint toolkit, etc.)

Lastly, we thought it would be good to also concentrate on the Toshiba chip ("A" microcontroller) and we started over to emulate that chip too. Consequently, version 2 of the emulator really contains two completely separate emulators and toolsets, and was renamed NikonEmulator.

For convenience, the NikonEmulator also contains several tools : - a disassembler for each microcontroller, that can be run either "offline" (converting binary firmware to assembly text file) or "in real time", displaying instructions in clear text as they are being executed. - a firmware decyphering tool, to decrypt downloaded firmware - a memory load/save option This is a work in progress, obviously.