Firmware Engineer
Role : Senior Embedded Software Engineer (Firmware Engineer)
Job Type : Contract
Location : Montreal, Canada (Onsite)
JOB DESCRIPTION
As a Senior Embedded Software Developer, you will be required to design, develop and maintain firmware covering our various embedded system applications and this includes network protocols, core libraries as well as application development.
You will play a key role in defining systems architecture and mentoring junior developers.
You will design, implement, and test firmware to form optimal communications wireless networks using the extremely low power wireless transceivers developed by us.
This includes developing low power wireless sensor networks in point-to-point, star, and mesh configurations, as well as efficient point-to-point links for audio streaming applications.
The selected candidate will be responsible for developing efficient firmware to support these applications, as well as a graphical user interface for each system that allows users to control the flow of information in the wireless system.
Your Responsibilities as a Senior Embedded Software Developer
- Design, implement, test and document embedded and application software.
- Develop algorithms for communication system protocol layers and networking.
- Provide architectural and detailed designs to meet the system requirements.
- Provide technical direction and strategy to engineering development efforts for solving complex issues.
- Outline and communicates the most appropriate technical approach for business development activities.
- Maintain system software components including device drivers and applications.
- Participate in the team’s testing processes by developing protocols for unit testing, integration / regression testing, and system-level testing.
- Coach and mentor more junior Engineers.
Your Qualifications
- Bachelor in Electrical Engineering, Computer Engineering or equivalent.
- 10+ years of experience in embedded application development in C and C++.
- 7+ years of experience in low level C programming on microcontrollers / microprocessors, with advanced knowledge of MCU / CPU architectures and ecosystems.
- Full-stack system-level understanding and ability to comprehend and affect an improvement to multi-disciplinary processes of RF / PHY / L1 / L2.
- Good understanding and debug capabilities of a mixed HW / FW multi-processor PHY / L1 implementation.
- Proven grasp of complex wireless systems with strong capability to comprehend dependencies between system components and protocol layers and their interactions.
- Extensive hands-on SW programming skills for modelling and simulation of sophisticated systems from RF / PHY layer signals and channel modelling.
All the way to MAC protocol / networking simulations; corresponding proficiency with Matlab required.
- Experience with and / or knowledge of industry standards such as Bluetooth, Ultra-Wideband, GPS, and / or other wireless protocols.
- Ability to work efficiently with both Linux and Windows.
- Experience with Visual Studio Code and Eclipse IDE.
- Experience developing Board Support Packages, boot loaders, and component drivers.
- Experience with virtualization and container technologies (VMware, KVM, Docker).