Skip to content

Changes required by the ST low power ticker wrapper. #10536

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 19, 2019

Conversation

mprse
Copy link
Contributor

@mprse mprse commented May 7, 2019

Description

This PR is related to PR #10701 (Stm lp ticker low-level wrapper).

While working on the low-level ticker wrapper the following issues have been found:

  • tests-mbed_hal-sleep
  1. When STM low-level lp ticker wrapper is in use an interrupt is triggered on counter rollover. We need special handling for cases when next_match_timestamp < start_timestamp (interrupt is to be fired after the rollover). In such case after first wake-up, we need to reset interrupt and go back to sleep waiting for the valid one.

  2. On some targets like STM family boards with LPTIM enabled there is a required delay (~100 us) before we are able to reprogram LPTIM_COMPARE register back to back.
    This is handled by the low-level lp ticker wrapper which uses LPTIM_CMPOK interrupt. CMPOK fires when LPTIM_COMPARE register can be safely reprogrammed again. This means that on these platforms we have additional interrupt (CMPOK) fired always ~100 us after programming lp ticker.
    Since this interrupt wake-ups the board from the sleep we need to go to sleep after CMPOK is handled.

  • tests-mbed_drivers-lp_timeout

It has been found that Zero delay test case sometimes fails. Test case creates LowPowerTimeout object and attaches callback with timeout 0 (no timeout). This test was failing occasionally against ST low-level lp ticker wrapper. To make the test more stable, the proposition is to execute it 100 times in a loop.

  • Ticker common layer: run interrupt reschedule if the inserted event has already expired.

On some platforms, if low power ticker interrupt is set to very close value (e.g. timestamp < current tick + 3), then interrupt may not fire. This is one use case of lp ticker wrapper, but not all platforms use the wrapper. Some platforms cheat a bit and in this case, simply schedules interrupt a bit later. The problem has been found while working on the low-level lp ticker wrapper for ST boards which run lp ticker using LPTIM. These platforms have such limitation.

Failing test: tests-mbed_drivers-lp_timeout (Test Case: Zero delay)

In the test scenario, the lp ticker callback is attached with 0.0 s delay in the loop. The new events are put in the front of the lp ticker event list and interrupt reschedule is performed. Usually, the new event is already expired, interrupt fires immediately and next event from the list is then scheduled (e.g. system tick). When the next event (e.g. system tick) is very close to the current time it might be scheduled a bit later (because of lp ticker limitation). Let's assume that system tick has been delayed by 3 ticks and while inserting new zero delay event, absolute system tick time on the event list has already expired. In this case, zero delay event may be added after the expired system tick event and no reschedule is performed (because the head of the list has not changed). Interrupt also didn't fire yet since it has been delayed, so after return from attach_callback(0) we are still waiting for the delayed interrupt and zero delay callback has not been called instantly.

This may also affect other platforms which use such delays (Cypress, NORDIC, etc.).

The proposition is to add extra condition while adding an event to the event list. If the inserted event is already expired, then perform reschedule immediately.

Debug log tests-mbed_drivers-lp_timeout (Test Case: Zero delay) on NUCLEO_L073RZ:

image

Pull request type

[X] Fix
[ ] Refactor
[ ] Target update
[ ] Functionality change
[ ] Docs update
[ ] Test update
[ ] Breaking change

Reviewers

@LMESTM
@c1728p9

@ciarmcom ciarmcom requested review from a team May 7, 2019 09:00
@ciarmcom
Copy link
Member

ciarmcom commented May 7, 2019

@mprse, thank you for your changes.
@ARMmbed/mbed-os-hal @ARMmbed/mbed-os-test @ARMmbed/mbed-os-maintainers please review.

@mprse
Copy link
Contributor Author

mprse commented May 16, 2019

Added fix for STM low level lp ticker wrapper.

@adbridge
Copy link
Contributor

@ARMmbed/mbed-os-hal could we have a review please?

