Embedded Software Designer

New
United States; Canada; Toronto, OntarioFull-TimeSenior
Salary not disclosed
Apply NowOpens the employer's application page

Job Details

Experience
4+ years of experience
Required Skills
GitC++

Requirements

  • 4+ years of experience developing embedded software for complex, high-reliability systems.
  • Bachelor’s degree in Computer Science, Computer Engineering, Electrical Engineering, or equivalent practical experience.
  • Strong software engineering fundamentals, including system design, debugging, testing, performance analysis, and maintainable code development.
  • Proficiency in C/C++ for embedded systems, including concurrency, interrupt handling, memory-mapped peripherals, and hardware communication interfaces such as SPI, I2C, UART, and CAN.
  • Experience developing software for embedded Linux and/or RTOS environments, including familiarity with build systems such as Yocto/OpenEmbedded and operating systems such as FreeRTOS.
  • Experience developing low-level embedded Linux components including kernel modules, device drivers, and device tree integrations.
  • Experience developing and maintaining automated test frameworks, validation tooling, or hardware/software integration test environments.
  • Strong cross-functional collaboration and communication skills.
  • Proficiency with modern software development workflows and tools, including Git-based version control and code review practices.

Responsibilities

  • Design, develop, and maintain reliable, high-quality embedded software for both spacecraft and ground-based systems supporting a growing fleet of satellites.
  • Design and implement secure communications capabilities, including encryption, authentication, and key exchange for next-generation data links.
  • Build and maintain low-level software components including device drivers, kernel modules, hardware interfaces, and platform services.
  • Develop automated tests, validation tools, and technical documentation to support robust software delivery and long-term maintainability.
  • Participate in software architecture discussions, design reviews, and code reviews to ensure software quality and system reliability.
  • Collaborate closely with cross-functional teams to define system requirements, debug complex issues, and evolve system architecture.
  • Identify performance gaps, reliability risks, and architectural shortcomings in existing systems, and drive improvements across the software stack.
  • Provide technical leadership, mentorship, and guidance to junior engineers while contributing to engineering best practices and development standards.
View Full Description & ApplyYou'll be redirected to the employer's site
View details
Apply Now