In the modern era the classiness in life, repetitiveness of activities, and attempt to reduce human effort has resulted in the demand for more and more automation in each and every walk of life. Small household items like water level controller, sanitization system, mobile phones and more to huge items such as security systems and billing system in public places like malls, to even bigger systems like telecommunications and radio reactors – all use some sort of automation for each and every process involved in the steps for final delivery of expected services. Be it India, US, or UK the demands for better conditions with use of technology for advancements is on the peak. People look for ways that can be used to improve their day-to-day activities.
It is this automation of activities where embedded solutions come to rescue. Virtually every electronic device designed and manufactured today is an embedded system. Almost each and every one of us must have been in touch of these systems in some form or the other. In fact, if you look around your home itself, you would be able to identify a few dozen embedded systems in your home! Each embedded solution is designed to meet certain requirements. Based on the number of the activity it is designed, the complexity of the final set of components of an embedded system varies. For example, some embedded systems have real-time performance constraints that must be met, for reasons such as safety, security and usability in products like satellites, medical instruments etc.
Small systems may run with limited computer hardware resources however big, dedicated systems might involve huge combination of simple or complex embedded system interlinked with each other consistently feeding input to each other or generating output data independent to each other. Typically, a simple embedded solution might have some form of micro-processor or micro-controller to execute the programmed instructions for the activity it is supposed to execute. Amongst this some have read-only memory or flash memory chips to hold these program instructions, referred to as firmware, and some default configuration information. Based on requirement there might be present some user interface to get user feedback or to display final output or processor state.
One would encounter lot of constraints when writing software for such embedded solutions. You might need specialized tools to get your software into the system. Systems that need to work in real-time should be responsive and not hog the CPU for long time thereby affecting user experience. Portable systems must run on battery power and additional care must be taken by software developed by software development company to reduce power consumption as much as possible. Moreover most of the embedded solutions have memory constraints and hence additional care must be taken to write optimized software. Lastly, none of the software is bug free and hence the embedded system must be designed for ease of testability and debug ability.