<P> As with other software, embedded system designers use compilers, assemblers, and debuggers to develop embedded system software . However, they may also use some more specific tools: </P> <Ul> <Li> In circuit debuggers or emulators (see next section). </Li> <Li> Utilities to add a checksum or CRC to a program, so the embedded system can check if the program is valid . </Li> <Li> For systems using digital signal processing, developers may use a math workbench to simulate the mathematics . </Li> <Li> System level modeling and simulation tools help designers to construct simulation models of a system with hardware components such as processors, memories, DMA, interfaces, buses and software behavior flow as a state diagram or flow diagram using configurable library blocks . Simulation is conducted to select right components by performing power vs. performance trade - off, reliability analysis and bottleneck analysis . Typical reports that helps designer to make architecture decisions includes application latency, device throughput, device utilization, power consumption of the full system as well as device - level power consumption . </Li> <Li> A model - based development tool creates and simulate graphical data flow and UML state chart diagrams of components like digital filters, motor controllers, communication protocol decoding and multi-rate tasks . </Li> <Li> Custom compilers and linkers may be used to optimize specialized hardware . </Li> <Li> An embedded system may have its own special language or design tool, or add enhancements to an existing language such as Forth or Basic . </Li> <Li> Another alternative is to add a real - time operating system or embedded operating system </Li> <Li> Modeling and code generating tools often based on state machines </Li> </Ul> <Li> In circuit debuggers or emulators (see next section). </Li> <Li> Utilities to add a checksum or CRC to a program, so the embedded system can check if the program is valid . </Li>

Difference between embedded systems and general purpose systems