Job Description: Senior Software Engineer for Embedded Applications
Overview:
We are seeking an experienced Senior Software Engineer with a strong background in embedded systems development. The ideal candidate will be responsible for designing, developing, and optimizing embedded software for various applications, ensuring high performance, reliability, and scalability.
Key Responsibilities:
- Design & Development:
- Develop embedded software solutions for Embedded Linux with state of the art GUI.
- Implement, test, and debug software for embedded systems and applications.
- Work on low-level software components, including device drivers, BSPs (Board Support Packages), and firmware.
- Work on GLG tool kit based GUI.
- Architecture & Optimization:
- Define software architecture and interfaces for embedded systems.
- Optimize system performance in terms of speed, memory usage, and power consumption.
- Conduct code reviews to ensure code quality, performance, and adherence to coding standards.
- Collaboration:
- Collaborate with hardware teams to define system requirements and troubleshoot issues related to hardware-software integration.
- Participate in cross-functional meetings to define product roadmaps and software features.
- Testing & Debugging:
- Use advanced debugging tools and techniques to troubleshoot hardware-software interaction issues.
- Develop unit, integration, and system tests for embedded systems.
- Perform simulations and in-system debugging using tools such as JTAG, oscilloscopes, and logic analyzers.
- Documentation & Compliance:
- Prepare comprehensive documentation for system designs, software architecture, and operational workflows.
- Ensure software complies with industry standards, safety regulations, and performance metrics.
- Mentoring:
- Provide technical guidance and mentorship to junior engineers and team members.
- Innovation:
- Stay up to date with the latest industry trends and technologies to drive continuous improvement in product development.
Required Qualifications:
- Education:
- Bachelor's or Master's degree in Computer Science, Electronics Engineering, or related field.
- Experience:
- Minimum of 5-7 years of experience in embedded software development.
- Strong expertise in C/C++ for embedded systems.
- Experience with any RTOS (Real-Time Operating Systems).
- Familiarity with microcontrollers (ARM, PIC, etc.) and embedded processors.
- Familiarity with Socket Programming
- Good understanding of GLG toolkit for GUI.
Skills:
- Strong understanding of embedded system architectures and protocols (e.g., UART, SPI, I2C, CAN, Ethernet).
- Experience with version control systems (e.g., Git) and build systems (e.g., CMake, Make).
- Proficiency with debugging tools (e.g., JTAG, GDB) and hardware debugging techniques.
- Knowledge of power management techniques for embedded systems.
- Understanding of safety-critical software development (e.g., DO-178C, MIL-498, MISRA guidelines for C programming) is an advantage.
Preferred Qualifications:
- Experience in developing software for automotive, aerospace, or industrial.
- Knowledge of hardware interfaces and peripherals like ADCs, DACs, PWM, and communication protocols.
- Familiarity with modern embedded frameworks and platforms (Zephyr, Yocto, etc.).
- Experience with scripting languages such as Python or shell scripting for automation and testing.
Soft Skills:
- Strong problem-solving and analytical skills.
- Ability to work independently and in a team environment.
- Strong attention to detail and a commitment to delivering high-quality software.