meta data for this page
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| sw:zephyr:hciuart [2025/05/03 12:40] – niziak | sw:zephyr:hciuart [2025/05/03 20:56] (current) – niziak | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== hciuart ====== | ====== hciuart ====== | ||
| - | ===== ===== | + | ===== |
| < | < | ||
| Line 19: | Line 19: | ||
| rtt:~$ [00: | rtt:~$ [00: | ||
| </ | </ | ||
| + | |||
| + | <file c zephyr/ | ||
| + | #define EVENT_OVERHEAD_PREEMPT_US | ||
| + | #define EVENT_OVERHEAD_PREEMPT_MIN_US 0 | ||
| + | |||
| + | #if defined(CONFIG_BT_CTLR_XTAL_ADVANCED) && (EVENT_OVERHEAD_PREEMPT_US <= EVENT_OVERHEAD_PREEMPT_MIN_US) | ||
| + | uint32_t overhead; | ||
| + | |||
| + | overhead = lll_preempt_calc(ull, | ||
| + | /* check if preempt to start has changed */ | ||
| + | if (overhead) { | ||
| + | LL_ASSERT_OVERHEAD(overhead); | ||
| + | |||
| + | radio_isr_set(lll_isr_abort, | ||
| + | radio_disable(); | ||
| + | |||
| + | return -ECANCELED; | ||
| + | } | ||
| + | #endif /* CONFIG_BT_CTLR_XTAL_ADVANCED */ | ||
| + | |||
| + | </ | ||
| + | |||
| + | <file c zephyr/ | ||
| + | #if defined(CONFIG_BT_CTLR_ASSERT_OVERHEAD_START) | ||
| + | #define LL_ASSERT_OVERHEAD(overhead) \ | ||
| + | LL_ASSERT_MSG(false, | ||
| + | __func__, HAL_TICKER_TICKS_TO_US(overhead)); | ||
| + | #else /* !CONFIG_BT_CTLR_ASSERT_OVERHEAD_START */ | ||
| + | #define LL_ASSERT_OVERHEAD(overhead) ARG_UNUSED(overhead) | ||
| + | #endif /* !CONFIG_BT_CTLR_ASSERT_OVERHEAD_START */ | ||
| + | </ | ||
| + | |||
| + | <file kconfig zephyr/ | ||
| + | config BT_CTLR_ASSERT_OVERHEAD_START | ||
| + | bool " | ||
| + | default y | ||
| + | help | ||
| + | Assert on increased Radio Event Prepare callback latencies due to | ||
| + | CPU usage overheads in the Controller implementation. | ||
| + | |||
| + | Disabling this option permits the Controller to gracefully skip radio | ||
| + | events that are delayed due to CPU usage latencies; as long as the | ||
| + | radio event skips are not for every consecutive radio event interval, | ||
| + | otherwise leading to remote supervision timeout and possible missing | ||
| + | local disconnect events. | ||
| + | </ | ||
| + | |||
| + | Similar reports: | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | Workaround / fixes: | ||
| + | * reduce CPU usage: | ||
| + | * disable packet hexdump to RTT | ||
| + | * disable BT debug logs | ||
| + | * lower all NRF peripherial IRQ prio to 5 (override.dtsi) | ||
| + | * set radio IRQ priority to 0 (dts) | ||
| + | |||
| ===== Out-of-order packet arrived ===== | ===== Out-of-order packet arrived ===== | ||