Career in Embedded Software Development
What is embedded software development?
An embedded system to begin with, is an electronic system built for a specific purpose which is part of a larger system or machine. An embedded system is typically divided into various levels also referred as the layers of abstraction. The bottommost layer constitutes the hardware, the level above that is the Low Level Drivers, further up is High Level Drivers, then the OS configuration and finally the topmost layer of Apps. Embedded software development involves software development at each of the layers of abstraction. It is a logic/ programme written to control various functions which are not typically thought of as computers. The target application here is a highly customizable hardware.
The job typically involves designing, developing & testing of the embedded software application using Open Source Tools or Proprietary tools.
It is essential for an embedded software engineer to have good knowledge of the hardware architecture as the role involves integration of hardware & software application which plays a crucial role in this field.
As mentioned earlier, an embedded system is divided into various layers of abstraction. It is always desired that the embedded software developer understands the bottom most layer of hardware architecture for effective design and development.
An individual also needs to perform something known as the Hardware & Software Co-Verification which is testing the hardware and software separately. Once the testing is completed separately an engineer needs to run the software on the hardware to ensure efficiency.
The role also entails programming in high level and low level languages as required for the projects. Languages may include Java, XML, Perl, Python, Shell scripting, C/C++, assembler and others.
The main challenge of the job is that a VLSI engineer seldom has a choice of being incorrect. The cost of designing, fabrication and testing is extremely high â€“ sometimes amounting to even billions of USD.
An error by the engineer will cost an organization dearly. It will not be incorrect to say that there is no room for failure in this profile. This job role is challenging and yet can be rewarding when one directly contributes towards bringing out high performance system for applications like smart-phones, medical instruments, automotive controls and defense applications.
Complexity: This arises due to the rising trend or demand of combining several functionalities into a single system.
Profiling & Partitioning: The embedded software is built on various blocks. After testing or running the system one might realize that some blocks are bottlenecks which if shifted to the hardware level might perform better. This can prove to be time consuming and thus rises the importance of correct profiling.
Decentralization: Each interface will have their own autonomous functionality and yet they need to be centrally accessible & configurable. It becomes extremely crucial to have centralized control of the distributed system.
Heterogeneity: The utilization of special purpose cores of multicore processors and making it compatible with all platforms is a challenging task.
Optimization: It consists of a cycle of designing, evaluation and designing again. It becomes a challenge cause of the time taken to build a prototype to evaluate. Once the evaluation is done, the developer needs to take care of the shortcomings and needs to redesign accordingly.
Programming Models: The model preferably needs to be generic but should have cross platform compatibility. Software code should be written which is generic but can meet performance requirements.
Migration strategies When migrating from one processor to another or from one platform to another one need to follow industry standards so that it is scalable and the code should be reusable.
B.Tech graduates from streams of engineering such as Electronics & Telecommunications, Electrical, Electronics, Instrumentation, Robotics, Mechatronics, etc.
Scope & Outlook:
Embedded software is the driving technology behind consumer applications today. The main reason for increased adoption of embedded software is its use by electronics companies for increased functionality, reduced time-to-market and reduction in costs. Going by the current scenario, the electronics hardware industry in the country is projected to increase from USD 45 billion in 2009 to USD 400 billion by 2020 (Source: Department of Electronics & Information Technology – Ministry of Communications & Information Technology, Govt. of India)
The estimated production will reach USD 104 billion by the year 2020, creating a gap of USD 296 billion in demand and production. This creates a unique opportunity for companies in the ESDM (Electronic System Design & Manufacturing) sector to look at India as their next destination to cater to the domestic Indian demand as well as act as an exports hub.
Accordingly, the Government has initiated several initiatives for the development of electronics sector in the country. The Government has recently approved National Policy on Electronics (NPE). One of the important objectives of the NPE is to achieve a turnover of about USD 400 Billion by 2020 involving investment of about USD 100 Billion and employment to around 28 million by 2020.
This includes achieving a turnover of USD 55 Billion of chip design and embedded software industry, USD 80 Billion of exports in the sector. Moreover, the policy also proposes setting up of over 200 Electronic Manufacturing Clusters. Another important objective of the policy is to significantly upscale high-end human resource creation to 2500 PhDs annually by 2020 in the sector.
Depending on the organization and the skills of the individual a fresh engineering graduate can get anywhere between Rs.2.5 Lakhs â€“ Rs. 4.0 Lakhs per annum.
Companies hiring Embedded Software Developers