Job Responsibilities:
Embedded Software Development:
- Design and develop robust embedded C++ software for ARM-based industrial gateways.
- Develop and maintain Linux-based systems using Yocto Project.
- Implement multithreaded applications and effectively utilize design patterns for maintainability and scalability.
- Develop CLI/SSH-based diagnostic commands for system health monitoring and troubleshooting.
Industrial Protocol Integration:
- Implement and integrate various industrial communication protocols such as CAN, Modbus RTU, Modbus TCP/IP, and SNMP.
Peripheral Driver Development:
- Develop and implement drivers for embedded peripherals including I2C, SPI, and UART.
System Architecture and Integration:
- Design and implement comprehensive embedded systems architecture, ensuring seamless hardware-software interaction and low-level system integration.
CI/CD and Agile Development:
- Implement and maintain CI/CD pipelines utilizing tools like Jenkins, GitLab CI, and GitHub Actions.
- Actively participate in agile development processes, including sprint planning, code reviews, and testing.
Linux Application Development:
- Develop applications for ported SBCs (e.g., Raspberry Pi, BeagleBone, NXP i.MX).
- Integrate web servers and RESTful APIs for remote management solutions in embedded systems.
Debugging and Testing:
- Utilize various debugging tools (GDB, JTAG, serial debugging) and command-line services for thorough testing and troubleshooting.
- Develop and implement comprehensive testing strategies for embedded systems.
HMI Development (Desired):
- Design and implement HMIs (graphical user interfaces, touchscreens) using frameworks like TouchGFX, Qt, or LVGL for Embedded.
Qualifications:
- Bachelor's or Master's degree in Electrical Engineering, Computer Engineering, or a related field.
- 9-11 years of experience in embedded software development.
- Strong proficiency in Embedded C++ programming.
- Extensive experience with ARM-based microcontrollers and Linux-based embedded systems (Yocto preferred).
- Proven experience with multithreading, IPC (Inter-Process Communication), and design patterns.
- Hands-on implementation experience with industrial protocols (CAN, Modbus RTU, Modbus TCP/IP, SNMP).
- Strong understanding of embedded systems architecture and low-level system integration.
- Experience with CI/CD pipelines and agile development methodologies.
- Proficient in using debugging tools (GDB, JTAG, serial debugging).
- Experience with baremetal programming.
- Experience with web server and RESTful API integration in embedded systems.