Overview
Design, develop and test embedded software (firmware), FPGA and control system platforms that run on devices and directly control real-time functions of physical hardware, with module ownership, cross-functional collaboration and software integration responsibilities.
What you'll do
- Work closely with systems teams in requirements gathering and software design.
- Identify the scope of work, provide initial estimates and resources required for completion.
- Demonstrate understanding of the Agile software development lifecycle and distinguish core inputs and outputs in each cycle.
- Maintain code quality through best practices, unit testing and code quality automation.
- Seek and provide feedback on design and development.
- Make informed technology choices after due diligence and impact assessment.
- Understand product platforms, their components and the interactions between components, and develop expertise in one or more components over time.
- Write code that meets standards and delivers desired functionality using the selected technology.
- Drive design reviews, define interfaces between code modules, and apply existing technology to designs.
- Assess application performance and optimize it through design and best coding practice.
- Provide technical leadership and define, develop and evolve software in a fast-paced agile environment.
- Interact with global teams to develop consistent and synergized software for platforms.
- Actively provide inputs to improve established and new platforms.
- Design and build strong testing infrastructure to minimize dependency on hardware availability.
- Help resolve issues not defined in the framework by helping define strategies with the team.
What you'll need
- Bachelor's degree from an accredited university or college in Electronics or Computer Science Engineering, or equivalent.
- 6+ years of relevant experience in embedded control systems, with demonstrated hands-on design and development responsibilities.
- Strong programming expertise in C/C++ for embedded applications.
- Experience developing embedded software with ARM/Xilinx based SoC (System on Chip) microcontrollers and microprocessors.
- Hands-on experience with bare-metal and Real-Time Operating Systems (RTOS) and embedded software debugging.
- Strong understanding of control-system fundamentals, control-loop algorithms, and open-loop and closed-loop control systems.
- Experience using MATLAB/Simulink for control-system modelling, analysis or development.
- Working knowledge of UML or model-based software design and development concepts.
- Strong expertise in programming languages like Verilog and VHDL.
- Demonstrated expertise in delivering software solutions for embedded systems.
- Knowledge of the software development lifecycle and expertise with tools to help in software development.
- Expertise in setting up software development infrastructure, including source control (Git based tools) and quality control tools (Coverity and/or other code analysis tools).
- Ability to independently design, develop, integrate and troubleshoot.
Nice to have
- Master's degree in Electronics or Computer Science Engineering, or equivalent.
- Exposure to FPGA-based development, including Verilog or VHDL.
- Strong oral and written communication skills.
- Ability to document, plan and lead the execution of programs.
- Prior experience guiding small and medium sized teams in the delivery of complex embedded software designs.
- Experience driving agile and lean methodologies in software development.
- Experience promoting practices for developing reliable software that consistently meets design requirements.
- VxWorks experience.
Details
- Location: Bengaluru.
- Work mode: On-site.
- Relocation assistance provided.
Read the full description and apply on the company’s own careers page.