Embedded Software Developer

FleetCarma is a growing technology company that helps the transportation sector "go green" by providing a unique connected car platform focused on electric vehicle monitoring. The automotive industry is at an exciting crossroads where traditional fuel-based powertrains are transitioning to plug-in electric and the internet of things is creeping into all aspects of daily life. FleetCarma has a front row seat to all of these exciting changes and is playing a large role in driving the adoption of plug-in vehicles across the globe.

FleetCarma is looking for an experienced embedded software developer to join our hardware team. This team is responsible for building our cellular-connected vehicle telematics devices, which are used by customers around the world to monitor conventional, hybrid, and plug-in electric vehicles.

As an embedded developer you will design, write, and test C/C++ code for the microcontroller (uC) that powers our telematics devices. You will work with flash memory, cellular modems, GPS modules, real-time clocks, analog sensors, etc. using the usual peripherals like SPI, UART, and I2C. You will write vehicle network protocol code to retrieve vehicle data (usually from a CAN network). Our devices are unique in their wide-ranging support for conventional, hybrid, fully electric, and heavy-duty vehicles, and so you will learn how to use all the standard automotive protocols (and many non-standard ones).

You will also have the opportunity to work with the server side of our system, helping us to develop tools to monitor and report on the performance and health of devices in the field. This is a great opportunity to make key contributions to a team and products that are scaling rapidly.

Key responsibilities:

  • Write code in C/C++ to interface with on-board peripherals and vehicle networks
  • Design and document new code libraries
  • Write automated unit tests for your new code
  • Perform code reviews and hold our software to a high standard
  • Test our product in simulated environments and on real vehicles
  • Analyse device data to verify features or investigate a bug report

Must have:

  • Experience writing and debugging C/C++
  • Knowledge of common data structures (queues, stacks, linked lists)
  • Familiar with programming in an embedded environment
  • A passion for writing great software

Nice to have:

  • Familiar with common peripherals like SPI, UART, I2C, or CAN
  • Multi-threaded programming using an RTOS
  • Software management and version control systems (JIRA, Git)
  • Experience working with automotive networks or wireless data devices
  • Any of C#, Java, SQL, or Python are all assets