Skip to content

New firmware implementation (v3.0)

Latest
Compare
Choose a tag to compare
@OrenLederman OrenLederman released this 10 Dec 15:29
· 1 commit to master since this release
2f190d1

The new implementation of the badge's firmware. Master's Thesis Michael Hopfengärtner (@MichaelHopfengaertner). It uses the Nordic Semiconductor's SDK v12.3.0 for the nRF51822 chip of the badge.

Various new techniques and methods have been developed and integrated:

  • Filesystem: The internal flash-memory of the nRF51822 and the external EEPROM were abstracted and put together to provide one "large" virtual memory with byte level access. On the basis of this virtual memory a filesystem was implemented. It separates the available memory into partitions. A partition can be configured as static or dynamic. Static means that all elements stored in the partition must have the same size. In contrast, dynamic partitions allow a variable size of the elements. In dynamic partitions, a XOR linked list is used as data structure.
  • Tinybuf: A serialization library orientated at Google's Protocol Buffers. It enables an efficient serialization of structured data and is used for storage and transmission. It supports C and Python as programming languages. By using Tinybuf, the transmission protocol between the badges and hubs can be extended and adapted easily, enabling a fast development process.
  • Time synchronization: An exponential weighted moving average filter was implemented to robustly compensate oscillator frequency drifts during the time synchronization.
  • Testing framework: A framework that allows to easily create and execute tests. Optionally, test coverage can be enabled. This allows the developer to see how good the tests are and where to add some more (unit) tests.
  • ...

The firmware has a modular and maintainable architecture. This makes it relatively easy to migrate to other platforms.

The new firmware also transmit data twice as fast as the old one, enabling each hub to support more badges.