Embedded System Design
This article explains the key principles of an Embedded System, typical applications, and why they are a reliable solution for modern technology.
What is an embedded system?
These are types of programmable electronic systems that can be programmed to have a high-level functionality. Systems typically have a small physical footprint or form-factor and can be incorporated into a piece of electronic equipment or product, requiring a high level of autonomous (embedded) functionality.
Why use an embedded system?
Systems are programmable, running code (i.e., C/C++) that is dedicated to performing a set of specific tasks or functions. The behaviour of these systems is analogous to the function of the ‘brain’ in humans and provides a centralised point of control generally answerable to nothing except for itself—typically untethered from any external source of intelligence, making decisions basically, performing operations independently.
Embedded systems have grown in use over the years and are now used in a variety of applications requiring standalone functionality. For instance, when a product is required to perform a multitude of functions, then it can be easier to incorporate an embedded system and write the necessary code to create these functions rather than trying to achieve required functionality by developing hardware.
Moreover, if the operation of a piece of equipment or product needs to be modified for any reason, then in most cases this can simply be achieved by changing lines of code in the software and reprogramming the system as opposed to modifying hardware.
This is very advantageous as it avoids having to modify the underlying hardware, which can be costly both in terms of time and money. Software updates can even be carried out remotely, which most of us have had experience of.
Typical Applications
The use of this type of technology has seen massive growth over the years as component sizes and counts that comprise these systems have reduced radically over time. Embedded systems are commonly found in everyday household and personal items. Examples include modern vacuum cleaners, washing machines, hairdryers (especially the Dyson models), smartphones, smart speakers, wearable tech, smart TVs, and many others.
What are Peripheral Support Devices
Alongside the microcontroller core, there are usually other devices connected to the microcontroller that are sometimes referred to as peripheral devices. These devices are the things that carry out the heavy lifting on behalf of the microcontroller, which enables it to communicate with the outside world. An example of this would be the touchscreen of your mobile phone, which serves as an interface allowing you to interact with the smartphone and access all of its features. In this case, inside the phone circuitry, there will be a dedicated peripheral—a video driver chip—which sits in between the touchscreen and the microcontroller, acting as a seamless bridge between the two devices.
The role of the driver chip is to convert the raw video data (1’s & 0’s) outputted from the microcontroller and convert it into meaningful graphical information we can see and clearly recognise. There are other dedicated peripherals for sound and touch functions, etc. You can think of the microcontroller as a conductor, rapidly orchestrating these peripheral chips into performing their specific function(s).
System on a chip
As chip technology has advanced over the years, systems have become much more integrated, resulting in chip designers being able to squeeze much more functionality onto a single chip, occupying a single piece of silicon. With this in mind, the natural path of evolution is to bring (integrate) the functionality of some peripheral chips into the same package as the microcontroller, allowing full systems to be created on a single chip. With this approach, many benefits are shown as follows: –
- Cost Savings (lower component count)
- Printed Circuit Board Space Savings
- Performance enhancements (i.e. speed)
- Lower manufacturing costs
- Environmental benefits
Programming
In order to work with an embedded system, it is essential to know how to write a programme often referred to as ‘coding.’.
A program is made up of a list of instructions, which are converted to 1’s and 0’s (machine code), which instructs the microcontroller on what tasks to perform to be able to create a function for its intended application. A program consists of a consecutive set of pseudo-English commands known as the computer language. There are many types of languages in existence that were all designed to serve a specific sector or application. In the world of embedded programming, the prevalent languages are C/C++ or Lynx.
For the microcontroller to interpret the language and to act out its commands, they must be converted into machine code. This code is a series of 1’s and 0’s that the microcontroller can interpret. This conversion process is known as compiling, and the tools used to perform this task are known as compilers.
Designing an embedded system
When designing a system, it’s important to consider the following factors:
- Power Requirements
- Coding Experience
- Space Constraints
- Processor speed (more speed = more power)
- Math advantages – 16-bit or 32-bit (level complex math calculations)
- Device cost (volume purchases)
- Decide whether to go for high or low levels of integration
- Functional needs of the system
- Future obsolescence
Looking to Develop a Custom Embedded System Design? Let us help bring your vision to life!
For a free consultation to discuss how we can tailor a design that meets your needs contact us today or call 01865 408 352.