About the Job
Corinex is seeking an experienced Senior Embedded Software Engineer to join our engineering team in developing next-generation smart grid communication devices. In this role, you will work on low-level embedded software and platform development across the full product lifecycle, from board bring-up and BSP development to system integration, debugging, validation, and production support.
The ideal candidate has strong hands-on experience with Embedded Linux, C programming, Linux kernel and device drivers, BSP development, bootloaders, and hardware bring-up. You will work closely with hardware, firmware, networking, and test teams to develop reliable and high-performance embedded platforms for our smart grid communication products.
This is a hands-on engineering role suited for someone comfortable working close to the hardware, debugging complex system-level issues, and taking ownership of embedded platforms from initial board bring-up through production deployment.
Duties & Responsibilities
- Design, develop, integrate, and maintain embedded software for Linux-based communication devices.
- Develop and maintain Board Support Packages (BSPs), platform software, and low-level firmware components.
- Perform new board bring-up, hardware-software integration, and system-level debugging.
- Develop, configure, and maintain Linux kernel components and device drivers.
- Configure and maintain U-Boot, bootloaders, Device Tree (DTS/DTB), and Linux kernel configurations.
- Debug hardware and embedded software using tools and interfaces such as JTAG, UART/serial console, GDB, and OpenOCD.
- Investigate and resolve system-level issues involving hardware, firmware, kernel, drivers, and networking.
- Work with embedded interfaces and peripherals including SPI, I²C, GPIO, UART, and Ethernet.
- Support embedded networking functionality, including troubleshooting Ethernet, VLAN/bridge configuration, IP addressing and routing, TCP/UDP, multicast, and network management protocols.
- Develop and maintain Embedded Linux builds using technologies such as Yocto Project, OpenEmbedded, and BitBake.
- Collaborate closely with hardware engineers during schematic review, board validation, and product bring-up.
- Perform structured root-cause analysis and troubleshoot complex hardware-software integration issues.
- Participate in system architecture and technical design discussions.
- Develop scripts and automation tools to support build, validation, flashing, testing, and manufacturing processes.
- Contribute to CI/CD pipelines and automated hardware or firmware testing.
- Conduct code reviews and contribute to engineering best practices, coding standards, and technical documentation.
- Support manufacturing, factory flashing, recovery tooling, and production testing when required.
- Mentor junior engineers and provide technical guidance on embedded software development and debugging.
Qualifications
- Bachelor's or Master's degree in Electrical Engineering, Computer Engineering, Computer Science, or a related technical field.
- 5+ years of professional experience in embedded software, firmware, or Embedded Linux development.
- Strong programming experience in C, with solid understanding of low-level programming concepts.
- Strong hands-on experience developing software for Embedded Linux systems.
- Experience with Linux kernel development, BSP development, and/or Linux device drivers.
- Proven experience with board bring-up and hardware-software integration.
- Hands-on experience with U-Boot or other bootloaders and Device Tree configuration.
- Strong experience debugging embedded systems through UART/serial console and JTAG.
- Experience working directly with hardware, schematics, processors, peripherals, and board-level interfaces.
- Strong understanding of embedded communication interfaces such as SPI, I²C, UART, GPIO, and Ethernet.
- Strong troubleshooting skills and ability to perform structured root-cause analysis across hardware and software layers.
- Proficiency with Git-based version control and modern software development practices.
Nice to Have
- Experience with Yocto Project, OpenEmbedded, and/or BitBake.
- Experience with Ethernet or networking driver development.
- Strong understanding of networking concepts including TCP/IP, UDP, VLANs, bridges, routing, multicast, and network management protocols.
- Experience using OpenOCD, GDB, or similar low-level debugging tools.
- Experience with factory flashing, firmware recovery, and production tooling.
- Experience scripting in Python or Shell.
- Experience with CI/CD and automated hardware or firmware testing.
- Experience supporting manufacturing or production test environments.
- Experience with C++, bare-metal firmware, or RTOS-based systems.
- Experience with embedded communication, telecommunications, networking equipment, industrial networking, or smart grid technologies is an asset.