Embedded Software Developer
- Edmonton, AB, Canada
Applications open in a new tab.
Job details
- Experience
- 2+ years of work experience developing and debugging embedded software or firmware in Rust, or C/C++ and a willingness to learn Rust.
- Posting language
- English
- Posted
Original job description
We're looking for a talented Embedded Software Developer to join our team!
We are a global leader creating new industrial and commercial embedded products at our Edmonton R&D centre.
Your contributions will power next-generation embedded solutions for global markets.
With significant investment in digital transformation, this is an exciting time to join us.
WHAT YOU WILL DO:
-
Research and Development: Create new products for global markets
-
Agile collaboration: Work in a dynamic Agile team delivering cutting-edge solutions.
-
Embedded Software Development: Under the guidance of senior embedded firmware developers:
-
Refine requirements with Product Management
-
Implement firmware for microcontrollers, primarily in Rust (C/C++ experience welcome), including async programming and no_std.
-
Debug and troubleshoot firmware-hardware interactions using tools like IDE’s, oscilloscopes, logic analyzers, JTAG, and GDB.
-
Participate in peer review of code for adherence to best practices, bug detection and quality improvement
-
Testing of code through unit tests, automated test systems and manual testing
-
Collaborate using GitLab, Jira, and Teams in a Windows or Linux environment (in our Edmonton office four days/week, hybrid one day/week)
YOU HAVE:
-
Bachelor’s degree in Electrical Engineering, Computer Engineering, Software Engineering, Computer Science, or equivalent experience
-
2+ years of work experience developing and debugging embedded software or firmware in Rust, or C/C++ and a willingness to learn Rust.
-
Attributes: Motivated, quick learner, able to work independently with direction
-
Bonus Skills:
-
Git proficiency
-
Python or similar scripting
-
Linux development, kernel programming, U-Boot
-
Reading datasheets and schematics
-
Electronic troubleshooting with JTAG, oscilloscopes, etc.
-
Multi-threaded programming
-
Communication protocols (RS-232, RS-485, IP, Modbus, CAN bus)
-
Bare-metal and board bring-up
-
RTOS (FreeRTOS), ARM, ESP32
-
Object-oriented design and patterns
-
Technical documentation skills
-
Strong communication and collaboration
More about this job
Responsibilities
The developer will implement firmware for microcontrollers using Rust and collaborate within an Agile team to create new industrial and commercial products. They are responsible for debugging hardware-firmware interactions and participating in peer code reviews to ensure quality.
Requirements
Candidates must hold a bachelor's degree in a relevant engineering or computer science field and possess at least two years of experience in embedded software development. Proficiency in Rust or C/C++ is required, along with the ability to work independently in a collaborative office environment.
Skills
- Rust
- C++
- Firmware development
- Microcontrollers
- Embedded software
- GitLab
- Jira
- Debugging
- Oscilloscopes
- Logic analyzers
- JTAG
- GDB
- Python
- Linux
- Communication protocols
- RTOS
Visa sponsorship
Not detected in the job text
Categories
- Software
- Engineering
- Technology
Keywords
- Embedded Software
- Firmware
- Rust
- C++
- Microcontrollers
- Agile
- GitLab
- Jira
- Debugging
- Oscilloscopes
- Logic Analyzers
- JTAG
- GDB
- Python
- Linux
- Kernel Programming
- U-Boot
- RS-232
- RS-485
- Modbus
- CAN bus
- Bare-metal
- RTOS
- FreeRTOS
- ARM
- ESP32
- Object-oriented design
- Technical documentation