IS EMBEDDED SYSTEMS A GOOD CAREER OPTION?
The very first question that comes to our mind when we hear about Embedded systems is…
" Is Embedded Systems a Good Career Option ? "
" What are the career opportunities in Embedded Systems Industry ? "
The Answer is : - " YES ". Embedded System is a very good career option and it is there since decades.
NASA has sent Mars pathfinder robot on Mars which is using Micro-controllers, firmware and RTOS and this is nothing but an Embedded system.
Normal Calculator which we use today is a pure Embedded System. Mobile phones in our hand, TV and set-top box in our home are typical examples of embedded system.
Now whole world is moving towards Internet Of Things (IoT) revolution where devices are communicating with each other and will takes decision accordingly;
this is nothing but an embedded system.
Today nothing is possible without Embedded systems
But Before starting with the complex talk, first let us talk about what is an embedded system exactly ??
What is embedded System ?
The most common definitions is - "It is a combination of hardware and software to perform a specific task"
But This definition is not much clear !Lets redefine it - "Any electronic system which gives capability to a device or a machine to perform fully automatic and semi-automatic tasks is an Embedded System"
A washing machine at home is an embedded device, In semi-automatic machines user sets the timer, water level and amount of detergent to use, and rest of the operation is done by machine itself, as per the parameters setup by user.
In fully automatic washing machine, user just put the clothes in the machine and rest all the tasks are done by machine itself. Now Can you guess -
who is controlling the automatic operations of machine??
How is the washing machine intelligent enough to do the tasks automatically??
What is the brain of a washing machine ?
Yes !! It is an Embedded System.
Embedded system is the brain of washing machine (or any automatic machine or device). There is an Embedded micro-controller inside a washing
machine which get inputs from user, save those inputs in its memory and operate the machine as per the inputs. Isn't it Interesting ?
It means, if you know how to make an Embedded System then you can automate any task with the help of it.
Any embedded system basically consists of 3 Things -
- Input Device
- Micro-controller or Microprocessor (The Brain)
- Output Device
Input device collects inputs from user or environment. It could be done via a sensor or a remote control, simple push buttons etc..
Micro-controller is the brain ie. it is the processing unit. It collects information from input device and perform the output as per the logic defined inside it.
Output device collects the instructions from micro-controller and shows the result.
Can you imagine how a micro-controller knows what action to be perform or what operation to be done on input collected ??
Answer is " It knows this because we can write a code(set of instructions) inside the micro-controller and micro-controller process the output according to the code written inside it."
So first we need to have a logic in our mind, then we can write that logic in the form of a Code and then this code can be written inside the micro-controller to execute it. Mostly the code is written in "Embedded C" Programming language.
So If you want to program a Micro-controller you need to learn Embedded C Programming.
HOW is EMBEDDED SYSTEM Industry DIFFERENT FROM IT Industry
IT Industries focus mostly on the application level.This means without knowing the underlying system architecture you can work on your project . Mastering a high level language can easily get you started in an IT industry.The framework designed for developing an application takes care of resource requirements,compilation, cross compilation etc.
An Embedded Software engineer and an IT software engineer both write codes for an application and require logic building abilities but and Embedded engineer must have the overall system knowledge in addition.The code is written keeping in mind the underlying system architecture,memory constraints,speed,power requirements and also the target where the final product has to be deployed. He must have hardware as well as software knowledge to design an optimum and efficient code. Scalability, Interoperatibility and compatibility needs to be ensured in most of the development cases.
It is not only the expertise in coding but also knowledge of different domains like electronics,electrical,networking and computer science that makes the job of an embedded engineer more challenging and interesting.
Career in embedded system -
Lot of career opportunities are available in embedded systems. Some of them are as follows:
- Embedded Software Engineer (Firmware Developer)
- System Software Engineer (Kernel & RTOS Developer)
- Application Software Engineer (Device Drivers Developer)
- Software Test Engineer.
- Embedded Hardware Engineer.
- Embedded System Trainer.
- Marketing & Technical Sales Executive.
Sectors for Embedded Systems Jobs
- Medical Electronics
- Consumer Electronics
- Food industry
- Industrial machines
In simple terms: everywhere!!!!! Cheers !!!
Few big name in Embedded Systems Jobs
- Medical Electronics (Johnson and Johnson, GE, Siemens, Medtronic etc.. )
- Aerospace (Airbus, GE Aviation, p3 System, Boeing, Honeywell etc..)
- Automobiles (Robert Bosch, Continental GT, Mercedes-Benz, Volvo, etc..)
- Consumer Electronics (Samsung, Apple, L&T, Toshiba, Hewlett-Packard enterprise, Nokia networks, Dell, Intel, Cisco, QUALCOMM, NVidia etc..)
Skills Needed to work in Embedded Systems domain ?
The foremost thing for any beginner who is willing to make a career in Embedded Systems is to understand the complete ecosystem of Embedded Systems and its current day demands. Only by understanding these issues they can clearly know the skills that they would need to master to make an impact full career in this area.
Most fresh engineers blindly choose embedded systems as they believe that it is a highly rewarding career or their relatives or seniors suggested them to do so. But the main problem is that these fresh engineers do not have a clue on what skills they need to learn to fully understand the current day embedded system's needs, its industry and markets.
The skills that you need to succeed as an embedded engineer is much more than just learning how to hard-code your micro-controllers, which unfortunately most colleges and training institutes are offering as embedded system courses.
No Doubt knowledge of Embedded C and Micro-controller is must, But one need to understand that current day embedded devices cannot be just dedicated systems running on memory constrained micro-controllers, but devices which can run multiple applications, which have more memory, where devices are more reusable, faster, with more software updates, stable and so on.
So do you now think that just learning Embedded C and micro-controllers will help?
The Answer is - “NO”
So now what skills you should have ?
- Software Skills
- Embedded C Programming on Micro-controllers (AVR, PIC, ARM).
- Micro-controller Architecture and understanding datasheet.
- Interfacing micro-controllers with different sensors and peripherals
- Operating system concepts and Internal Working
- Linux Internal and Linux Architecture.
- Kernel Programming
- Device Drivers Programming
- Real Time Operating Systems (RTOS)
- Debugging techniques in C, Linux, Kernel, JTAG etc.
- Hardware Skills
- Electronic Circuit Designing
- Power Supply Circuit Designing
- PCB Designing
- Troubleshooting Skills
Earlier Embedded System was 80% hardware and 20% software but now a days it is 20% hardware and 80% software Grab all above skills if you want to achieve high level in your career.
Why learn an OS (Linux)?
Students generally asks what is the role of OS or Linux in embedded systems and why is it needed ? They generally perceive that embedded systems is all about learning Embedded C and micro-controllers. But unfortunately it is not true.
As things are becoming smarter day by day, embedded systems should have multiple functionalities and to have multiple functionalities you need to have a stable operating system running, which can host these multiple functionalities (multitasking applications), the operating system (OS) manages all of the software and hardware on the embedded system and provide multitasking.
now don’t you think that the need to learn OS is justified ?
If we look around at some of the current day embedded devices like Android phone, Smart TV, Digital set-top boxes etc. these all devices uses Linux as their host OS and all the functionalities are delivered through it, without OS we cannot imagine of current day's smartphone.
Unfortunately most of the colleges and embedded systems training institutes are still clinging on to Embedded C and micro-controllers, and students are
under the impression that those are the most important skills to learn.
We are not denying the importance of it, but very clearly suggesting that those skills are narrow and legacy and at the most can help you get small embedded
systems jobs on micro-controllers, which will surely make your career stagnated and monetarily less rewarding.
So The Key -
So the key is to master core programming skills using C, writing driver software for new devices, knowing an OS threadbare and learn how to use the OS for any requirement, be it embedded systems, real-time systems or general purpose systems.
Once these skills are mastered , Nothing can stop you to grab a thrilling job and you can do just about anything, not only in the field of embedded systems but on any core/non-core programming area as well.
So look out, understand what you need to learn and then start learning
Become deserving and make a strong career, Cheers.!!!!!!!!!!!!!