- What is an embedded systems?
An embedded system is a special-purpose system which performs a specific task with its own hardware. The embedded system is different from a general purpose computing devices (Like PC) because of its size, functionality and resources. Since the system is dedicated to specific tasks, design engineers can optimize it by reducing the size and cost of the product. Embedded systems are often mass-produced, so the cost savings may be multiplied by millions of items.
- What are the common examples of embedded systems?
Physically, embedded systems ranges from portable consumer devices (such as MP3 players, PDA’s, Mobile phones, gaming devices) to large Enterprise products (such as Enterprise routers, Networking switches and Industrial automation systems). From an engineering point of view embedded systems development is very different from an application development.
- What are the building blocks of Embedded Systems?
From a programmer’s perspective there are four building blocks for any system namely Boot-loader, Operating system, Device drivers, Networking subsystem apart from the device’s main functionality. When the system gets powered up the boot-loader is the first program that gets activated from the non-volatile memory. This boot loader will vary from one system to another, because it mainly depends on the way system is configured. This boot loader will in turn revoke the operating system by calling its entry point, which in-turn initializes various operating system services (memory, tasks, scheduler etc…).
Once the operating system services are initialized, all the low level device drivers followed by other subsystems (like networking) are brought up. At this point we can say that the platform is built for the system. After this initialization is complete, the system would be in a position to perform its expected functionality. This functionality will vary from device to device as each system is built for a different purpose. Say for example a router’s main functionality would be to route the packets but a micro-controller’s functionality may be measuring the temperature using a sensor. Finally functionality programming is the main core of embedded system which requires a powerful programming language.
- How Embedded Systems programming is different from normal programming?
Even though embedded systems vary in various functionalities, the programming fundamentals remain almost the same. The challenges in embedded systems programming is because of the following reasons.
- Embedded systems have very limited resources (in terms of memory, storage, processing power) compared to a general purpose computing device like PC.
- Because of the less memory availability and requirement of faster response, embedded systems have Real Time Operating Systems (RTOS). These RTOS have flat memory model where all processes in the system run under the same memory space. This will lead to lot of memory corruption and inter process communication errors. Debugging these errors are really challenging.
- Embedded systems have a pre-defined performance requirements and response time.
- Why Linux is the choice for Embedded Systems?
Linux is obvious for embedded systems because of the following reasons:
- Linux is based on Open source concept and it is going to be the future of embedded software. Most of the embedded systems are built using Linux as they significantly bring down the product cost simply because it is open.
- There are ample amount of tools and debugging mechanisms provided by Linux for an embedded systems developer right from the editor to memory analyzer. These tools play a major role in embedded system development as they reduce the development time.
- Linux is customizable for almost all processor architectures and it is scalable at all levels.