Embedded Systems Jobs

Embedded Systems Jobs

For embedded systems engineers

Silicon Labs
Montreal, Quebec
Senior Embedded Software Developer (Développeur de logiciel embarqué sénior)
Full-time

We are Silicon Labs. We are the leading provider of silicon, software, and solutions for a smarter, more connected world.


We hire the most innovative talent in the world to solve the industry’s toughest problems, providing our customers with significant advantages in performance, energy savings, connectivity and design simplicity. Silicon Labs’ software and mixed signal engineering teams create solutions for customers in diverse markets including the Internet of Things (IoT), internet infrastructure, TV tuners, as well as automotive and consumer radios. Our solutions are in products from the market leaders in home automation, electric vehicles, green technology, smart TVs, and home voice control automation. We take pride in our products and in our people, and that’s one of the many reasons we continue to be awarded Most Respected Public Semiconductor Company by the Global Semiconductor Alliance. Silicon Labs has a track record of multiple industry firsts and of transforming and disrupting large and diversified markets. Our Engineers are at the forefront of that success!


The Team:


Silicon Labs is looking for a senior embedded software developer to work in its Montreal team. As part of our IoT Platform team, you will help create and extend the code that presents a consistent, well-structured, well-documented, high-quality interface to the various peripherals of our wireless chips. This software is then delivered to our various customers as part of Silicon Labs’ Gecko SDK, provided with any of our 32-bits micro-controllers. The Montreal team’s mandate is to provide low-level drivers for peripherals such as SPI, UART, I2C; higher-level services such as management for Power, Clock or Memory and support for other components such as the Micrium OS Kernel, a real-time operating system, or stacks such as File System, TCP/IP, CAN/CANopen or USB.


You will be part of a highly-skilled and tight-knit team where everyone can have significant impact on the end product. Good collaboration, room for learning and growing as well as knowledge sharing and great exchanges are also part of the Montreal team’s DNA. We strive to strike a good work/life balance and make our environment welcoming and fun, so we seek someone whose technical skills are matched by their interpersonal skills.


Responsibilities:


  • Design, implement, and debug system startup code, peripheral drivers, services, communication stacks, bootloaders, system test, and verification programs.
  • Collaborate with circuit and chip design teams to specify and verify new designs.
  • Contribute to improvements to testing infrastructure, validation process, and code reliability.
  • Tune code for optimal resource utilization, reliability, performance, and energy efficiency.
  • Provide expert support to other teams where code interfaces with other layers.
  • Interact with product and project managers to understand and take technical leadership of new features.
  • Uphold a high standard of software quality.

Required Skills:


  • Background in developing and debugging resource-constrained, real-time, embedded systems.
  • Strong C language skills.
  • Experience in design and implementation of peripheral (SPI, I2C, UART, etc.) drivers in C.
  • Ability and desire to contribute new ideas, build consensus, and drive tasks to completion.
  • Able to work autonomously while being rigorous and attentive to details.
  • Talent for clearly communicating challenging technical subject matter.
  • Mental agility to quickly understand new ideas in novel domains.
  • 5+ years of experience in embedded software development.
  • Fluent in both French and English.
  • Degree in Electrical Engineering, Informatics Engineering, Computer Science, or similar.

Desired Skills:


  • Knowledge of ARM architecture and embedded compilers.
  • Understanding of hardware vs. software tradeoffs.
  • Experience specifying hardware requirements and working with hardware engineers.
  • Experience using both simulations and hardware testing.
  • Knowledge of Python and/or assembly.
  • Experience in an Agile environment.
  • Experience with network and wireless technologies (IP, Bluetooth, Wi-Fi).
  • Experience with hardware description language is a plus.

Benefits:


  • Flexible work week
  • Highly competitive salary
  • Employee profit sharing
  • RRSP contribution match
  • Equity Rewards (stock units)
  • Insurance plans
  • Paid volunteer days
  • Free coffee & snacks
  • Lunch and learn
  • Monthly company updates with our CEO

We are an equal opportunity employer and value diversity at our company. We do not discriminate on the basis of race, religion, color, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status.


--------------------------------------------


Nous sommes Silicon Labs. Nous sommes à l’avant-garde des technologies permettant d’offrir les circuits intégrés, les logiciels et les solutions nécessaires à un monde plus intelligent, un monde plus connecté!


Nous recrutons les talents les plus innovateurs au monde pour résoudre les problèmes les plus pointus de l’industrie, fournissant ainsi à nos clients un avantage compétitif au niveau de la performance, des économies d’énergie, de la connectivité et de la simplicité. Les équipes de design de Silicon Labs créent des solutions pour des clients dans divers marchés tel l’Internet des objets (Internet of Things, IoT), les infrastructures internet, l’industrie automobile et les technologies sans-fil. Nos solutions se retrouvent dans des produits phares de marchés tels l’automatisation résidentielle, les véhicules électriques, les technologies vertes, les téléviseurs intelligents et la domotique avec contrôle vocal. Nous sommes fiers de nos produits et de nos employés et c’est une des raisons qui explique que nous recevions année après année le prix de « Compagnie publique de semi-conducteurs la plus respectée » (Most Respected Public Semiconductor Company) par la Global Semiconductor Alliance. Silicon Labs a souvent fait figure de pionnier dans le domaine de la communication sans-fil et parvient à transformer et à percer plusieurs marchés de tailles variées. Nos développeurs, ingénieurs et concepteurs sont les principaux piliers de ce succès!


