cereal is an emulation framework designed to allow easy emulation of interconnected modules. Its main component is an 8051 emulator module, so it can be used as an 8051 emulator.
The reason for writing
cereal was an 8051 embedded controller which should control an engine using pulse-width modulation, read the resulting flow from a flowmeter, and regulate the output to keep flow at a given value. In the real world, it takes about two seconds for the algorithm to stabilize, and emulating two seconds using conventional emulators (computing the engine input, the real flow, the feedback frequency by hand) is simply impossible to do. Using
cereal, it took about two hours to create a module emulating the engine/flowmeter combination, along with a window showing the current values. Then it is trivial to connect this module to the 8051 module and just sit back and watch the result.
Another, simpler, example is a multiplexed display/keyboard combination (in my case, selecting one of four 8-segment LCD displays). Instead of watching the port bits, why not create a module that shows the output graphically as four displays?
In addition to these possibilities,
cereal offers breakpoints, watches, evaluate/modify dialog (which can solve
2 * x + 1 = 5). The KDE GUI also can be extended using KParts (the 8051 interface is provided as a KParts plugin). Also included is a command interface usable for creating testsuites for your programs (or for
cereal itself –
cereal has over 400 tests in its testsuite), and a simple 8051 disassembler.
Current version: 0.93.5