LE 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)