/* On some targets like STM family boards with LPTIM enabled there is a required delay (~100 us) before we are able to
reprogram LPTIM_COMPARE register back to back. This is handled by the low level lp ticker wrapper which uses LPTIM_CMPOK interrupt.
CMPOK fires when LPTIM_COMPARE register can be safely reprogrammed again. This means that on these platforms we have additional interrupt
(CMPOK) fired always ~100 us after programming lp ticker. Since this interrupt wake-ups the board from the sleep we need to go to sleep
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
(CMPOK) fired always ~100 us after programming lp ticker. Since this interrupt wake-ups the board from the sleep we need to go to sleep
(CMPOK) fired always ~100 us after programming lp ticker. Since this interrupt wakes up the board from the sleep we need to go to sleep

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

@LMESTM
Copy link
Contributor

LMESTM commented May 29, 2019

@mprse I think you just have a typo to fix ...

@mprse mprse force-pushed the stm_lptim_issue branch 2 times, most recently from 81edde7 to 1da436d Compare May 31, 2019 11:20
@mprse mprse changed the title tests-mbed_hal-sleep: add exception for STM LPTIM targets. Changes required by the ST low power ticker wrapper. May 31, 2019
mprse added 2 commits May 31, 2019 14:16
On some targets like STM family boards with LPTIM enabled an interrupt is triggered on counter rollover.
We need special handling for cases when next_match_timestamp < start_timestamp (interrupt is to be fired after rollover).
In such case after first wake-up we need to reset interrupt and go back to sleep waiting for the valid one.

On some targets like STM family boards with LPTIM enabled there is a required delay (~100 us) before we are able to reprogram LPTIM_COMPARE register back to back.
This is handled by the low level lp ticker wrapper which uses LPTIM_CMPOK interrupt. CMPOK fires when LPTIM_COMPARE register can be safely reprogrammed again.
This means that on these platforms we have additional interrupt (CMPOK) fired always ~100 us after programming lp ticker.
Since this interrupt wake-ups the board from the sleep we need to go to sleep after CMPOK is handled.

Background:
There is an errata in LPTIM specification that explains that CMP Flag
condition is not an exact match (COUNTER = MATCH) but rather a
comparison (COUNTER >= MATCH).

As a consequence the interrupt is firing early than expected when
programing a timestamp after the 0xFFFF wrap-around.

In order to
work-around this issue, we implement the below work-around.
In case timestamp is after the work-around, let's decide to program the
CMP value to 0xFFFF, which is the wrap-around value. There would anyway be
a wake-up at the time of wrap-around to let the OS update the system time.
When the wrap-around interrupt happen, OS will check the current time and
program again the timestamp to the proper value.
Execute test case 100 times in loop since one run is not enough to catch possible failure.
@mprse mprse force-pushed the stm_lptim_issue branch from 1da436d to 92a8677 Compare May 31, 2019 12:17
@mprse
Copy link
Contributor Author

mprse commented May 31, 2019

Updated PR name and description.

@0xc0170 0xc0170 requested review from a team and removed request for a team May 31, 2019 13:00
@0xc0170
Copy link
Contributor

0xc0170 commented May 31, 2019

I started CI meanwhile, @ARMmbed/mbed-os-hal should review

@mbed-ci
Copy link

mbed-ci commented May 31, 2019

Test run: SUCCESS

Summary: 11 of 11 test jobs passed
Build number : 1
Build artifacts

@jeromecoutant
Copy link
Collaborator

@ARMmbed/team-st-mcd

@0xc0170 0xc0170 requested a review from a team June 3, 2019 12:58
@0xc0170
Copy link
Contributor

0xc0170 commented Jun 3, 2019

@ARMmbed/team-st-mcd

Please review. These fixes are not that trivial (at least for me after reviewing changes and their commit msg - very detailed 👍 ).

Copy link
Contributor

@LMESTM LMESTM left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM and tested OK on L4 an L0 targets

CMPOK fires when LPTIM_COMPARE register can be safely reprogrammed again. During this period deep-sleep is locked.
This means that on these platforms we have additional interrupt (CMPOK) fired always ~100 us after programming lp ticker.
Since this interrupt wakes-up the board from the sleep we need to go to sleep after CMPOK is handled. */
TEST_ASSERT_TRUE(sleep_manager_can_deep_sleep_test_check());
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how is this handled in the target code? Does not need to be there - scheduler schedule sleep, deep sleep would be locked, ~100us wake up, nothing to do, goes again to sleep - this time deep sleep.

