Emulation, Simulation and Native Development
There are many ways to develop applications for embedded Linux devices.
The obvious method is to cross-compile on your host and debug on real
hardware. This is probably how most people think of embedded
development. But there are alternatives worth considering.
One problem with the using real hardware is that it is not always
readily available. There may only be a handful of prototypes built or
you may even want to start development before any hardware is
available. In today's highly competitive environment waiting for
hardware may delay a project and why not have your hardware and
software teams working in parallel anyway?