Job Title: Embedded C Developer
Location: Montreal, Canada
Job Type: Full-Time
Position Summary
We are seeking an experienced Embedded C Developer with strong Linux expertise to design, develop, and maintain embedded software solutions for complex systems. The ideal candidate will have hands-on experience in Embedded C programming and Linux-based embedded platforms, including device driver development, system programming, and hardware-software integration.
Key Responsibilities
• Design, develop, and maintain embedded software using C for Linux-based systems.
• Develop and debug device drivers in Linux (kernel space and user space).
• Work closely with hardware teams for board bring-up and hardware-software integration.
• Develop and maintain BSP (Board Support Package) for embedded platforms.
• Implement communication protocols such as SPI, I2C, UART, CAN, USB, and Ethernet.
• Perform root cause analysis and debugging using tools such as GDB, Valgrind, and Trace tools.
• Optimize system performance, memory utilization, and power management.
• Customize and configure Linux kernel and device tree.
• Participate in system architecture discussions and technical reviews.
• Prepare technical documentation including design documents, test plans, and reports.
• Support system validation, integration, and field issue resolution.
Required Qualifications
• Bachelor’s degree in Electronics Engineering, Computer Science, Electrical Engineering, or related field.
• 4–8 years of experience in Embedded C development.
• Strong proficiency in C programming for embedded systems.
• Solid experience working with Embedded Linux systems.
• Hands-on experience in Linux kernel development and device driver development.
• Experience in Linux system programming (IPC, sockets, multi-threading, memory management).
• Experience with cross-compilation tools and build systems (Yocto, Buildroot).
• Familiarity with version control systems such as Git.
• Strong debugging skills in Linux environment.