Do I understand this correctly ?

Because seeing this in the common test file raises questions if a target does nto handle this internally and how to write generic sleep handling.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because this a HAL test, there is no scheduler involved here I think
Here is how I commented the same for sleep manager test
https://github.com/ARMmbed/mbed-os/pull/10700/files#diff-5d28bad27b5517915180d28407cb8c79R125

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So with scheduler anything above HAL, we are all good and this checks are not needed - will wake up - nothing to do, goes to sleep again (causing one false wake up only).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

exactly !

We need special handling for cases when next_match_timestamp < start_timestamp (interrupt is to be fired after rollover).
In such case after first wake-up we need to reset interrupt and go back to sleep waiting for the valid one.
NOTE: Above comment (CMPOK) applies also here.*/
#if MBED_CONF_TARGET_LPTICKER_LPTIM
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why this very target specific config (_LPTIM) is here in the test? Is this documented anywhere - this "unwanted" wake up from sleep

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So in the case of CMPOK I was able to use a fact that while waiting on CMPOK, deep-sleep is locked, so I used sleep_manager_can_deep_sleep_test_check(). This is a generic solution for all targets. STM targets which have lp tricker driven by LPTIM will wait on sleep_manager_can_deep_sleep_test_check() about ~100us and for other targets, this extra delay will not be performed.

The extra interrupt on 0xFFFF is the second special case for STM targets which have lp tricker driven by LPTIM, but I couldn't find the generic solution for this case in the test. More information about this workaround can be found in the description of PR #10701:

In particular, the LP TIMER ticker cannot be programmed for a timestamp in the past, so we need to program a wake-up interrupt at the wrap-around (0xFFFF), then the next interrupt will be programmed again.

