Job Role: Embedded Engineer
Location: Ottawa, Canada
Job Type: Full-Time
Job Summary:
We are seeking a highly skilled Embedded Linux Software Engineer with hands-on experience in low-level Linux development, hardware bring-up, and driver/kernel module development. The ideal candidate will possess strong expertise in Linux kernel internals, device drivers, and hardware-software integration for ARM-based SoCs, particularly in complex embedded environments.
Key Responsibilities:
- Develop embedded software in Linux and U-Boot for custom hardware platforms.
- Perform board bring-up for new hardware prototypes.
- Interface with hardware using I2C, SPI, UART, CAN, I C Bus, PCIe, NVMe, NOR Flash, DDR, EEPROM, GPIO, and USB.
- Configure and manage Linux kernel, root filesystem (RootFS), device trees, and systemd.
- Design and implement Linux kernel modules and device drivers.
- Work with Yocto build systems, manage builds using GitLab.
- Write applications and scripts using C, C++, Go, Python, and Bash scripting.
- Apply knowledge of multi-threading and inter-process communication (IPC) for system performance and reliability.
- Collaborate with system architects to design complex embedded systems and write detailed technical documentation and specifications.
Mandatory Skills:
- Proven experience in embedded Linux development (U-Boot, kernel, drivers)
- Proficiency in C/C++, Go, Python, and Linux shell scripting
- Strong hands-on experience in board bring-up and debugging
- Expertise in interfacing with various hardware peripherals and buses
- Linux system configuration, including kernel, RootFS, device tree, systemd
- Experience in writing new Linux kernel modules and drivers
- Familiarity with build systems (Yocto) and Git-based workflows
- Solid understanding of multi-threaded application development and IPC
- System-level design and technical specification writing
Preferred Skills:
- Experience with ARM-based SoCs
- Knowledge of TCP/IP networking protocols
- Experience with REST and gRPC APIs
- Familiarity with containers (e.g., Docker)
Other Requirements:
- Strong English communication skills (written and verbal)
- Ability to work independently and in cross-functional teams
- Aerospace or safety-critical development experience is a plus