zephyr/tests/kernel/sleep
Peter Bigot 243ea2a1e1 tests/kernel/sleep: relax upper bound to support additional delays
Nordic platforms measure ticks in cycles of a 32 KiHz clock for which
the minimum compare delay is 2 ticks.  The test assumed an upper bound
of four ticks delay per loop iteration, resulting from alignment at
various layers.  This delay is met on Nordic for tick rates at or below
16384, but is too short for the default 32768 Hz tick rate.

Instrumentation confirms that the usleep test loop body on Nordic at 32
KiHz ticks takes 3 ticks as the optimum delay, only when a debug probe
is active.  In other circumstances it can take either 5 or 6 ticks,
depending on timer alignment and stability.

Relax the upper bound for platforms using this system timer at the
highest rate.

Closes #17965.

Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
2019-08-23 14:43:31 +02:00
..
src tests/kernel/sleep: relax upper bound to support additional delays 2019-08-23 14:43:31 +02:00
CMakeLists.txt
README.txt
prj.conf kernel: cover k_usleep() from user mode 2019-06-29 20:55:07 -07:00
testcase.yaml

README.txt

Title: cooperative thread  Sleep and Wakeup APIs

Description:

This test verifies that cooperative  sleep and wakeup APIs operate as
expected.

---------------------------------------------------------------------------

Building and Running Project:

This project outputs to the console.  It can be built and executed
on QEMU as follows:

    make run

---------------------------------------------------------------------------

Troubleshooting:

Problems caused by out-dated project information can be addressed by
issuing one of the following commands then rebuilding the project:

    make clean          # discard results of previous builds
                        # but keep existing configuration info
or
    make pristine       # discard results of previous builds
                        # and restore pre-defined configuration info

---------------------------------------------------------------------------

Sample Output:

Running test suite sleep
===================================================================
starting test - test_sleep
Kernel objects initialized
Test thread started: id = 0x00400040
Helper thread started: id = 0x00400000
Testing normal expiration of k_sleep()
Testing: test thread sleep + helper thread wakeup test
Testing: test thread sleep + isr offload wakeup test
Testing: test thread sleep + main wakeup test thread
Testing kernel k_sleep()
PASS - test_sleep
===================================================================
starting test - test_usleep
elapsed_ms = 1000
PASS - test_usleep
===================================================================
Test suite sleep succeeded
===================================================================
PROJECT EXECUTION SUCCESSFUL