Skip to main content

Firmware Notes

This page collects some notes about the host-driven RF firmware, running on the EFR32FG23 chip on the board.

  • RAIL initialization fails with custom build system
    • This is because a LDMA transfer is set up, but something gets wonky with the initialization and the destination address mode is set to decrement.
    • Most likely caused due to an ABI mismatch between the compiled RAIL library, and our code (or some headers?) compiled for the drivers, specifically the LDMA driver; current workaround is to monkeypatch the LDMA driver to never set the direction bits (thus completely ignoring the "broken" transfer struct)
  • Temperature sensor driver has cast to double
    • In TEMPDRV_GetTemp(), the 0.5 constant needs to have a f suffix to make it float, rather than double to compile with the enhanced warnings about upcasts
  • Host irq system is busted
    • There should be a separate “irq acknowledge” register, instead of making the interrupt levels be dependent on doing some action
    • Currently there’s a possible race between an irq handler and a packet receive, which wedges irq’s