Embedded Firmware Developer

FleetCarma is a Geotab company focused on driving the adoption of electric vehicles. We help the transportation sector "go green" by providing a unique connected car platform focused on helping fleets transition to and monitor electric vehicles. The automotive industry is at an exciting crossroads where traditional fuel-based powertrains are transitioning to plug-in electric, while the internet of things and cloud computing is enabling us to connect and monitor devices on a large scale. FleetCarma is growing quickly and has a front row seat to these exciting changes.

FleetCarma is looking for embedded software developers to join our hardware team. This team develops unique cellular-connected vehicle telematics devices that are used by customers around the world to monitor conventional, hybrid, and plug-in electric vehicles. We have a particular focus on building the best electric vehicle solution in the telematics industry.

As an embedded developer you will design, write, and test C (not ++) code for our telematics devices. You will work with PIC and ARM microcontrollers, flash memory, cellular modems, GPS receivers, real-time clocks, serial data peripherals, and various analog and digital sensors. You will write automotive network protocol code to retrieve and decode information from vehicles. Our devices are unique in their wide-ranging support for conventional, hybrid, fully electric, and heavy-duty vehicles, and you will learn how to use many different protocols to obtain rich data from a range of vehicle types. You will also help maintain and improve our testing tools and proceses, ensuring that new releases perform as expected.

You will also have the opportunity to work on some of our cloud components, developing processes and tools to monitor 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 include:

  • Write C to code interface with device peripherals and vehicle networks
  • Design and document libraries to support new vehicles or features
  • Write unit tests to demonstrate that new code meets requirements
  • Perform code reviews and hold our software to a high standard
  • Test features in simulated environments and on real vehicles
  • Help maintain and improve our integration testing infrastructure
  • Analyse incoming device data to verify new features or investigate a bug report
  • Help guide the on-going evolution of our firmware architecture as we scale

Must have:

  • Experience writing C code in a constrained/embedded environment
  • Familiarity with registers, interrupts, and other aspects of microcontroller development
  • Experience working with common data structures (queues, stacks, linked lists, etc.)
  • Ability to read and understand data sheets, schematics, and standards documents

Having at least some of the following qualifications is also an asset:

  • Experience with co-operative multitasking and/or pre-emptive multithreading (RTOS)
  • Driver development for peripherals like SPI, UART, I2C, CAN, ADC, etc.
  • Use lab equipment (scopes, logic analyzers, etc.) to analyze hardware performance
  • Experience delivering code within a team environment using software management and version control systems (we use JIRA and Git)
  • Knowledge of vehicle data networks and diagnostic protocols (OBD, UDS, J1939, etc.)
  • Any of C#, SQL, and Python are all assets for querying data, creating tools, etc.