What are the challenges of embedded systems optimisation?
As each embedded system is different, so too are the optimisation requirements, whether extracting the highest level of performance or energy from a system, or applying a fix to prevent potentially life-endangering consequences.
Many characteristics of an embedded system could derive benefit from optimisation; system timing; code size; RAM usage; energy consumption; power.
There is of course no single, tried and tested approach for optimising an embedded system. The specific characteristic will largely determine the choice of optimisation tools and methods, which could include consideration of the choice of compiler, compiler settings, programming algorithm and techniques, code profilers, disassembling and analysing code or rewriting the programme.
Further, depending on the complexity of the embedded system, the development cycle could potentially be revisited multiple times across the lifecycle.
An RTOS with a modular architecture for example should allow manufacturers to maximise the useful life of the system core to several generations of products by enriching them with new features and capabilities, which increases the return on their investment in the operating system.
Control remains an important optimisation challenge, along with the need to balance fast and small code. Debugging code also presents challenges for systems optimisation, requiring careful tuning for the debug phase and shipping code.
The ideal is that code executed on an embedded system has to be optimised both to utilise available limited resources in way that meets all system requirements.
In practical terms, embedded code is written to make optimum use of processor or compiler features, as well as managing the memory or power requirement. But this invites an unwelcome trade-off when bringing the product to market quickly, risking emergence of performance or reliability problems later in the development process.