Atmosic BLE Stack

Bluetooth has a Host Layer and Link Layer, and these layers interface via BLE standard HCI interface. Host layer support is provided by using Zephyr Open Source software. The Link Layer is also called as BLE Controller, is provided by Atmosic software.

The Link Layer software comes in a few flavors, with varying capabilities and sizes, thus offering applications choice of utilizing according to their needs and memory savings.

Additionally, Link Layer software can be utilised as a Fixed Wireless Stack or as a Statically Linked Library. Fixed Wireless Stack is programmed into a fixed address in memory during manufacturing production time, and is not field upgradable. Statically linkable library is linked along with application, and offers DFU upgrade capability. By utilizing Fixed Wireless Stack, the memory footprint required for staging the secondary upgrade application image sizing needs are less, thus offering a mechanism to save some space in space constrained environments.

Here are a few variants of the BLE Link Controller Software that are supported.

BLE stack configurations

Platform

BLE Stack

Configuration

ATM34/e

PD50

CONFIG_ATMWSTK_PD50=y

CPD200

CONFIG_ATMWSTK_CPD200=y

ATM33/e

PD50

CONFIG_ATMWSTK_PD50=y

CPD200

CONFIG_ATMWSTK_CPD200=y (see ATM33/e)

DTS_EXTRA_CPPFLAGS=”-DFIXED_ATMWSTK=CPD200”

BLE stack configurations for Sysbuild

Platform

BLE Stack

Configuration

ATM34/e

PD50

SB_CONFIG_ATMWSTK_PD50=y

CPD200

SB_CONFIG_ATMWSTK_CPD200=y

ATM33/e

PD50

SB_CONFIG_ATMWSTK_PD50=y

CPD200

SB_CONFIG_ATMWSTK_CPD200=y

PD50

Peripheral Device only configuration, that does not have a Central, Observer (scanner), Advertiser capability. This typically has these feature properties.

  • Up to 3 connectable advertisement sets

  • BLE 6.0 with channel sounding on ATM34/e; (ATM33/e BLE 5.2)

  • No LE Power Control

  • No ISO LE audio support

  • No Periodic Advertisement/sync

  • No support for CTE

  • No AoA/AoD

CPD200 for ATM34/e

In addition to peripheral, this supports central (initiate connection) and observer (scanner) functionality. This typically has these feature properties.

  • Up to 3 connectable advertisement sets

  • BLE 6.0 with channel sounding

  • LE power control

  • CTE (Constant Tone Extension)

  • Periodic Advertisement/sync

  • PAwR (Periodic Advertising with Response)

  • AoA (Angle of Arrival only; No Angle of Departure)

  • No ISO LE audio support

  • No BLE 6.0 Frame Space Update

  • No BLE 6.0 Monitoring Advertisers

CPD200 for ATM33/e

In addition to peripheral, this supports central (initiate connection) and observer (scanner) functionality. This typically has these feature properties.

  • Up to 6 connectable advertisement sets

  • BLE 5.2 feature set

  • LE power control

  • CTE (Constant Tone Extension)

  • Periodic Advertisement/sync

  • PAwR (Periodic Advertising with Response)

  • AoA/AoD (Angle of Arrival/Angle of Departure)

  • No ISO LE audio support

Platform support for different BLE Stack variations

Each platform supports only a selected set of variations:

ATM34/e

  • On ATM34xx platform, the Kconfig can automatically select the appropriate BLE stack flavor based on the CONFIG_BT_* settings in the application’s prj.conf file.

  • Only statically linkable libraries are supported, with options for PD50 and CPD200 BLE stacks.

ATM33/e

On ATM33xx platform, it is required to know which BLE stack flavor the application is using before building. Refer to application’s CONFIG_BT_* settings in prj.conf and openair/modules/hal_atmosic/ATM33xx-5/drivers/ble/Kconfig to check which BLE stack flavor the application is requiring. If the application requires CPD200 wireless stack, since CPD200 is a fixed image for ATM33xx, additional DTSI configuration -DDTS_EXTRA_CPPFLAGS="-DFIXED_ATMWSTK=CPD200;" needs to be set to create a partition to host the ATMWSTK image when building SPE and application. For most peripheral-only applications, however, the default PD50 stack is selected and does not require additional device tree settings. The PD50 stack links as a static library providing the BLE link layer. The inclusion of the fixed ATMWSTK in device tree is shown below:

west build -p -s <APP> -b <BOARD> -d build/<APP> -- -DDTS_EXTRA_CPPFLAGS="-DFIXED_ATMWSTK=CPD200;"

If the application is using CPD200 but no DTSI configuration is given, the following build error will appear:

fixed_atmwstk.c:32:2: error: #error "-DFIXED_ATMWSTK=<FLAVOR> has to be provided to the device tree generation step rather than the normal build step."
32 | #error "-DFIXED_ATMWSTK=<FLAVOR> has to be provided to the device tree generation step rather than the normal build step."
   |  ^~~~~
  • Additionally, the use of Fixed wireless stack requires an extra step of programming the flash with elf file of the wireless stack as shown below. Flash this first before flashing the Application.

    west flash --verify --device <DEVICE_ID> --jlink --fast_load --skip-rebuild -d build/<APP> --use-elf --elf-file openair/modules/hal_atmosic/ATM33xx-5/drivers/ble/atmwstk_CPD200.elf --noreset