Embedded Software Engineer - RTOS
A highly skilled and experienced Senior Embedded Software Engineer is sought to join our dynamic team.
You will be responsible for designing, developing, and implementing robust and efficient firmware and software for embedded systems.
Your expertise will be crucial in optimizing performance, ensuring reliability, and driving innovation in our products.
This role requires a deep understanding of embedded systems architecture, real-time operating systems, industrial communication protocols, and hardware-software interaction.
Key Responsibilities
- Embedded C/C++ programming skills will be utilized to design, develop, and debug embedded software and firmware for ARM-based microcontrollers (preferably STM32 or equivalent).
- Real-Time Operating Systems (RTOS) expertise is essential for developing and implementing applications using FreeRTOS or Zephyr, ensuring optimal performance for time-sensitive embedded applications.
- Peripheral driver development abilities are required to implement drivers for embedded peripherals such as I2C, SPI, UART, ADC, GPIO, and RTC.
- Industrial communication protocol integration skills are crucial for implementing and integrating protocols such as CAN, Modbus RTU, and Modbus TCP/IP.
- Hardware-software interaction capabilities involve collaborating with hardware engineers to understand system-level architecture and ensure seamless integration.
- Debugging and testing proficiency will be demonstrated using debugging tools, oscilloscopes, multimeters, logic analyzers, and JTAG test simulators to validate firmware components and ensure overall system reliability.
- CI/CD pipeline implementation and maintenance will be performed using tools like Jenkins, GitLab CI, and GitHub Actions to automate software build, testing, and deployment.
- Documentation and collaboration skills are essential for documenting software designs, participating in code reviews, and collaborating with team members using tools like JIRA, Confluence, and Git.
- Board bring-up and schematic understanding abilities are required to perform board bring-up for new hardware platforms and demonstrate the ability to read and understand hardware schematics.
- Lab equipment handling skills will be utilized with tools such as oscilloscopes, logic analyzers, and power supplies for debugging and testing.
Technical Skill Requirements
- Strong proficiency in Embedded C/C++ programming is mandatory.
- Extensive experience with ARM-based microcontrollers (STM32 preferred) is essential.
- Proven experience with real-time operating systems (FreeRTOS or Zephyr) is required.
- Hands-on experience with I2C, SPI, UART, ADC, GPIO, and RTC peripherals is a must.
- Strong understanding and implementation experience with industrial protocols (CAN, Modbus RTU, Modbus TCP/IP) are vital.
- Proficiency in using debugging tools and lab equipment (oscilloscopes, logic analyzers, multimeters) is necessary.
- Experience with CI/CD pipelines and tools (Jenkins, GitLab CI, GitHub Actions) is required.
- Familiarity with version control systems (Git) and project management tools (JIRA, Confluence) is essential.
- Experience with board bring up and schematic reading is mandatory.
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 Permanent, full-time position.
Preferred Skills
- Experience with Secure boot and OTA updates for embedded devices is a significant plus.
Skills Required
Arm Controller, Operating Systems, Debugging Tools, Git