If you take a good look around the world we live in, you can find many manmade machines in different forms and applications. Have you ever wondered what makes them perform their tasks?
You can ask yourself what's the unique system inside these devices, that makes these them so user friendly and reliable? Sometimes we refer these devices as embedded systems? What is that embedded in these devices? In the previous chapters we have already been introduced to embedded systems, so in this chapter we will learn about designing an embedded system.
As we now know that an embedded system is a combination of software and hardware. The hardware is designed for the specific purpose and likewise the software.
The materials required in manufacturing these systems will be very scarce because the applications of these system are limited.
The microntrollernis programmed or coded to perform a specified task such as, controlling the pheripherals attached to it, processing input data and outputting information in form of controls.
For example, a system such as an automatic door receives data from it sensors, it microntroller or processor processes the input data and decides wether to open the door for someone who wants to enter or still keep it closed. By controlling the door lock. 🤓 Quite simple?
When designing an embedded system, we have to take a close look at the type of processor it's going to use. The core part of an embedded system is the processor, different interfaces and pheripherals are attached to it based on it application and design.
There are many processor to choose from, these includes.
1. General purpose microprocessor
2.Microcontroller
3.Digital signal processor
4. Complex programmable logic devices(CPLD).
5 Field programmable gate array(FGPA).
6. And system in chip (SoC).
Each of those processors have their own advantages and disadvantages and also their applications.
The pheripherals attached to an embedded system depends on the applications and functionality. There are bunches of pheripherals which can be interfaced into an embedded system. They include, serial, parallel, digital and analog devices.
Some of the interfaces available to embedded systems are
1.Serial communication interfaces.
2.Synchronous serial communication interface.
3.USB.
4.Networking interface.
5.Debugging.
6.JTAG Field buses.
Peripherals are connected to the embedded system to add some specific features. These may include various sensors, displays, input devices, output devices and actuators. Most of the peripherals may need an interface described above.
Some of the peripherals used in embedded systems are
- Displays, eg, LCD
- Multimedia cards, eg, SD Card
- Timers, Counters
- Analog to Digital converters
- Input devices, eg, keypad, touch screen
- Output devices, eg, LED, motors
Another important part of the embedded system is the software. The embedded system software, generally called firmware, defines how the hardware behaves, depending on some circumstances.
The system should be capable of taking account of all the available conditions in a system and should predict the output. In some applications, it may need real-time processing of the data, which is called real-time applications and it may need specialized operating systems called real-time operating system.
Embedded system design is an interesting area of work. Each embedded system is designed for a particular application, and it is also a product. So the development of the embedded systems is defined by the embedded development life cycle (EDLC).
While designing embedded systems, we need to consider the hardware and software part of the systems. It involves the same product development pipeline like requirement analysis, market survey and customer feedback, but in later development & implementation and integration stages, one needs to follow the below steps.
- Define system specifications based on the requirement analysis
- Co-design – decide which system should be implemented with hardware and which through software
- Technology selection – select main parts and associated technologies
- Resource allocation – decide the resources needed for the design and testing for this product, this includes budget and people
- Component selection and tools identification
- Hardware design – schematics, layout, PCB manufacturing and board bring-up
- Firmware development and testing
- System integration and testing
- Testing, certifications