This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Bluetooth bare metal implementation without binary blob

Hello,

I have a question regarding the nRF5340 microcontroller or similar.
Usually, when programming UART, I2C or SPI bare metal, one is using interrupts, register and buffers in RAM.
Even more complex transmission channels such as ETH with the TCPIP protocol or USB can be programmed bare metal,
for example data pages are allocated in the memory and their pointers are written to the corresponding registers in the µC.
Next step is then to implement the protocol.
But is it also possible to program the bluetooth module of a Nordic Semiconductor microcontroller bare metal?
Without binary blobs, just by using registers, interrupts and internal RAM?
I understand that the next layer (protocol) can be complex. However, I would really like to recreate the Bluetooth stack with interrupts and registers. Many thanks.
  • @Waldi1 

    You can check out the ble_app_uart example. It's the quickest/easiest way to stream data over BLE.

  • That's the point with bare metal development. We do not want it simple way.

    We need a detailed description of the registers and how to initialize the module. That means which peripheral clock, which GPIOs in which order etc. Which interrupts are triggered when, how do you initialize DMA for the module.

    Understanding how the data flow is designed is also very important. You actually always understand this in the process when you read the register descriptions and examples, but it already existed before, when the developers wrote VHDL / Verilog, they had an idea of ​​how the module should work and how the interaction between PHY, registers, interrupts, DMA and memory is. Why not write it down?

    That's what bare metal is about.

Related