Developing A New Embedded System? Have You Considered…
As we mentioned in last month’s article on the points to consider when developing new desktop applications, it can be easy to overlook important elements in the moderate chaos that is a new application development. This month we thought it would be interesting to continue on with this theme, and try to put together some consideration guidelines for embedded system developments.
Take the time to build or save time and buy?
This is quite the debate in the world of embedded system design, with build fans stating that this allows for directly relevant solutions while buy fans continually point out the time saved with quicker access to solutions. However, the final decision is most likely to be biased by the environment into which the final product is required to work, as extreme environments require specialist hardware that may not be available through normal commercial channels.
Don’t forget about the compiler
Alongside CPU selection, the choice of compiler the most important point to consider as the choice of compiler will affect which families of microprocessors & microcontrollers can be used, and in some cases the real-time operating system. It is worth taking the time to consider standard libraries and the compilers start-up code. Popular choices for embedded compilers are C or C++, as these tend to produce faster more efficient applications.
What about the usual criteria?
As for all processor based systems consideration needs to be given to the usual criteria (CPU processing power, memory usage, connectivity, etc.), however embedded systems bring a whole host of other factors that need to be considered:
Size – the product may need to operate in an enclosed environment where space is premium so the solution needs to be kept as small as possible.
Form Factor – the product may need to be rack\wall mounted so the equipment housing would need to take this into account.
Weight – the product may need to be installed on equipment where weight restrictions apply (i.e. mobile or satellite equipment).
Environment – Embedded systems often have to operate in environments where office computer equipment just would not be suitable for instance areas of extreme temperature\humidity or areas with high levels electro-magnetic interference.
Will there be limits on power consumption?
It is often the norm when developing embedded systems to find yourself dealing with harsh system size, weight and power constraints, whilst trying to create an effective solution to a challenge. Reducing power consumption can be quite a challenge, especially when resources are limited and processing demands are high. However, the use of multicore and ARM architectures are a possible solution thanks to their energy saving mechanisms and low power consumption. You need to select a CPU that meets the required performance but isn’t so over specified that it consumes too much power.
How does your system manage failure?
Depending upon the type of product being developed the application maybe directly responsible for safety (e.g. self-drive vehicles, power station monitoring\control). In these applications, careful analysis of possible failure modes is critical to ensure that equipment failure does not result in wrong side failure, which in turn affects the safety of the overall solution. It is also possible that the product may not be directly responsible for Safety but is instead responsible for monitoring and recording information that can be used to aid analysis of events following the failure of other safety critical\related products. In this case the priority is given to ensuring the reliability of the interfaces from which the data is being gathered and also the safe storage of the data to ensure its recovery following an incident (e.g. aircraft flight recorders).
Do you know how to test your system?
By their nature, embedded systems tend to have an impact on real-life events when run, making the testing process of these systems a rather complicated affair. As with all software developments a degree of software testing can be performed using the normal software development tools available through the IDE and the use of simulators to emulate the equipment that the product is required to communicate with. However, for embedded systems there comes a point where the product needs to be tested in a more realistic environment and this may require the use of more specialist equipment to enable the interfaces to be tested properly.