meta data for this page
  •  

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
sw:zephyr:hciuart [2025/05/03 12:42] niziaksw:zephyr:hciuart [2025/05/03 20:56] (current) niziak
Line 1: Line 1:
 ====== hciuart ====== ====== hciuart ======
  
-===== =====+=====  ASSERTION FAIL lll_peripheral.c:342 =====
  
 <code> <code>
Line 21: Line 21:
  
 <file c zephyr/subsys/bluetooth/controller/ll_sw/nordic/lll/lll_peripheral.c> <file c zephyr/subsys/bluetooth/controller/ll_sw/nordic/lll/lll_peripheral.c>
 +#define EVENT_OVERHEAD_PREEMPT_US        /* if <= min, then dynamic preempt */
 +#define EVENT_OVERHEAD_PREEMPT_MIN_US 0
 +
 #if defined(CONFIG_BT_CTLR_XTAL_ADVANCED) && (EVENT_OVERHEAD_PREEMPT_US <= EVENT_OVERHEAD_PREEMPT_MIN_US) #if defined(CONFIG_BT_CTLR_XTAL_ADVANCED) && (EVENT_OVERHEAD_PREEMPT_US <= EVENT_OVERHEAD_PREEMPT_MIN_US)
  uint32_t overhead;  uint32_t overhead;
Line 37: Line 40:
  
 </file> </file>
 +
 +<file c zephyr/subsys/bluetooth/controller/hal/debug.h>
 +#if defined(CONFIG_BT_CTLR_ASSERT_OVERHEAD_START)
 +#define LL_ASSERT_OVERHEAD(overhead) \
 + LL_ASSERT_MSG(false, "%s: Actual EVENT_OVERHEAD_START_US = %u", \
 +       __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>
 +
 +<file kconfig zephyr/subsys/bluetooth/controller/Kconfig.ll_sw_split>
 +config BT_CTLR_ASSERT_OVERHEAD_START
 + bool "Assert on Prepare Latency"
 + 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.
 +</file>
 +
 +Similar reports:
 +  * [[https://github.com/zephyrproject-rtos/zephyr/issues/67868]]
 +  * [[https://github.com/zephyrproject-rtos/zephyr/pull/67725]]
 +  * [[https://github.com/zephyrproject-rtos/zephyr/issues/52887]]
 +  * [[https://devzone.nordicsemi.com/f/nordic-q-a/108989/nrf52-on-custom-board-can-receive-ble-packets-but-not-send]]
 +
 +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 =====