Description du poste


Silicon Labs est à la recherche d’un développeur de logiciel embarqué sénior pour faire partie de son équipe de Montréal. En tant que membre de l’équipe de Plateforme IoT, vous contribuerez à créer et à améliorer du logiciel de qualité conçu pour présenter une interface structurée, bien documentée et facile à utiliser pour les divers périphériques de nos microcontrôleurs. Ce code est destiné à faire partie de la Gecko SDK de Silicon Labs et à être offert aux clients de Silicon Labs qui utilisent nos microcontrôleurs 32-bits. Le mandat de l’équipe de Montréal est de créer et maintenir des pilotes pour périphériques bas niveau tels que SPI, UART et I2C; des services logiciels assurant la gestion efficace de l’énergie, des horloges ou de la mémoire ainsi que des composantes tels le Micrium OS Kernel, un système d’exploitation temps réel, un système de fichiers ou des modules assurant la communication via TCP/IP, CAN/CANopen ou USB.


Vous ferez partie d’une équipe tissée serrée et hautement qualifiée où tout le monde peut avoir un impact significatif sur le produit fini ainsi qu’un niveau de responsabilité élevé durant tout le processus de développement.


Une bonne collaboration, des possibilités d’apprentissage et de croissance ainsi que le partage de connaissances et des échanges intéressants sont parti intégrante de l’ADN de l’équipe de Montréal. Nous désirons conserver un bon équilibre travail-vie personnelle et nous nous efforçons de rendre notre environnement de travail accueillant et amusant, c’est pourquoi nous cherchons quelqu’un qui a d’aussi bonnes habiletés interpersonnelles que techniques.


Responsabilités


  • Créer, implémenter et déboguer du code de démarrage, de pilotes de périphériques, de sécurité, de protocoles ainsi que des systèmes de test et de validation.
  • Collaborer à la spécification de nouveaux designs avec les équipes de design de circuits intégrés.
  • Participer à améliorer l’infrastructure de test et de validation ainsi que la robustesse du code.
  • Optimiser nos modules logiciels pour la consommation de ressources, la robustesse, la performance et l’efficacité énergétique.
  • Soutenir et fournir de l’expertise aux autres équipes utilisant le code développé par l’équipe.
  • Travailler avec les managers de produits et de projets pour comprendre les contraintes et les requis et fournir un leadership technique sur de nouvelles fonctionnalités.
  • Maintenir un haut standard de qualité de nos logiciels.

Requis


  • Expérience en développement et débogage de logiciel embarqué temps-réel avec souci de performance et de ressources limitées.
  • Excellente connaissance du langage C.
  • Expérience à concevoir et implémenter des pilotes (drivers) pour différents périphériques (SPI, I2C, UART, etc.), en C.
  • Désir et capacité de contribuer de nouvelles idées, trouver des consensus et mener les tâches à terme.
  • Capacité à travailler de manière autonome tout en étant rigoureux et en ayant le souci des détails.
  • Habileté à communiquer clairement et à vulgariser des sujets techniques complexes.
  • Agilité mentale pour comprendre rapidement des nouvelles idées dans des domaines de pointe.
  • Minimum de 5 années d’expérience en développement de logiciel embarqué.
  • Maîtrise du français et de l’anglais (bilingue).
  • Baccalauréat ou maîtrise en génie électrique, génie informatique, informatique ou autre domaine connexe.

Atouts


  • Connaissance des architectures ARM (Cortex-M et autres) et des compilateurs pour l’embarqué.
  • Compréhension des interactions et des compromis entre les circuits intégrés et le logiciel.
  • Capacité et expérience à consulter et spécifier des requis reliés aux circuits intégrés ainsi qu’à interagir avec les concepteurs de matériel.
  • Expérience en tests (tests unitaires, tests d’intégration, simulation, etc.).
  • Connaissance d’autres langages de programmation tels Python ou assembleur.
  • Expérience dans un environnement Agile.
  • Expérience en réseaux et en technologies sans-fil (IP, Bluetooth, Wi-Fi, etc.).
  • Expérience avec des langages de description de circuits intégrés (Verilog, VHDL) est un atout.


Bénéfices


  • Horaire flexible
  • Salaire compétitif
  • Programme de partage de profits
  • Contributions de l’employeur au REER
  • Plan d’octroi d’actions
  • Assurances
  • Journées de bénévolat payées
  • Café et collations offerts
  • « Lunch-and-learn » (partage de connaissances et dîner)
  • Mises à jour trimestrielles avec notre CEO

Get the latest job publications.
Join our mailing list.