Embedded Software Engineer - 47738 - C5
About The Role
We are seeking a highly experienced and driven Lead Embedded Software Engineer to spearhead the development of our advanced Linux-based ARM industrial gateways.
In this pivotal role, you will lead the design, implementation, and optimization of complex embedded software, ensuring exceptional performance, reliability, and security.
You will leverage your deep expertise in embedded Linux, C++ development, industrial protocols, and hardware-software integration to drive innovation and deliver cutting-edge solutions.
As a leader, you will also play a critical role in mentoring junior engineers and shaping our CI/CD initiatives, ensuring the continuous improvement of our software development lifecycle.
Responsibilities
Software Architecture and Design :
- Lead the design and architecture of robust and scalable embedded C++ software for ARM-based industrial gateways.
- Define and enforce coding standards and best practices.
- Oversee the development and maintenance of Linux-based systems using Yocto Project.
Embedded Software Development
- Develop and implement complex multithreaded applications, utilizing advanced C++ design patterns.
- Design and implement CLI/SSH-based diagnostic commands for comprehensive system health monitoring and troubleshooting.
Industrial Protocol Integration
- Lead the integration and optimization of industrial communication protocols, including CAN, Modbus RTU, Modbus TCP/IP, and SNMP.
- Peripheral Driver Development and Low-Level Integration:
- Oversee the development and implementation of drivers for embedded peripherals (I2C, SPI, UART).
- Ensure seamless hardware-software interaction and low-level system integration.
CI/CD And Agile Leadership
- Champion and drive the implementation and optimization of CI/CD pipelines using tools like Jenkins, GitLab CI, and GitHub Actions.
- Lead agile development processes, including sprint planning, code reviews, and retrospectives.
- Mentor junior engineers in CI/CD best practices.
Linux System And Application Development
- Lead the development of Linux-based systems and applications for ported SBCs.
- Drive the integration of web servers and RESTful APIs for remote management and data exchange.
Debugging, Testing, And Troubleshooting
- Lead the development and implementation of comprehensive testing strategies.
- Utilize advanced debugging tools (GDB, JTAG, serial debugging) and command-line services for efficient troubleshooting.
- Lead root cause analysis of complex software defects.
Qualifications
- Bachelor's or Master's degree in Electrical Engineering, Computer Engineering, or a related field.
- 11-13 years of extensive experience in embedded software development.
- Expert proficiency in Embedded C++ programming.
- Deep understanding of ARM-based microcontrollers and Linux-based systems (Yocto).
- Proven expertise in multithreading, IPC, and advanced C++ design patterns.
- Extensive experience with industrial communication protocols (CAN, Modbus RTU, Modbus TCP/IP, SNMP).
- Strong expertise in embedded systems architecture and low-level system integration.
- Proven leadership in implementing and optimizing CI/CD pipelines and agile development methodologies.
- Advanced proficiency in debugging and troubleshooting embedded systems.
- Strong experience with Linux application development on ported SBCs.
- Experience leading a team.
(ref:hirist.tech)