Linux Audio

Check our new training course

Embedded Linux Audio

Check our new training course
with Creative Commons CC-BY-SA
lecture materials

Bootlin logo

Elixir Cross Referencer

Loading...
# SPDX-License-Identifier: Apache-2.0
# Copyright (c) 2022 Intel Corporation

mainmenu "Timer Behavior Test"

config SYS_CLOCK_TICKS_PER_SEC
	default 8192 if NRF_RTC_TIMER && TICKLESS_KERNEL

source "Kconfig.zephyr"

config TIMER_TEST_SAMPLES
	int "The number of timer samples to gather for statistics"
	default 1000 if (SRAM_SIZE < 24)
	default 2000 if (SRAM_SIZE < 32)
	default 3000 if (SRAM_SIZE < 48)
	default 5000 if (SRAM_SIZE < 64)
	default 7000 if (SRAM_SIZE < 96)
	default 10000

config TIMER_TEST_PERIOD
	int "The number of microseconds to for the timer period"
	default 1000

config TIMER_TEST_MAX_STDDEV
	int "Maximum standard deviation in microseconds allowed"
	default 10

config TIMER_TEST_MAX_DRIFT
	int "Maximum drift in microseconds allowed (should be about 1 period allowance)"
	default 1000

config TIMER_TEST_PERIOD_MAX_DRIFT_PERCENT
	int "Maximum drift percentage for the timer period"
	# Use 13% on nRF platforms using the RTC timer because one tick there is
	# ~122 us (see SYS_CLOCK_TICKS_PER_SEC configuration above) and one tick
	# difference in the test period is nothing unusual (it can happen for
	# example if a new tick elapses right after the kernel gets the number
	# of elapsed ticks when scheduling a new timeout but before the timer
	# driver sets up that timeout).
	default 13 if NRF_RTC_TIMER && TICKLESS_KERNEL
	default 10
	help
	  A value of 10 means 10%.

config TIMER_EXTERNAL_TEST
	bool "Perform test using an external tool"
	help
	  Toggles a GPIO pin, on every period, that can be used by an external
	  tool (such as a logic analyzer) to gather timing data. A pytest harness
	  is used to get the data collected by the tool and evaluate it.

if TIMER_EXTERNAL_TEST

config TIMER_EXTERNAL_TEST_MAX_DRIFT_PPM
	int "Maximum drift in PPM for tests using external tool"
	default 4500
	help
	  Parts Per Million of allowed drift when using an external tool
	  connected to a GPIO pin is used to measure time behaviour.

config TIMER_EXTERNAL_TEST_PERIOD_MAX_DRIFT_PPM
	int "Maximum timer period drift in PPM for tests using external tool"
	default 100000
	help
	  Parts Per Million of allowed period drift when using an external tool
	  connected to a GPIO pin is used to measure time behaviour.

config TIMER_EXTERNAL_TEST_SYNC_DELAY
	int "Delay, in seconds, between tests, so that external tool can be ready"
	default 3

endif # TIMER_EXTERNAL_TEST