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.

For more information, see the User’s Tutorial to cereal (includes screenshots!), or the Programmer’s Guide to cereal. Both are included in the download package.

Current version: 0.93.5

You can download cereal here. Please send comments, patches, flames, or anything else to mitr@volny.cz.

cereal is hosted at SourceForge.net, see also the project summary page.

Leave a Reply

Your email address will not be published. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>