Industry · Position

Embedded Systems Software Developer

Period
May 2021 – May 2022 · 1 yr 1 mo
Organisation
iData Kft. (iData Telematics)
Role
Professional internship, then part-time developer alongside my studies
Location
iData Kft.Gergely utca 112/C, 1103 Budapest, Hungary
Posted

Developed ARM STM32 firmware in C++ (and tooling in Python) for GPS-based fleet tracking devices: GPS/server clock synchronisation, synchronised sensor sampling, a variable-bit-width message serialisation protocol, and on-device performance telemetry.

  • STM32 firmware for large-fleet GPS tracking
  • Variable-bit-width serialisation protocol
  • Thread run/wait-time profiling, compressed and reported to the server

My first engineering job. I joined iData through a professional internship and stayed on part-time next to the final year of my BSc. iData builds telematics for GPS-based tracking of large vehicle fleets, and I worked on the firmware of the tracking unit, an ARM STM32 microcontroller programmed in C++, with occasional Python tooling.

What I worked on

  • Clock synchronisation. Keeping the device's internal clock aligned using both GPS time and server time, so that every measurement carries a trustworthy timestamp.
  • Synchronised sampling. Time-aligned measurement of external sensor probes attached to the unit.
  • Message serialisation. A variable-bit-width serialisation protocol that packs telemetry into as few bits as possible, which matters when a large fleet of devices reports over mobile networks.
  • Performance telemetry. Measuring the run and wait times of the firmware's internal threads, compressing the results and sending them to the server, so that performance problems in the field can be seen remotely.

What stuck with me

Embedded work teaches discipline about resources and time: every byte on the wire and every millisecond of blocking shows up somewhere. It was also my first exposure to the idea that a system's timing is part of its correctness.