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.
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” |
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’sprj.conffile.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