Why simulation sucksRobin Getz
The long lead in any embedded Linux product is always the software - software takes the longest to develop, the longest to debug, and the longest to test/qualify. It is for those reasons that instruction set simulators (ISSs) have become an essential part of an embedded software design process. Developers need to get the head start on software development before the hardware exists. However, ISSs are either slow, difficult to develop, and don't model enough of the system to really be valuable.
Therefore, many embedded Linux developers use some sort of system level simulator, or emulator (qemu, armulator, skyeye, ovp, etc) to do their initial development. This development model has many benefits, (including the ability to do development before the target hardware exists,) but does not come without its drawbacks.
This paper will explore a few of the most common open source simulators, and explain what type of benefits and pitfalls exist with each. It will also explore some of the verification that some are doing to ensure the simulation engines and the final target hardware match, and what to watch out for when using these valuable tools.