- 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
- 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.
- 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
The Nordic Semiconductor Bluetooth Low Energy Controller implementation requires the following hardware peripherals.
SoC Peripheral UseResource | nRF Peripheral | # instances | Zephyr Driver Accessible | Description |
---|---|---|---|---|
Clock | NRF_CLOCK | 1 | Yes |
|
RTC [a] | NRF_RTC0 | 1 | No |
|
Timer | NRF_TIMER0 or NRF_TIMER4 [1], and NRF_TIMER1 [0] | 2 or 1 [1] | No |
|
PPI [b] | NRF_PPI | 21 channels (20 [2]), and 2 channel groups [3] | 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 |
|
[a] | Real Time Counter (RTC) |
[b] | Programmable Peripheral Interconnect (PPI) |
[c] | Distributed Programmable Peripheral Interconnect (DPPI) |
[d] | Software Interrupt (SWI) |
[e] | Random Number Generator (RNG) |
[f] | AES Electronic Codebook Mode Encryption (ECB) |
[g] | Cipher Block Chaining (CBC) - Message Authentication Code with Counter Mode encryption (CCM) |
[h] | Accelerated Address Resolver (AAR) |
[i] | General Purpose Input Output (GPIO) |
[j] | GPIO tasks and events (GPIOTE) |
[k] | Temperature sensor (TEMP) |
[l] | Universal Asynchronous Receiver Transmitter (UART) |
[m] | Interprocess Communication peripheral (IPC) |
[0] | :kconfig:option:`CONFIG_BT_CTLR_TIFS_HW` =n |
[1] | (1, 2) :kconfig:option:`CONFIG_BT_CTLR_SW_SWITCH_SINGLE_TIMER` =y |
[2] | When not using pre-defined PPI channels |
[3] | (1, 2) For software-based tIFS switching |
[4] | (1, 2) Drivers that use nRFx interfaces |
[5] | (1, 2) For nRF53x Series |