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.
Parents
  • Hi Waldil.

    I often think the same way when I see this Microsoft style SDK bloatware with thousands of functions, structures, parameters, constants (and not to forget all those lovely and totally useless, confusing and C-code obfuscating macros) that nobody needs where you can spend a day trying to get something working that you could write yourself in much less than 1..2 hours...

    But I think what you are trying to do is not possible. As far as I understand the radio portion of the ICs is a hardware black box with another software black box called "softdevice" to interface with it. That is Nordic IP that they don't publish. I am not aware that radio register documentation is available. Maybe there is a low level access possible to the softdevice (read softdevice documentation) where you can implement the bluetooth protocol yourself. Not sure though why you'd want to do that apart from educational exercise.

    Regards,

Reply
  • Hi Waldil.

    I often think the same way when I see this Microsoft style SDK bloatware with thousands of functions, structures, parameters, constants (and not to forget all those lovely and totally useless, confusing and C-code obfuscating macros) that nobody needs where you can spend a day trying to get something working that you could write yourself in much less than 1..2 hours...

    But I think what you are trying to do is not possible. As far as I understand the radio portion of the ICs is a hardware black box with another software black box called "softdevice" to interface with it. That is Nordic IP that they don't publish. I am not aware that radio register documentation is available. Maybe there is a low level access possible to the softdevice (read softdevice documentation) where you can implement the bluetooth protocol yourself. Not sure though why you'd want to do that apart from educational exercise.

    Regards,

Children
No Data
Related