Embedded Software Engineer - CAN / SPI / Linux
A highly experienced Senior Embedded Software Engineer is sought to lead the development of Linux-based ARM industrial gateways.
You will be responsible for designing, implementing, and optimizing complex embedded software, focusing on performance, reliability, and security.
This role requires a deep understanding of embedded Linux, C++ development, industrial protocols, and hardware-software integration.
You will also be instrumental in driving CI/CD initiatives and ensuring the quality and efficiency of the software development lifecycle.
Key Responsibilities:
- Embedded C++ programming skills will be applied to design and develop robust embedded software for ARM-based industrial gateways.
- Linux system development proficiency is required to develop and maintain Linux-based systems using Yocto Project.
- Multithreaded application development expertise will be utilized to implement multithreaded applications and employ design patterns for maintainability and scalability.
- Diagnostic command development abilities are necessary to develop CLI/SSH-based diagnostic commands for system health monitoring and troubleshooting.
- Industrial communication protocol implementation skills are crucial for integrating protocols such as CAN, Modbus RTU, Modbus TCP/IP, and SNMP.
- Peripheral driver development expertise will be used to implement drivers for embedded peripherals such as I2C, SPI, and UART.
- Embedded systems architecture design skills are required to design and implement architectures, ensuring seamless hardware-software interaction and low-level system integration.
- CI/CD pipeline implementation and maintenance capabilities are essential, utilizing tools like Jenkins, GitLab CI, and GitHub Actions.
- Agile development process participation is expected, including sprint planning, code reviews, and testing.
- Linux application development skills will be used to develop applications for ported SBCs (e.g., Raspberry Pi, BeagleBone, NXP i.MX).
- Web server and RESTful API integration abilities are required for remote management.
- Debugging and testing skills are necessary, utilizing tools like GDB, JTAG, serial debugging, and command-line services for troubleshooting.
- Embedded systems testing strategy development will be a key responsibility.
Desired Skills (HMI Development):
- HMI development experience in designing and implementing graphical user interfaces and touchscreens using frameworks like TouchGFX, Qt, or LVGL for Embedded is highly desired.
Technical Skill Requirements:
- Strong proficiency in Embedded C++ programming is mandatory.
- Extensive experience with ARM-based microcontrollers and Linux-based systems (Yocto preferred) is required.
- Proven experience with multithreading, IPC, and design patterns is essential.
- Hands-on experience with industrial protocols including CAN, Modbus RTU, Modbus TCP/IP, and SNMP is a must.
- Strong understanding of embedded systems architecture and low-level system integration is critical.
- Experience with CI/CD pipelines and agile development methodologies is required.
- Proficiency in using debugging tools such as GDB, JTAG, and serial debugging is necessary.
- Experience with baremetal programming is a key skill.
- Experience with webserver and RESTful API integration is also required.
Education:
- A Bachelor's or Master's degree in Electrical Engineering, Computer Engineering, or a related field is required.
General Requirements:
- Employment Type: This is a full-time, permanent position.
Skills Required
C++, Embedded Systems, Restful Apis, Arm Controller, Linux Administrator, multithreaded development