@@ -375,7 +375,7 @@ void ticker_insert_event_us(const ticker_data_t *const ticker, ticker_event_t *o
obj->next = p;

/* if prev is NULL we're at the head */
if (prev == NULL) {
if (prev == NULL || timestamp <= ticker->queue->present_time) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just noticed that this implementation is wrong. Should be something like:

    if (prev == NULL) {
        ticker->queue->head = obj;
    } else {
        prev->next = obj;
    }

    if (prev == NULL || timestamp <= ticker->queue->present_time) {
        schedule_interrupt(ticker);
    }

I will test this tomorrow and provide the fix.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

…as already expired.

On some platforms, if low power ticker interrupt is set to very close value (e.g. timestamp < current tick + 3), then interrupt may not fire. This is one use case of lp ticker wrapper, but not all platforms use the wrapper. Some platforms cheat a bit and in this case, simply schedules interrupt a bit later. The problem has been found while working on the low-level lp ticker wrapper for ST boards which run lp ticker using LPTIM. These platforms have such limitation.

Failing test: tests-mbed_drivers-lp_timeout (Test Case: Zero delay)

In the test scenarion, the lp ticker callback is attached with 0.0 s delay in the loop. The new events are put in the front of the lp ticker event list and interrupt reschedule is performed. Usually, the new event is already expired, interrupt fires immediately and next event from the list is then scheduled (e.g. system tick). When the next event (e.g. system tick) is very close to the current time it might be scheduled a bit later (because of lp ticker limitation). Let's assume that system tick has been delayed by 3 ticks and while inserting new zero delay event, absolute system tick time on the event list has already expired. In this case, zero delay event may be added after the expired system tick event and no reschedule is performed (because the head of the list has not changed). Interrupt also didn't fire yet since it has been delayed, so after return from attach_callback(0) we are still waiting for the delayed interrupt and zero delay callback has not been called instantly.

This may also affect other platforms which use such delays (Cypress, NORDIC, etc.).

The proposition is to add extra condition while adding an event to the event list. If the inserted event is already expired, then perform reschedule immediately.
@mprse mprse force-pushed the stm_lptim_issue branch from 92a8677 to 869585a Compare June 4, 2019 08:07
@mprse
Copy link
Contributor Author

mprse commented Jun 4, 2019

I have forced pushed a fix to ticker common layer change (#10536 (review)) and since some tests are skipped on CI I run a full test run for all related PRs combined together:

Results below (NUCLEO_L073RZ/GCC_ARM):

|-----------------------|---------------|------------------------------------------------------------------------------|--------|--------------------|-------------|
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-frameworks-utest-tests-unit_tests-basic_test                        | OK     | 18.8               | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-frameworks-utest-tests-unit_tests-basic_test_default                | OK     | 18.42              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-frameworks-utest-tests-unit_tests-case_async_validate               | OK     | 21.66              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-frameworks-utest-tests-unit_tests-case_control_async                | OK     | 26.53              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-frameworks-utest-tests-unit_tests-case_control_repeat               | OK     | 20.72              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-frameworks-utest-tests-unit_tests-case_selection                    | OK     | 19.01              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-frameworks-utest-tests-unit_tests-case_setup_failure                | OK     | 18.89              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-frameworks-utest-tests-unit_tests-case_teardown_failure             | OK     | 19.06              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-frameworks-utest-tests-unit_tests-control_type                      | OK     | 20.73              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-frameworks-utest-tests-unit_tests-minimal_async_scheduler           | OK     | 19.28              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-frameworks-utest-tests-unit_tests-minimal_scheduler                 | OK     | 19.97              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-frameworks-utest-tests-unit_tests-test_assertion_failure_test_setup | OK     | 18.11              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-frameworks-utest-tests-unit_tests-test_setup_case_selection_failure | OK     | 18.71              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-frameworks-utest-tests-unit_tests-test_setup_failure                | OK     | 19.5               | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-frameworks-utest-tests-unit_tests-test_skip                         | OK     | 18.63              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-storage-nvstore-tests-nvstore-functionality                         | OK     | 29.57              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-storage-tests-blockdevice-buffered_block_device                     | OK     | 19.61              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-storage-tests-blockdevice-flashsim_block_device                     | OK     | 18.45              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-storage-tests-blockdevice-general_block_device                      | OK     | 17.89              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-storage-tests-blockdevice-heap_block_device                         | OK     | 21.53              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-storage-tests-blockdevice-mbr_block_device                          | OK     | 19.61              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-storage-tests-blockdevice-util_block_device                         | OK     | 20.27              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-storage-tests-kvstore-static_tests                                  | OK     | 33.37              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | features-storage-tests-kvstore-tdbstore_whitebox                             | OK     | 20.14              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-events-queue                                                           | OK     | 27.53              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-events-timing                                                          | OK     | 80.94              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-integration-basic                                                      | OK     | 17.47              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-c_strings                                                 | OK     | 22.24              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-crc                                                       | OK     | 20.24              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-dev_null                                                  | OK     | 19.8               | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-echo                                                      | OK     | 20.15              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-flashiap                                                  | OK     | 41.12              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-generic_tests                                             | OK     | 18.87              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-lp_ticker                                                 | OK     | 26.14              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-lp_timeout                                                | OK     | 60.22              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-lp_timer                                                  | OK     | 24.92              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-race_test                                                 | OK     | 19.87              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-rtc                                                       | OK     | 34.22              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-sleep_lock                                                | OK     | 18.69              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-stl_features                                              | OK     | 20.96              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-ticker                                                    | OK     | 44.57              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-timeout                                                   | OK     | 57.37              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-timer                                                     | OK     | 27.04              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_drivers-timerevent                                                | OK     | 20.87              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_functional-callback                                               | OK     | 21.12              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_functional-callback_big                                           | OK     | 21.3               | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_functional-callback_small                                         | OK     | 20.77              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_functional-functionpointer                                        | OK     | 19.56              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-common_tickers                                                | OK     | 25.5               | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-common_tickers_freq                                           | OK     | 38.15              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-crc                                                           | OK     | 20.82              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-critical_section                                              | OK     | 18.53              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-flash                                                         | OK     | 22.08              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-gpio                                                          | OK     | 18.5               | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-lp_ticker                                                     | OK     | 18.67              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-minimum_requirements                                          | OK     | 18.42              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-mpu                                                           | OK     | 19.61              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-pinmap                                                        | OK     | 19.03              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-rtc                                                           | OK     | 62.15              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-rtc_reset                                                     | OK     | 24.43              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-rtc_time                                                      | OK     | 22.89              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-rtc_time_conv                                                 | OK     | 36.22              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-sleep                                                         | OK     | 20.16              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-sleep_manager                                                 | OK     | 20.43              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-sleep_manager_racecondition                                   | OK     | 31.76              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-stack_size_unification                                        | OK     | 19.33              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-ticker                                                        | OK     | 42.72              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-trng                                                          | OK     | 23.54              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_hal-us_ticker                                                     | OK     | 18.76              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_platform-atomic                                                   | OK     | 31.09              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_platform-circularbuffer                                           | OK     | 25.46              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_platform-critical_section                                         | OK     | 20.58              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_platform-error_handling                                           | OK     | 19.41              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_platform-filehandle                                               | OK     | 23.04              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_platform-sharedptr                                                | OK     | 19.53              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_platform-singletonptr                                             | OK     | 18.83              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_platform-stream                                                   | OK     | 20.94              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_platform-system_reset                                             | OK     | 18.77              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_platform-transaction                                              | OK     | 19.53              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbed_platform-wait_ns                                                  | OK     | 21.72              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-mbed-attributes                                              | OK     | 21.05              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-mbed-call_before_main                                        | OK     | 18.33              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-mbed-cpp                                                     | OK     | 17.69              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-mbed-div                                                     | OK     | 17.82              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-mbed-static_assert                                           | OK     | 17.95              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-rtos-mbed-basic                                              | OK     | 28.62              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-rtos-mbed-condition_variable                                 | OK     | 19.77              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-rtos-mbed-event_flags                                        | OK     | 22.54              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-rtos-mbed-heap_and_stack                                     | OK     | 18.91              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-rtos-mbed-kernel_tick_count                                  | OK     | 20.83              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-rtos-mbed-mail                                               | OK     | 24.21              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-rtos-mbed-malloc                                             | OK     | 40.32              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-rtos-mbed-memorypool                                         | OK     | 27.15              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-rtos-mbed-mutex                                              | OK     | 23.47              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-rtos-mbed-queue                                              | OK     | 22.29              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-rtos-mbed-rtostimer                                          | OK     | 20.72              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-rtos-mbed-semaphore                                          | OK     | 23.37              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-rtos-mbed-signals                                            | OK     | 25.44              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-rtos-mbed-systimer                                           | OK     | 20.44              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedmicro-rtos-mbed-threads                                            | OK     | 31.43              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedtls-multi                                                          | OK     | 20.23              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-mbedtls-selftest                                                       | OK     | 41.53              | default     |
| NUCLEO_L073RZ-GCC_ARM | NUCLEO_L073RZ | tests-network-l3ip                                                           | OK     | 19.33              | default     |
mbedgt: test suite results: 103 OK

BTW I guess that 'tests-mbed_drivers-lp_timeout is skipped on CI, because the time drift test case was unstable and sometimes fail on CI, thus CI team disabled this test. I suggest to re-enable it and disable only unstable test case for now. The idea for the future is to use FPGA test shield for timing tests instead host scripts which are unstable (communication latency).

@LMESTM
Copy link
Contributor

LMESTM commented Jun 4, 2019

@mprse thanks a lot. I will take this updated PR and start wider non reg.
Note that I've seen issues when running test cases on F4 targets, so I will actually slightly update PR #10700 and PR #10701 in order to not affect other targets than the ones with LP ticker and tickless enabled.

@adbridge
Copy link
Contributor

CI started

@mbed-ci
Copy link

mbed-ci commented Jun 18, 2019

Test run: SUCCESS

Summary: 11 of 11 test jobs passed
Build number : 2
Build artifacts

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants