About the job
Key Skills:C, C++ in embedded Linux and Windows environments, Embedded software development and unit testing, Microcontroller-based system development and debugging, Software design using UML-based tools, Design patterns and compiler optimization techniques, Multithreading and real-time systems (RTOS), Embedded communication protocols (I2C, RS-485, RS-232, CAN), Networking protocols (TCP, UDP), Usage of in-circuit emulators (ICE) and debuggers, Google Test framework (major plus), Configuration Management, defect tracking, and requirements management, Code coverage tools and static analyzers (Lint), Visual Studio debugging (memory, thread, stack analysis), Profiling for speed and memory
Roles & Responsibilities:
Responsible for designing and developing the embedded software and reusable components, covering the complete development of the software to run in embedded/Linux environment.
Responsible for unit testing of the developed software within the provided development schedule.
Assure proper hardware/software requirement definitions of the project with internal & external customers.
Familiar with industry standards for software development, testing, and quality processes and tools.
Requirements:
Expertise in C, C++ in embedded Linux and Windows environments.
Experienced in the design and development of embedded controls software.
Excellent working knowledge in developing microcontroller-based systems and debugging techniques.
Experience in designing software using any of the design tools based on UML.
Experience in using design patterns in real-time scenarios and usage of compiler optimization techniques for memory and speed.
Experience in unit testing & software development in embedded and Windows SDK, multithreading.
Experience with embedded and serial communication protocols (I2C, RS-485, RS-232, CAN) and networking protocols (TCP, UDP).
Usage of in-circuit emulators (ICE) with debuggers.
Good exposure to real-time systems and RTOS.
Experience in Google test framework is a major plus.
Should have executed projects and worked in different phases of a complete life-cycle process.
Strong knowledge of Software Engineering concepts, Quality processes, and tools.
Familiar with Configuration Management, defect tracking, Requirements management concepts, and tools.
Analyze the requirements using the requirement tool and provide traceability.
Experience in code coverage tools.
Experience in static analyzers like Lint.
Experience in Visual Studio debugging techniques, memory analysis, thread analysis, and stack analysis.
Usage of profilers for speed and memory.
Qualifications:Bachelor's or Master's in Computer Science, Electronics, or a related field
Bachelor's or Master's in Computer Science