Bluetooth Low Energy Controller¶
Overview¶

HCI
Host Controller Interface, Bluetooth standard
Provides Zephyr Bluetooth HCI Driver
HAL
Hardware Abstraction Layer
Vendor Specific, and Zephyr Driver usage
Ticker
Soft real time radio/resource scheduling
LL_SW
Software-based Link Layer implementation
States and roles, control procedures, packet controller
Util
Bare metal memory pool management
Queues of variable count, lockless usage
FIFO of fixed count, lockless usage
Mayfly concept based deferred ISR executions
Architecture¶
Execution Overview¶

Architecture Overview¶

Scheduling¶

Ticker¶

Upper Link Layer and Lower Link Layer¶

Scheduling Variants¶

ULL and LLL Timing¶

Event Handling¶

Scheduling Closely Spaced Events¶

Aborting Active Event¶

Cancelling Pending Event¶

Pre-emption of Active Event¶

Data Flow¶
Transmit Data Flow¶

Receive Data Flow¶

Execution Priorities¶

Event handle (0, 1) < Event preparation (2, 3) < Event/Rx done (4) < Tx request (5) < Role management (6) < Host (7).
LLL is vendor ISR, ULL is Mayfly ISR concept, Host is kernel thread.
Lower Link Layer¶
LLL Execution¶

LLL Resume¶


Bare metal utilities¶
Memory FIFO and Memory Queue¶

Mayfly¶

Mayfly are multi-instance scalable ISR execution contexts
What a Work is to a Thread, Mayfly is to an ISR
List of functions executing in ISRs
Execution priorities map to IRQ priorities
Facilitate cross execution context scheduling
Race-to-idle execution
Lock-less, bare metal
Legacy Controller¶

Bluetooth Low Energy Controller - Vendor Specific Details¶
Hardware Requirements¶
Nordic Semiconductor¶
The Nordic Semiconductor Bluetooth Low Energy Controller implementation requires the following hardware peripherals.
Resource |
nRF Peripheral |
# instances |
Zephyr Driver Accessible |
Description |
---|---|---|---|---|
Clock |
NRF_CLOCK |
1 |
Yes |
|
RTC [a] |
NRF_RTC0 |
1 |
No |
|
Timer |
2 or 1 [1] |
No |
|
|
PPI [b] |
NRF_PPI |
Yes [4] |
|
|
DPPI [c] |
NRF_DPPI |
20 channels, and 2 channel groups [3] |
Yes [4] |
|
SWI [d] |
NRF_SWI4 and NRF_SWI5, or NRF_SWI2 and NRF_SWI3 [5] |
2 |
No |
|
Radio |
NRF_RADIO |
1 |
No |
|
RNG [e] |
NRF_RNG |
1 |
Yes |
|
ECB [f] |
NRF_ECB |
1 |
No |
|
CBC-CCM [g] |
NRF_CCM |
1 |
No |
|
AAR [h] |
NRF_AAR |
1 |
No |
|
GPIO [i] |
NRF_GPIO |
2 GPIO pins for PA and LNA, 1 each |
Yes |
|
GPIOTE [j] |
NRF_GPIOTE |
1 |
Yes |
|
TEMP [k] |
NRF_TEMP |
1 |
Yes |
|
UART [l] |
NRF_UART0 |
1 |
Yes |
|
IPC [m] |
NRF_IPC [5] |
1 |
Yes |
|
Real Time Counter (RTC)
Programmable Peripheral Interconnect (PPI)
Distributed Programmable Peripheral Interconnect (DPPI)
Software Interrupt (SWI)
Random Number Generator (RNG)
AES Electronic Codebook Mode Encryption (ECB)
Cipher Block Chaining (CBC) - Message Authentication Code with Counter Mode encryption (CCM)
Accelerated Address Resolver (AAR)
General Purpose Input Output (GPIO)
GPIO tasks and events (GPIOTE)
Temperature sensor (TEMP)
Universal Asynchronous Receiver Transmitter (UART)
Interprocess Communication peripheral (IPC)