Welcome to the VirtuQ Forums.


Careers in Embedded Systems Design and Programming

Rating: 2 votes, 5.00 average.

What is an Embedded System

By definition, embedded systems are application specific electronics systems embedded in larger electro-mechanical systems. Examples of such embedded systems which we encounter in day to day life are washing machine controller, microwave controller, elevator controller, digital clock, air-conditioning remote, TV remote, printers, mobile phones, engine control system etc. All of these devices are either doing very specific job or a set of specific jobs. Life is unimaginable without these devices as we are heavily dependent on these. Having so many embedded devices around us, no wonder why embedded systems design offers plenty of jobs and opportunities.

Which Companies Work in Embedded Systems

Segments Example Companies
All consumer electronics companies Samsung, LG, Philips, GE, Apple, Sony, Fujitsu, Panasonic, Nokia
Automotive and Aircraft manufacturers Toyota, GM, Ford, BMW, Boeing, Airbus
Semiconductor companies offering hardware and software Texas Instruments, ARM, Microchip, Intel, Freescale, ST Microelectronics, NXP, Infineon, CISCO
Companies providing embedded software Google (android), Samsung
Electronic design automation companies providing software tools Synopsys, Cadence, Mentor Graphics
Defense companies ISRO, DRDO, HAL, BEL
Indian companies Wipro, HCL, TCS, Tejas Networks
Other embedded application development companies Sourcebits
What are the Components of Embedded Systems

Embedded system design has the following components.


A typical embedded system is designed around embedded processors. These processors could be 8 bit microcontrollers or 16 and 32 bit embedded processors. Prominent 8 bit microcontroller manufactures are Microchip, Atmel, SiliconLabs etc.and prominent 16 and 32 bit embedded processors companies are ARM, MIPS, Freescale, Infineon, Fujitsu etc. As part of system architecture, many decisions have to be taken. Examples of these decisions are what and how many processors to be used, how to interact with the user interface, how to perform communication among various components and so on. Since these systems could be complex such as the one for a mobile phone, designers have to rely on extensive simulation and analysis to ensure correctness of the system before it comes down to board level design. Typical job functions at this level are creating the simulation platform, creating meaningful testcases, automating tests and regressions, analysis, performance and power benchmarking, visualizing benchmark results etc.

Board level design and testing

Once the architecture is decided, it must be implemented in a board. This involves designing printed circuit boards, mounting physical components such as processors, memories and peripherals on the board followed by the testing of the board for correctness.

Software development

Depending on whether the system is doing single task or multiple tasks, an operating system (OS) may or may not be required. For example, in a washing machine controller, no OS is required as it is doing just one task driven by some 8 bit microcontroller. On the other hand, in a mobile phone, multiple services around voice, data and other applications are provided. Hence an embedded operating system such as Android, Symbian etc. are required. Typically writing or customizing OS is done by a small set of experienced developers.

Since the system will be interacting through a set of peripherals such as USB port, HDMI port, touchscreens, very specific programs need to written to send instructions to these devices and read data from it. These programs are called device drivers. As there are a number of variations of peripherals, more developers will be needed to write, enhance and test the drivers. Further, device drivers may have to be integrated in the OS, strong knowledge of the OS is a must.

The bulk of the software are developed in the form of applications or apps in short. These applications can be utilities like calculator, alarm clock, notes or games or client for mails, social networking sites etc. Possibilities in the area of applications are endless and that is where the most of the job opportunities exist.

Various entry level and advanced positions are outlined as follows. These are the most common ones. There are obviously many more opportunities.

What are the Entry Level Positions

Typical entry level positions involve the following job functions.
  • Device testing
  • Board bring-up
  • Simple device drivers and testing
  • Embedded application testing
What are the skills needed for entry level jobs

At the least the following skills are needed for entry level jobs in embedded systems.

  • Bachelors in engineering/technology in computer science, electronics or similar areas
  • Sound knowledge of basics of digital systems and computer architecture
  • C Programming Language
  • Experience on working on Linux or other embedded OS
  • Problem solving
What are the advanced positions

Typical advanced level position may involve one or more of the following.

  • Design and verification of embedded processor architecture
  • Design and verification of system on chip
  • Application parallelization
  • Implementation and integration of software stack
What are the skills needed for advanced jobs

Apart from basic skills, the following may also be needed for advanced level positions.

  • Advanced C
  • Low level programming in C and analysis
  • C++
  • Linux device drivers
  • Open source models and flows
  • Board level debug and analysis
  • Interface/protocol understanding e.g. PCI, USB etc.
  • Strong domain knowledge
How can VirtuQTM help

VirtuQTM helps acquiring the above skills through various programming courses. The course on 8051 micro-controller helps in understanding the architecture and low level programming. Exposure to the assembly level programming helps a lot in writing firmware, performance analysis and programming under constraints. Apart from this, there are courses on "Unix", 'C' and 'C++'. The focus of these courses is not only to teach languages, but also software engineering and writing predictable code. So sign-up now and get started.