zephyr/drivers/timer
Carles Cufi ca0951d42d drivers: timer: Optimize RTC driver and prevent past events
The nRF RTC driver, which is used a system clock driver due to the lack
of SysTick hardware on the SoC, was using too much CPU time in its
_timer_idle_exit() implementation due to the use of 64-bit arithmetical
operations. This was causing the ISR wrapper to add excessive latency to
critical interrupts, causing BLE controller asserts.
This patch addresses the issue by using exclusively RTC ticks instead of
OS ticks, thus avoiding the necessity to convert during
_timer_idle_exit() calls, which are the most critical to interrupt
latency.

In addition the driver is now able to detect setting tick events in the
past due to it being interrupted by a higher priority context, and will
reschedule and trigger the ISR at the same time.

Change-id: I56a3be96b9fdd554c3650012d647af2f0415eb8a
Signed-off-by: Vinayak Chettimada <vinayak.kariappa.chettimada@nordicsemi.no>
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2016-12-16 12:51:15 +00:00
..
Kconfig drivers: timer: nRF SoC Series RTC system clock implementation 2016-11-27 19:39:27 +00:00
Makefile drivers: timers: remove unneeded include path addition 2016-12-10 02:15:49 +00:00
altera_avalon_timer.c drivers: Remove legacy nanokernel.h include 2016-12-04 14:59:37 -06:00
arcv2_timer0.c arcv2_timer0: Add suspend and resume support 2016-12-15 12:49:32 +00:00
cortex_m_systick.c drivers: Remove legacy nanokernel.h include 2016-12-04 14:59:37 -06:00
cortex_m_systick_gdb.S
hpet.c drivers: Remove legacy nanokernel.h include 2016-12-04 14:59:37 -06:00
loapic_timer.c drivers: Remove legacy nanokernel.h include 2016-12-04 14:59:37 -06:00
nrf_rtc_timer.c drivers: timer: Optimize RTC driver and prevent past events 2016-12-16 12:51:15 +00:00
sys_clock_init.c drivers: Remove legacy nanokernel.h include 2016-12-04 14:59:37 -06:00