Embedded Systems Developer
SPARK Microsystems
Location: Montreal, Quebec, Canada
As an Embedded Developer within SPARK Microsystems, you will be required to develop and maintain firmware covering our various embedded system applications and this includes network protocols, core libraries as well as application development.
You will implement, and test firmware to form optimal communications wireless networks using the extremely low power wireless transceivers developed by SPARK Microsystems. 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.
Responsibilities
- Implement, test and document embedded and application software
- Develops algorithms for communication system protocol layers and networking
- Provide architectural and detailed designs to meet the system requirements
- Plans and evaluates architectural design and reviews system performance.
- Maintain system software components including device drivers, RTOS and applications
- Participate in the team’s testing processes by developing protocols for unit testing, integration/regression testing, and system-level testing
- Research and evaluate new technology applications and conduct feasibility and de-risking studies
Must have
Graduate in electrical engineering, Computer Engineering or equivalent
Technical Skills
- 5+ years of experience in embedded application development in C and C++
- 5+ years of experience in low level C programming on microcontrollers / microprocessors, with advanced knowledge of MCU / CPU architectures and ecosystems
- Extensive knowledge of dependencies between system components and protocol layers and their interactions.
- Strong experience in Graphical User Interface (GUI) development for embedded systems, using frameworks such as Qt for MCUs, or equivalent, with the ability to design efficient and user friendly interfaces for resource constrained devices
- Proven expertise with Nordic Semiconductor nRF platforms, including BLE stack development, nRF Connect SDK (Zephyr RTOS), and embedded C/C++ programming, as well as experience with nRF development and debugging tools
- Ability to work efficiently with both Linux and Windows
- Experience with Visual Studio Code and Eclipse IDE
- Experience with scripting languages such as Python
- Experience developing Board Support Packages, boot loaders, and component drivers
- Experience with virtualization and container technologies (VMware, KVM, Docker)
- Experience with Git version control systems
- Experience with software development platform such as Gitlab and Github
- Understanding of communication protocols including I2C, SPI, UART and USB
- Experience in hands-on development and debug on embedded targets using in-circuit debuggers and electronic test equipment (oscilloscope, multimeter, logic analyzer, etc)
- Experience in modern software development processes (peer reviewing, unit testing, etc)
- Experience with firmware / applications development for other wireless technologies (Bluetooth, ZigBee, etc.) is an asset
- Experience with IAR Embedded Workbench and Keil MDK an asset
- Experience in bringing a product to market is an asset
- Basic knowledge of analog/digital circuits and RF principles is an asset
- PCB design and layout experience is an asset.
Communications Skills
- Excellent oral and written communications and presentation skills (French and English)
- Ability to work effectively with a team of developers
- Ability to multi-task, set project priorities, establish task focused goals and objectives for self and show initiative
- Write clean, understandable, robust, and sustainable code tailored for embedded systems