Skip to content

sys/ztimer64: initial PR#16928

Merged
bergzand merged 5 commits intoRIOT-OS:masterfrom
kaspar030:ztimer64
Dec 9, 2021
Merged

sys/ztimer64: initial PR#16928
bergzand merged 5 commits intoRIOT-OS:masterfrom
kaspar030:ztimer64

Conversation

@kaspar030
Copy link
Copy Markdown
Contributor

@kaspar030 kaspar030 commented Oct 1, 2021

Contribution description

This PR contains my work on a 64bit ztimer. As discussed before, this is a new module that sits on top of ztimer(32), and uses that as backend.

Pros:

  • only users pay, compared to current ztimer_now64, which causes overhead to every ztimer user when used by a single module
  • keeps ztimer32 simpler, extra logic is here
  • ztimer64 can base on ztimer32 (with conversions, extension, ...), making ztimer64 quite a bit simpler than ztimer32

Cons:

  • duplicate list management
  • probably others

Envisioned usage:
Each ztimer64 instance needs a ztimer(32) backend clock. Initialization is simple:

ztimer64_init(ZTIMER64_MSEC, ZTIMER_MSEC);

I'd suggest mirroring the ztimer32 ones, e.g.,
there'd be ZTIMER64_MSEC, ZTIMER64_USEC, ..., with corresponding ztimer64_Xsec pseudomodules that modules/apps can depend on.
A module needing 64bit times could then:
USEMODULE += ztimer64_msec

{
  uint64_t now = ztimer64_now(ZTIMER64_MSEC);
  uint64_t target = now + VERY_LONG_DELAY;
  ztimer64_t t = { .callback=func};
  ztimer64_set_absolute(&t, target);
 // alternatively using relative stamp
  ztimer64_set(&t, VERY_LONG_DELAY);
...
}

Design choices:

  • assume 32bit backend (ztimer32)
  • assume the 64bit time never overflows
  • work with absolute time values (e.g., in timer lists..., this is different from ztimer32)

Status:

  • finalize / fix api (currently, it is the same api as ztimer32, but using absolute values.
    probably we should rename the current to be a new API using absolute targets, then re-create relative on top of that?
  • add some kind of tick so base_clock overflows don't get lost
  • TEST
  • add proper unittests using ztimer_mock. IMO, this is very important here, as the bugs will start appearing at 2**32 ticks.

Testing procedure

Issues/PRs references

@kaspar030 kaspar030 added Discussion: RFC The issue/PR is used as a discussion starting point about the item of the issue/PR Area: timers Area: timer subsystems labels Oct 1, 2021
@github-actions github-actions bot added Area: build system Area: Build system Area: sys Area: System Area: tests Area: tests and testing framework and removed Area: timers Area: timer subsystems labels Oct 1, 2021
@kaspar030
Copy link
Copy Markdown
Contributor Author

I've updated the API:

Here's a table for absolute variants:

relative version absolute version
ztimer64_set() ztimer64_set_absolute()
ztimer64_spin() ztimer64_spin_until()
ztimer64_sleep() ztimer64_sleep_until()
ztimer64_set_msg() ztimer64_set_msg_at()
ztimer64_set_wakeup() ztimer64_set_wakeup_at()
ztimer64_set_timeout_flag() ztimer64_set_timeout_flag_at()
ztimer64_msg_receive_timeout() ztimer64_msg_receive_until()
ztimer64_mutex_lock_timeout() ztimer64_mutex_lock_until()
ztimer64_rmutex_lock_timeout() ztimer64_rmutex_lock_until()

please take a look and let me know if this makes sense.

I've also implemented ztimer64_handler(), which was previously a stub. And, I've copied over and adapted ztimer's util.c, so most of the API should now actually link (and work).

The "tick" for updating base timer offset is still missing.

@kfessel
Copy link
Copy Markdown
Contributor

kfessel commented Nov 4, 2021

i would prefer all absolute be *_at easyer to remember and easier to explain (like : "u know what u learned with ztimer, for ztimer64 it is all the same but 64Bit and it as absolute variants of all/most functions that have an _at, be careful when using the absolute varinats not set them in the past and be sure to keep the clock running")

Copy link
Copy Markdown
Member

@maribu maribu left a comment

Choose a reason for hiding this comment

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

API looks good to me.

ztimer64_offset2absolute(clock, timeout));
}

#define MSG_ZTIMER64 0xc83f /**< msg type used by ztimer64_msg_receive_timeout */
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Chosen by fair dice roll?
xkcd

Image embedded from https://xkcd.com/221/ - all credits to xkcd.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

hah! someone noticed. MSG_ZTIMER was created with the define generator that's PR'ed somewhere.
I just used that value, changed a bit, and removed the comment.

@kaspar030
Copy link
Copy Markdown
Contributor Author

I've renamed ztimer_set_absolute() to ztimer_set_at() to be more in line with the other _at() functions. reduces the number of suffixes from three to two.

@kaspar030
Copy link
Copy Markdown
Contributor Author

Seems like ztimer64 comes in at roughly 500b extra:

riot/tests on  ztimer64 
❯ cd ztimer64_msg/
riot/tests/ztimer64_msg on  ztimer64 
❯ RIOT_CI_BUILD=1 BOARD=nrf52840dk make clean all -j8
Building application "tests_ztimer64_msg" for "nrf52840dk" with MCU "nrf52".

   text    data     bss     dec     hex filename
  13120     248    4540   17908    45f4 /home/kaspar/src/riot/tests/ztimer64_msg/bin/nrf52840dk/tests_ztimer64_msg.elf
riot/tests/ztimer64_msg on  ztimer64 took 2s 
❯ cd ..
riot/tests on  ztimer64 
❯ cd ztimer_msg
riot/tests/ztimer_msg on  ztimer64 
❯ RIOT_CI_BUILD=1 BOARD=nrf52840dk make clean all -j8
Building application "tests_ztimer_msg" for "nrf52840dk" with MCU "nrf52".

   text    data     bss     dec     hex filename
  12568     232    4492   17292    438c /home/kaspar/src/riot/tests/ztimer_msg/bin/nrf52840dk/tests_ztimer_msg.elf

@github-actions github-actions bot added Area: doc Area: Documentation Area: timers Area: timer subsystems labels Nov 15, 2021
@kaspar030
Copy link
Copy Markdown
Contributor Author

The "tick" is now implemented and seems to work.
I've copied and converted tests/ztimer_msg to confirm. Another commit allows setting an 32bit ztimer periph offset. That works only if the offset is <32bit, and the low-level timer is full 32bit. But it allows some "speeding up" testing. I know this needs to be mocked...

I think this is ready for review! Ideally the API from ztimer64/util.c gets hammered a bit.

@kfessel
Copy link
Copy Markdown
Contributor

kfessel commented Nov 16, 2021

I do not like that this introduces a concept of absolute time next to ztimer (which forces RIOT to keep the timers running all the time - one use of ZTIMER64_USEC will disable power-management even at times it isn't used).
I would like to have every kind of zero or _now be no part of ztimer.
I think all cases of absolute time are relative to some point in time which is either in the past (0 is at boot/init) or in the future which would give us a point in time where we can stop the timer if no user is left see #16969.

@kaspar030
Copy link
Copy Markdown
Contributor Author

(which forces RIOT to keep the timers running all the time - one use of ZTIMER64_USEC will disable power-management even at times it isn't used)

What about >49days worth of milliseconds on periph_rtt?

@kfessel
Copy link
Copy Markdown
Contributor

kfessel commented Nov 16, 2021

Having timeouts/alarm/callbacks/msg... >49days in the future does not depend on absolute time it depends on relative time being able to track more than 49 days and if no one wants to know about that, you do not need to track time (that time domain) saving energy.

@kaspar030
Copy link
Copy Markdown
Contributor Author

But there are application that would like to keep track of time, possibly synchronized over the network, for more than 49 days.

Keeping 64bit absolute time requires some wakeups. If the RTT can do 32bit, there's a wakeup every ~25 days. Is that your issue?

@maribu
Copy link
Copy Markdown
Member

maribu commented Nov 17, 2021

His is issue is that when oneoccasionally uses ZTIMER_USEC, the PLL generating the clock for the periph_timer only occasionally is forced to keep running (preventing low power modes only for brief periods of time). But with ZTIMER64_USEC the PLL would have to run constantly, despite it might be used barely.

I don't see this an issue. Other than running ZTIMER64_USEC from a synchronised clock, it will be the one with the highest clock drift. If you need a clock to measure long periods of time (why else would you want 64 bit instead of 32?), the clock with the highest drift doesn't seem to be the first choice.

We could add a check ala build system sanity check to enfore ZTIMER64_USEC not being used unconditionally in sys/ or drivers/, if this eases @kfessel's concerns.

@fjmolinas fjmolinas added this to the Release 2022.01 milestone Nov 18, 2021
@kaspar030 kaspar030 changed the title sys/ztimer64: initial PR (WIP) sys/ztimer64: initial PR Nov 22, 2021
@kaspar030 kaspar030 marked this pull request as ready for review November 22, 2021 11:06
static void _ztimer64_update(ztimer64_clock_t *clock);

/* debug aid */
void ztimer64_clock_print(const ztimer64_clock_t *clock);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

static?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is this something you want to be able to insert around?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yup, let's keep it around. :)

Copy link
Copy Markdown
Contributor

@fjmolinas fjmolinas left a comment

Choose a reason for hiding this comment

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

Some final nitpicks

@fjmolinas
Copy link
Copy Markdown
Contributor

Seems like CI complaints are basically Kconfig related, I'll take a look

@fjmolinas
Copy link
Copy Markdown
Contributor

Murdock is happy, but there are a couple of nitpicks and static checks comments remaining...

kaspar030 and others added 2 commits December 7, 2021 23:57
Co-authored-by: Francisco Molina <[email protected]>
Co-authored-by: Marian Buschsieweke <[email protected]>
@kaspar030
Copy link
Copy Markdown
Contributor Author

  • squashed

@fjmolinas
Copy link
Copy Markdown
Contributor

I ran unit tests on a series of BOARDs, all good:

Details
python ../../scripts/ci_test_all.py . --boards=ci-connected-boards --compile-target="tests-ztimer64" --applications="tests/unittests" -j7
INFO:arduino-uno:Saving toolchain
INFO:arduino-uno.tests/unittests:Board supported: True
INFO:arduino-uno.tests/unittests:Board has enough memory: True
INFO:arduino-uno.tests/unittests:Application has test: True
INFO:arduino-uno.tests/unittests:Run compilation
INFO:arduino-uno.tests/unittests:Run test
INFO:arduino-uno.tests/unittests:Run test.flash
INFO:arduino-uno.tests/unittests:Success
INFO:arduino-uno:Tests successful
INFO:arduino-zero:Saving toolchain
INFO:arduino-zero.tests/unittests:Board supported: True
INFO:arduino-zero.tests/unittests:Board has enough memory: True
INFO:arduino-zero.tests/unittests:Application has test: True
INFO:arduino-zero.tests/unittests:Run compilation
INFO:arduino-zero.tests/unittests:Run test
INFO:arduino-zero.tests/unittests:Run test.flash
INFO:arduino-zero.tests/unittests:Success
INFO:arduino-zero:Tests successful
INFO:atmega256rfr2-xpro:Saving toolchain
INFO:atmega256rfr2-xpro.tests/unittests:Board supported: True
INFO:atmega256rfr2-xpro.tests/unittests:Board has enough memory: True
INFO:atmega256rfr2-xpro.tests/unittests:Application has test: True
INFO:atmega256rfr2-xpro.tests/unittests:Run compilation
INFO:atmega256rfr2-xpro.tests/unittests:Run test
INFO:atmega256rfr2-xpro.tests/unittests:Run test.flash
INFO:atmega256rfr2-xpro.tests/unittests:Success
INFO:atmega256rfr2-xpro:Tests successful
INFO:frdm-k64f:Saving toolchain
INFO:frdm-k64f.tests/unittests:Board supported: True
INFO:frdm-k64f.tests/unittests:Board has enough memory: True
INFO:frdm-k64f.tests/unittests:Application has test: True
INFO:frdm-k64f.tests/unittests:Run compilation
INFO:frdm-k64f.tests/unittests:Run test
INFO:frdm-k64f.tests/unittests:Run test.flash
INFO:frdm-k64f.tests/unittests:Success
INFO:frdm-k64f:Tests successful
INFO:frdm-kw41z:Saving toolchain
INFO:frdm-kw41z.tests/unittests:Board supported: True
INFO:frdm-kw41z.tests/unittests:Board has enough memory: True
INFO:frdm-kw41z.tests/unittests:Application has test: True
INFO:frdm-kw41z.tests/unittests:Run compilation
INFO:frdm-kw41z.tests/unittests:Run test
INFO:frdm-kw41z.tests/unittests:Run test.flash
INFO:frdm-kw41z.tests/unittests:Success
INFO:frdm-kw41z:Tests successful
INFO:hifive1b:Saving toolchain
INFO:hifive1b.tests/unittests:Board supported: True
INFO:hifive1b.tests/unittests:Board has enough memory: True
INFO:hifive1b.tests/unittests:Application has test: True
INFO:hifive1b.tests/unittests:Run compilation
INFO:hifive1b.tests/unittests:Run test
INFO:hifive1b.tests/unittests:Run test.flash
INFO:hifive1b.tests/unittests:Success
INFO:hifive1b:Tests successful
INFO:i-nucleo-lrwan1:Saving toolchain
INFO:i-nucleo-lrwan1.tests/unittests:Board supported: True
INFO:i-nucleo-lrwan1.tests/unittests:Board has enough memory: True
INFO:i-nucleo-lrwan1.tests/unittests:Application has test: True
INFO:i-nucleo-lrwan1.tests/unittests:Run compilation
INFO:i-nucleo-lrwan1.tests/unittests:Run test
INFO:i-nucleo-lrwan1.tests/unittests:Run test.flash
INFO:i-nucleo-lrwan1.tests/unittests:Success
INFO:i-nucleo-lrwan1:Tests successful
INFO:nrf52dk:Saving toolchain
INFO:nrf52dk.tests/unittests:Board supported: True
INFO:nrf52dk.tests/unittests:Board has enough memory: True
INFO:nrf52dk.tests/unittests:Application has test: True
INFO:nrf52dk.tests/unittests:Run compilation
INFO:nrf52dk.tests/unittests:Run test
INFO:nrf52dk.tests/unittests:Run test.flash
INFO:nrf52dk.tests/unittests:Success
INFO:nrf52dk:Tests successful
INFO:nucleo-f030r8:Saving toolchain
INFO:nucleo-f030r8.tests/unittests:Board supported: True
INFO:nucleo-f030r8.tests/unittests:Board has enough memory: True
INFO:nucleo-f030r8.tests/unittests:Application has test: True
INFO:nucleo-f030r8.tests/unittests:Run compilation
INFO:nucleo-f030r8.tests/unittests:Run test
INFO:nucleo-f030r8.tests/unittests:Run test.flash
INFO:nucleo-f030r8.tests/unittests:Success
INFO:nucleo-f030r8:Tests successful
INFO:nucleo-f091rc:Saving toolchain
INFO:nucleo-f091rc.tests/unittests:Board supported: True
INFO:nucleo-f091rc.tests/unittests:Board has enough memory: True
INFO:nucleo-f091rc.tests/unittests:Application has test: True
INFO:nucleo-f091rc.tests/unittests:Run compilation
INFO:nucleo-f091rc.tests/unittests:Run test
INFO:nucleo-f091rc.tests/unittests:Run test.flash
INFO:nucleo-f091rc.tests/unittests:Success
INFO:nucleo-f091rc:Tests successful
INFO:nucleo-f103rb:Saving toolchain
INFO:nucleo-f103rb.tests/unittests:Board supported: True
INFO:nucleo-f103rb.tests/unittests:Board has enough memory: True
INFO:nucleo-f103rb.tests/unittests:Application has test: True
INFO:nucleo-f103rb.tests/unittests:Run compilation
INFO:nucleo-f103rb.tests/unittests:Run test
INFO:nucleo-f103rb.tests/unittests:Run test.flash
INFO:nucleo-f103rb.tests/unittests:Success
INFO:nucleo-f103rb:Tests successful
INFO:nucleo-f207zg:Saving toolchain
INFO:nucleo-f207zg.tests/unittests:Board supported: True
INFO:nucleo-f207zg.tests/unittests:Board has enough memory: True
INFO:nucleo-f207zg.tests/unittests:Application has test: True
INFO:nucleo-f207zg.tests/unittests:Run compilation
INFO:nucleo-f207zg.tests/unittests:Run test
INFO:nucleo-f207zg.tests/unittests:Run test.flash
INFO:nucleo-f207zg.tests/unittests:Success
INFO:nucleo-f207zg:Tests successful
INFO:nucleo-f303k8:Saving toolchain
INFO:nucleo-f303k8.tests/unittests:Board supported: True
INFO:nucleo-f303k8.tests/unittests:Board has enough memory: True
INFO:nucleo-f303k8.tests/unittests:Application has test: True
INFO:nucleo-f303k8.tests/unittests:Run compilation
INFO:nucleo-f303k8.tests/unittests:Run test
INFO:nucleo-f303k8.tests/unittests:Run test.flash
INFO:nucleo-f303k8.tests/unittests:Success
INFO:nucleo-f303k8:Tests successful
INFO:nucleo-f303re:Saving toolchain
INFO:nucleo-f303re.tests/unittests:Board supported: True
INFO:nucleo-f303re.tests/unittests:Board has enough memory: True
INFO:nucleo-f303re.tests/unittests:Application has test: True
INFO:nucleo-f303re.tests/unittests:Run compilation
INFO:nucleo-f303re.tests/unittests:Run test
INFO:nucleo-f303re.tests/unittests:Run test.flash
INFO:nucleo-f303re.tests/unittests:Success
INFO:nucleo-f303re:Tests successful
INFO:nucleo-f334r8:Saving toolchain
INFO:nucleo-f334r8.tests/unittests:Board supported: True
INFO:nucleo-f334r8.tests/unittests:Board has enough memory: True
INFO:nucleo-f334r8.tests/unittests:Application has test: True
INFO:nucleo-f334r8.tests/unittests:Run compilation
INFO:nucleo-f334r8.tests/unittests:Run test
INFO:nucleo-f334r8.tests/unittests:Run test.flash
INFO:nucleo-f334r8.tests/unittests:Success
INFO:nucleo-f334r8:Tests successful
INFO:nucleo-f767zi:Saving toolchain
INFO:nucleo-f767zi.tests/unittests:Board supported: True
INFO:nucleo-f767zi.tests/unittests:Board has enough memory: True
INFO:nucleo-f767zi.tests/unittests:Application has test: True
INFO:nucleo-f767zi.tests/unittests:Run compilation
INFO:nucleo-f767zi.tests/unittests:Run test
INFO:nucleo-f767zi.tests/unittests:Run test.flash
INFO:nucleo-f767zi.tests/unittests:Success
INFO:nucleo-f767zi:Tests successful
INFO:nucleo-g071rb:Saving toolchain
INFO:nucleo-g071rb.tests/unittests:Board supported: True
INFO:nucleo-g071rb.tests/unittests:Board has enough memory: True
INFO:nucleo-g071rb.tests/unittests:Application has test: True
INFO:nucleo-g071rb.tests/unittests:Run compilation
INFO:nucleo-g071rb.tests/unittests:Run test
INFO:nucleo-g071rb.tests/unittests:Run test.flash
INFO:nucleo-g071rb.tests/unittests:Success
INFO:nucleo-g071rb:Tests successful
INFO:nucleo-g474re:Saving toolchain
INFO:nucleo-g474re.tests/unittests:Board supported: True
INFO:nucleo-g474re.tests/unittests:Board has enough memory: True
INFO:nucleo-g474re.tests/unittests:Application has test: True
INFO:nucleo-g474re.tests/unittests:Run compilation
INFO:nucleo-g474re.tests/unittests:Run test
INFO:nucleo-g474re.tests/unittests:Run test.flash
INFO:nucleo-g474re.tests/unittests:Success
INFO:nucleo-g474re:Tests successful
INFO:nucleo-l073rz:Saving toolchain
INFO:nucleo-l073rz.tests/unittests:Board supported: True
INFO:nucleo-l073rz.tests/unittests:Board has enough memory: True
INFO:nucleo-l073rz.tests/unittests:Application has test: True
INFO:nucleo-l073rz.tests/unittests:Run compilation
INFO:nucleo-l073rz.tests/unittests:Run test
INFO:nucleo-l073rz.tests/unittests:Run test.flash
INFO:nucleo-l073rz.tests/unittests:Success
INFO:nucleo-l073rz:Tests successful
INFO:nucleo-l152re:Saving toolchain
INFO:nucleo-l152re.tests/unittests:Board supported: True
INFO:nucleo-l152re.tests/unittests:Board has enough memory: True
INFO:nucleo-l152re.tests/unittests:Application has test: True
INFO:nucleo-l152re.tests/unittests:Run compilation
INFO:nucleo-l152re.tests/unittests:Run test
INFO:nucleo-l152re.tests/unittests:Run test.flash
INFO:nucleo-l152re.tests/unittests:Success
INFO:nucleo-l152re:Tests successful
INFO:nucleo-l433rc:Saving toolchain
INFO:nucleo-l433rc.tests/unittests:Board supported: True
INFO:nucleo-l433rc.tests/unittests:Board has enough memory: True
INFO:nucleo-l433rc.tests/unittests:Application has test: True
INFO:nucleo-l433rc.tests/unittests:Run compilation
INFO:nucleo-l433rc.tests/unittests:Run test
INFO:nucleo-l433rc.tests/unittests:Run test.flash
INFO:nucleo-l433rc.tests/unittests:Success
INFO:nucleo-l433rc:Tests successful
INFO:nucleo-l452re:Saving toolchain
INFO:nucleo-l452re.tests/unittests:Board supported: True
INFO:nucleo-l452re.tests/unittests:Board has enough memory: True
INFO:nucleo-l452re.tests/unittests:Application has test: True
INFO:nucleo-l452re.tests/unittests:Run compilation
INFO:nucleo-l452re.tests/unittests:Run test
INFO:nucleo-l452re.tests/unittests:Run test.flash
INFO:nucleo-l452re.tests/unittests:Success
INFO:nucleo-l452re:Tests successful
INFO:nucleo-l496zg:Saving toolchain
INFO:nucleo-l496zg.tests/unittests:Board supported: True
INFO:nucleo-l496zg.tests/unittests:Board has enough memory: True
INFO:nucleo-l496zg.tests/unittests:Application has test: True
INFO:nucleo-l496zg.tests/unittests:Run compilation
INFO:nucleo-l496zg.tests/unittests:Run test
INFO:nucleo-l496zg.tests/unittests:Run test.flash
INFO:nucleo-l496zg.tests/unittests:Success
INFO:nucleo-l496zg:Tests successful
INFO:nucleo-l4r5zi:Saving toolchain
INFO:nucleo-l4r5zi.tests/unittests:Board supported: True
INFO:nucleo-l4r5zi.tests/unittests:Board has enough memory: True
INFO:nucleo-l4r5zi.tests/unittests:Application has test: True
INFO:nucleo-l4r5zi.tests/unittests:Run compilation
INFO:nucleo-l4r5zi.tests/unittests:Run test
INFO:nucleo-l4r5zi.tests/unittests:Run test.flash
INFO:nucleo-l4r5zi.tests/unittests:Success
INFO:nucleo-l4r5zi:Tests successful
INFO:nucleo-wl55jc:Saving toolchain
INFO:nucleo-wl55jc.tests/unittests:Board supported: True
INFO:nucleo-wl55jc.tests/unittests:Board has enough memory: True
INFO:nucleo-wl55jc.tests/unittests:Application has test: True
INFO:nucleo-wl55jc.tests/unittests:Run compilation
INFO:nucleo-wl55jc.tests/unittests:Run test
INFO:nucleo-wl55jc.tests/unittests:Run test.flash
INFO:nucleo-wl55jc.tests/unittests:Success
INFO:nucleo-wl55jc:Tests successful
INFO:openmote-b:Saving toolchain
INFO:openmote-b.tests/unittests:Board supported: True
INFO:openmote-b.tests/unittests:Board has enough memory: True
INFO:openmote-b.tests/unittests:Application has test: True
INFO:openmote-b.tests/unittests:Run compilation
INFO:openmote-b.tests/unittests:Run test
INFO:openmote-b.tests/unittests:Run test.flash
INFO:openmote-b.tests/unittests:Success
INFO:openmote-b:Tests successful
INFO:samr21-xpro:Saving toolchain
INFO:samr21-xpro.tests/unittests:Board supported: True
INFO:samr21-xpro.tests/unittests:Board has enough memory: True
INFO:samr21-xpro.tests/unittests:Application has test: True
INFO:samr21-xpro.tests/unittests:Run compilation
INFO:samr21-xpro.tests/unittests:Run test
INFO:samr21-xpro.tests/unittests:Run test.flash
INFO:samr21-xpro.tests/unittests:Success
INFO:samr21-xpro:Tests successful
INFO:slstk3402a:Saving toolchain
INFO:slstk3402a.tests/unittests:Board supported: True
INFO:slstk3402a.tests/unittests:Board has enough memory: True
INFO:slstk3402a.tests/unittests:Application has test: True
INFO:slstk3402a.tests/unittests:Run compilation
INFO:slstk3402a.tests/unittests:Run test
INFO:slstk3402a.tests/unittests:Run test.flash
INFO:slstk3402a.tests/unittests:Success
INFO:slstk3402a:Tests successful
INFO:z1:Saving toolchain
INFO:z1.tests/unittests:Board supported: True
INFO:z1.tests/unittests:Board has enough memory: True
INFO:z1.tests/unittests:Application has test: True
INFO:z1.tests/unittests:Run compilation
INFO:z1.tests/unittests:Run test
INFO:z1.tests/unittests:Run test.flash
INFO:z1.tests/unittests:Success
INFO:z1:Tests successful

### arduino-uno/failuresummary


### arduino-zero/failuresummary


### atmega256rfr2-xpro/failuresummary


### frdm-k64f/failuresummary


### frdm-kw41z/failuresummary


### hifive1b/failuresummary


### i-nucleo-lrwan1/failuresummary


### nrf52dk/failuresummary


### nucleo-f030r8/failuresummary


### nucleo-f091rc/failuresummary


### nucleo-f103rb/failuresummary


### nucleo-f207zg/failuresummary


### nucleo-f303k8/failuresummary


### nucleo-f303re/failuresummary


### nucleo-f334r8/failuresummary


### nucleo-f767zi/failuresummary


### nucleo-g071rb/failuresummary


### nucleo-g474re/failuresummary


### nucleo-l073rz/failuresummary


### nucleo-l152re/failuresummary


### nucleo-l433rc/failuresummary


### nucleo-l452re/failuresummary


### nucleo-l496zg/failuresummary


### nucleo-l4r5zi/failuresummary


### nucleo-wl55jc/failuresummary


### openmote-b/failuresummary


### samr21-xpro/failuresummary


### slstk3402a/failuresummary


### z1/failuresummary

@fjmolinas
Copy link
Copy Markdown
Contributor

The ztimer64_msg test failed on two BOARD's I'll take a closer look:

Details
RIOT_CI_BUILD=0 python ../../scripts/ci_test_all.py . --boards=ci-connected-boards --applications="tests/ztimer64_msg" -j7
INFO:arduino-uno:Saving toolchain
INFO:arduino-uno.tests/ztimer64_msg:Board supported: True
INFO:arduino-uno.tests/ztimer64_msg:Board has enough memory: True
INFO:arduino-uno.tests/ztimer64_msg:Application has test: True
INFO:arduino-uno.tests/ztimer64_msg:Run compilation
WARNING:arduino-uno.tests/ztimer64_msg:make RIOT_CI_BUILD=0 CC_NOCOLOR=1 --no-print-directory -C ./tests/ztimer64_msg clean all --jobs 7
Launching build container using image "riot/riotbuild:latest".
docker run --rm --tty --user $(id -u) -v '/usr/share/zoneinfo/Europe/Paris:/etc/localtime:ro' -v '/builds/tmp/RIOT:/data/riotbuild/riotbase:delegated' -e 'RIOTBASE=/data/riotbuild/riotbase' -e 'CCACHE_BASEDIR=/data/riotbuild/riotbase' -e 'BUILD_DIR=/data/riotbuild/riotbase/build' -e 'RIOTPROJECT=/data/riotbuild/riotbase' -e 'RIOTCPU=/data/riotbuild/riotbase/cpu' -e 'RIOTBOARD=/data/riotbuild/riotbase/boards' -e 'RIOTMAKE=/data/riotbuild/riotbase/makefiles'      --env BOARD=arduino-uno -e 'BOARD=arduino-uno' -e 'CC_NOCOLOR=1' -e 'RIOT_CI_BUILD=0'  -w '/data/riotbuild/riotbase/tests/ztimer64_msg/' 'riot/riotbuild:latest' make 'CC_NOCOLOR=1' 'RIOT_CI_BUILD=0'    -j7 all -j7
Building application "tests_ztimer64_msg" for "arduino-uno" with MCU "atmega328p".

"make" -C /data/riotbuild/riotbase/boards/arduino-uno
"make" -C /data/riotbuild/riotbase/core
"make" -C /data/riotbuild/riotbase/cpu/atmega328p
"make" -C /data/riotbuild/riotbase/drivers
"make" -C /data/riotbuild/riotbase/sys
"make" -C /data/riotbuild/riotbase/cpu/atmega_common
"make" -C /data/riotbuild/riotbase/sys/auto_init
"make" -C /data/riotbuild/riotbase/boards/common/arduino-atmega
"make" -C /data/riotbuild/riotbase/sys/frac
"make" -C /data/riotbuild/riotbase/drivers/periph_common
"make" -C /data/riotbuild/riotbase/cpu/atmega_common/periph
"make" -C /data/riotbuild/riotbase/boards/common/atmega
"make" -C /data/riotbuild/riotbase/sys/isrpipe
"make" -C /data/riotbuild/riotbase/sys/malloc_thread_safe
"make" -C /data/riotbuild/riotbase/cpu/avr8_common
"make" -C /data/riotbuild/riotbase/cpu/avr8_common/avr_libc_extra
"make" -C /data/riotbuild/riotbase/sys/stdio_uart
"make" -C /data/riotbuild/riotbase/sys/test_utils/interactive_sync
"make" -C /data/riotbuild/riotbase/sys/tsrb
"make" -C /data/riotbuild/riotbase/sys/ztimer
"make" -C /data/riotbuild/riotbase/sys/ztimer64
/usr/lib/gcc/avr/5.4.0/../../../avr/bin/ld: address 0x800b6b of /data/riotbuild/riotbase/tests/ztimer64_msg/bin/arduino-uno/tests_ztimer64_msg.elf section `.bss' is not within region `data'
/usr/lib/gcc/avr/5.4.0/../../../avr/bin/ld: address 0x800b6d of /data/riotbuild/riotbase/tests/ztimer64_msg/bin/arduino-uno/tests_ztimer64_msg.elf section `.noinit' is not within region `data'
/usr/lib/gcc/avr/5.4.0/../../../avr/bin/ld: address 0x800b6b of /data/riotbuild/riotbase/tests/ztimer64_msg/bin/arduino-uno/tests_ztimer64_msg.elf section `.bss' is not within region `data'
/usr/lib/gcc/avr/5.4.0/../../../avr/bin/ld: address 0x800b6d of /data/riotbuild/riotbase/tests/ztimer64_msg/bin/arduino-uno/tests_ztimer64_msg.elf section `.noinit' is not within region `data'
collect2: error: ld returned 1 exit status
/data/riotbuild/riotbase/Makefile.include:686: recipe for target '/data/riotbuild/riotbase/tests/ztimer64_msg/bin/arduino-uno/tests_ztimer64_msg.elf' failed
make: *** [/data/riotbuild/riotbase/tests/ztimer64_msg/bin/arduino-uno/tests_ztimer64_msg.elf] Error 1
make: *** [/builds/tmp/RIOT/makefiles/docker.inc.mk:317: ..in-docker-container] Error 2

Return value: 2

ERROR:arduino-uno.tests/ztimer64_msg:Error during compilation, writing to results/arduino-uno/tests/ztimer64_msg/compilation.failed
ERROR:arduino-uno.tests/ztimer64_msg:Failed during: compilation
ERROR:arduino-uno:Tests failed: 1
Failures during compilation:
- [tests/ztimer64_msg](tests/ztimer64_msg/compilation.failed)
INFO:arduino-zero:Saving toolchain
INFO:arduino-zero.tests/ztimer64_msg:Board supported: True
INFO:arduino-zero.tests/ztimer64_msg:Board has enough memory: True
INFO:arduino-zero.tests/ztimer64_msg:Application has test: True
INFO:arduino-zero.tests/ztimer64_msg:Run compilation
INFO:arduino-zero.tests/ztimer64_msg:Run test
INFO:arduino-zero.tests/ztimer64_msg:Run test.flash
INFO:arduino-zero.tests/ztimer64_msg:Success
INFO:arduino-zero:Tests successful
INFO:atmega256rfr2-xpro:Saving toolchain
INFO:atmega256rfr2-xpro.tests/ztimer64_msg:Board supported: True
INFO:atmega256rfr2-xpro.tests/ztimer64_msg:Board has enough memory: True
INFO:atmega256rfr2-xpro.tests/ztimer64_msg:Application has test: True
INFO:atmega256rfr2-xpro.tests/ztimer64_msg:Run compilation
INFO:atmega256rfr2-xpro.tests/ztimer64_msg:Run test
INFO:atmega256rfr2-xpro.tests/ztimer64_msg:Run test.flash
WARNING:atmega256rfr2-xpro.tests/ztimer64_msg:make RIOT_CI_BUILD=0 CC_NOCOLOR=1 --no-print-directory -C ./tests/ztimer64_msg test
r
/builds/tmp/RIOT/dist/tools/pyterm/pyterm -p "/dev/riot/tty-atmega256rfr2-xpro" -b "115200" --no-reconnect --noprefix --no-repeat-command-on-empty-line 
Twisted not available, please install it if you want to use pyterm's JSON capabilities
Connect to serial port /dev/riot/tty-atmega256rfr2-xpro
Welcome to pyterm!
Type '/exit' to exit.
READY
s
START
main(): This is RIOT! (Version: 2022.01-devel-1014-g86efe-pr-16928)
This is thread 3
sending 1st msg
now=3:72640 -> every 2.0s: Hello World
sending 2nd msg
now=3:77740 -> every 5.0s: This is a Test
This is thread 4
scheduler(): stack overflow detected, pid=1
sec=4 min=0 hour=0
scheduler(): stack overflow detected, pid=1


Help: Press s to start test, r to print it is ready
Timeout in expect script at "child.expect(r"sec=\d+ min=\d+ hour=\d+")" (tests/ztimer64_msg/tests/01-run.py:17)

make: *** [/builds/tmp/RIOT/makefiles/tests/tests.inc.mk:22: test] Error 1

Return value: 2

ERROR:atmega256rfr2-xpro.tests/ztimer64_msg:Error during test, writing to results/atmega256rfr2-xpro/tests/ztimer64_msg/test.failed
ERROR:atmega256rfr2-xpro.tests/ztimer64_msg:Failed during: test
ERROR:atmega256rfr2-xpro:Tests failed: 1
Failures during test:
- [tests/ztimer64_msg](tests/ztimer64_msg/test.failed)
INFO:frdm-k64f:Saving toolchain
INFO:frdm-k64f.tests/ztimer64_msg:Board supported: True
INFO:frdm-k64f.tests/ztimer64_msg:Board has enough memory: True
INFO:frdm-k64f.tests/ztimer64_msg:Application has test: True
INFO:frdm-k64f.tests/ztimer64_msg:Run compilation
INFO:frdm-k64f.tests/ztimer64_msg:Run test
INFO:frdm-k64f.tests/ztimer64_msg:Run test.flash
INFO:frdm-k64f.tests/ztimer64_msg:Success
INFO:frdm-k64f:Tests successful
INFO:frdm-kw41z:Saving toolchain
INFO:frdm-kw41z.tests/ztimer64_msg:Board supported: True
INFO:frdm-kw41z.tests/ztimer64_msg:Board has enough memory: True
INFO:frdm-kw41z.tests/ztimer64_msg:Application has test: True
INFO:frdm-kw41z.tests/ztimer64_msg:Run compilation
INFO:frdm-kw41z.tests/ztimer64_msg:Run test
INFO:frdm-kw41z.tests/ztimer64_msg:Run test.flash
INFO:frdm-kw41z.tests/ztimer64_msg:Success
INFO:frdm-kw41z:Tests successful
INFO:hifive1b:Saving toolchain
INFO:hifive1b.tests/ztimer64_msg:Board supported: True
INFO:hifive1b.tests/ztimer64_msg:Board has enough memory: True
INFO:hifive1b.tests/ztimer64_msg:Application has test: True
INFO:hifive1b.tests/ztimer64_msg:Run compilation
INFO:hifive1b.tests/ztimer64_msg:Run test
INFO:hifive1b.tests/ztimer64_msg:Run test.flash
INFO:hifive1b.tests/ztimer64_msg:Success
INFO:hifive1b:Tests successful
INFO:i-nucleo-lrwan1:Saving toolchain
INFO:i-nucleo-lrwan1.tests/ztimer64_msg:Board supported: True
INFO:i-nucleo-lrwan1.tests/ztimer64_msg:Board has enough memory: True
INFO:i-nucleo-lrwan1.tests/ztimer64_msg:Application has test: True
INFO:i-nucleo-lrwan1.tests/ztimer64_msg:Run compilation
INFO:i-nucleo-lrwan1.tests/ztimer64_msg:Run test
INFO:i-nucleo-lrwan1.tests/ztimer64_msg:Run test.flash
INFO:i-nucleo-lrwan1.tests/ztimer64_msg:Success
INFO:i-nucleo-lrwan1:Tests successful
INFO:nrf52dk:Saving toolchain
INFO:nrf52dk.tests/ztimer64_msg:Board supported: True
INFO:nrf52dk.tests/ztimer64_msg:Board has enough memory: True
INFO:nrf52dk.tests/ztimer64_msg:Application has test: True
INFO:nrf52dk.tests/ztimer64_msg:Run compilation
INFO:nrf52dk.tests/ztimer64_msg:Run test
INFO:nrf52dk.tests/ztimer64_msg:Run test.flash
INFO:nrf52dk.tests/ztimer64_msg:Success
INFO:nrf52dk:Tests successful
INFO:nucleo-f030r8:Saving toolchain
INFO:nucleo-f030r8.tests/ztimer64_msg:Board supported: True
INFO:nucleo-f030r8.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-f030r8.tests/ztimer64_msg:Application has test: True
INFO:nucleo-f030r8.tests/ztimer64_msg:Run compilation
INFO:nucleo-f030r8.tests/ztimer64_msg:Run test
INFO:nucleo-f030r8.tests/ztimer64_msg:Run test.flash
INFO:nucleo-f030r8.tests/ztimer64_msg:Success
INFO:nucleo-f030r8:Tests successful
INFO:nucleo-f091rc:Saving toolchain
INFO:nucleo-f091rc.tests/ztimer64_msg:Board supported: True
INFO:nucleo-f091rc.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-f091rc.tests/ztimer64_msg:Application has test: True
INFO:nucleo-f091rc.tests/ztimer64_msg:Run compilation
INFO:nucleo-f091rc.tests/ztimer64_msg:Run test
INFO:nucleo-f091rc.tests/ztimer64_msg:Run test.flash
INFO:nucleo-f091rc.tests/ztimer64_msg:Success
INFO:nucleo-f091rc:Tests successful
INFO:nucleo-f103rb:Saving toolchain
INFO:nucleo-f103rb.tests/ztimer64_msg:Board supported: True
INFO:nucleo-f103rb.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-f103rb.tests/ztimer64_msg:Application has test: True
INFO:nucleo-f103rb.tests/ztimer64_msg:Run compilation
INFO:nucleo-f103rb.tests/ztimer64_msg:Run test
INFO:nucleo-f103rb.tests/ztimer64_msg:Run test.flash
INFO:nucleo-f103rb.tests/ztimer64_msg:Success
INFO:nucleo-f103rb:Tests successful
INFO:nucleo-f207zg:Saving toolchain
INFO:nucleo-f207zg.tests/ztimer64_msg:Board supported: True
INFO:nucleo-f207zg.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-f207zg.tests/ztimer64_msg:Application has test: True
INFO:nucleo-f207zg.tests/ztimer64_msg:Run compilation
INFO:nucleo-f207zg.tests/ztimer64_msg:Run test
INFO:nucleo-f207zg.tests/ztimer64_msg:Run test.flash
INFO:nucleo-f207zg.tests/ztimer64_msg:Success
INFO:nucleo-f207zg:Tests successful
INFO:nucleo-f303k8:Saving toolchain
INFO:nucleo-f303k8.tests/ztimer64_msg:Board supported: True
INFO:nucleo-f303k8.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-f303k8.tests/ztimer64_msg:Application has test: True
INFO:nucleo-f303k8.tests/ztimer64_msg:Run compilation
INFO:nucleo-f303k8.tests/ztimer64_msg:Run test
INFO:nucleo-f303k8.tests/ztimer64_msg:Run test.flash
INFO:nucleo-f303k8.tests/ztimer64_msg:Success
INFO:nucleo-f303k8:Tests successful
INFO:nucleo-f303re:Saving toolchain
INFO:nucleo-f303re.tests/ztimer64_msg:Board supported: True
INFO:nucleo-f303re.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-f303re.tests/ztimer64_msg:Application has test: True
INFO:nucleo-f303re.tests/ztimer64_msg:Run compilation
INFO:nucleo-f303re.tests/ztimer64_msg:Run test
INFO:nucleo-f303re.tests/ztimer64_msg:Run test.flash
INFO:nucleo-f303re.tests/ztimer64_msg:Success
INFO:nucleo-f303re:Tests successful
INFO:nucleo-f334r8:Saving toolchain
INFO:nucleo-f334r8.tests/ztimer64_msg:Board supported: True
INFO:nucleo-f334r8.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-f334r8.tests/ztimer64_msg:Application has test: True
INFO:nucleo-f334r8.tests/ztimer64_msg:Run compilation
INFO:nucleo-f334r8.tests/ztimer64_msg:Run test
INFO:nucleo-f334r8.tests/ztimer64_msg:Run test.flash
INFO:nucleo-f334r8.tests/ztimer64_msg:Success
INFO:nucleo-f334r8:Tests successful
INFO:nucleo-f767zi:Saving toolchain
INFO:nucleo-f767zi.tests/ztimer64_msg:Board supported: True
INFO:nucleo-f767zi.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-f767zi.tests/ztimer64_msg:Application has test: True
INFO:nucleo-f767zi.tests/ztimer64_msg:Run compilation
INFO:nucleo-f767zi.tests/ztimer64_msg:Run test
INFO:nucleo-f767zi.tests/ztimer64_msg:Run test.flash
INFO:nucleo-f767zi.tests/ztimer64_msg:Success
INFO:nucleo-f767zi:Tests successful
INFO:nucleo-g071rb:Saving toolchain
INFO:nucleo-g071rb.tests/ztimer64_msg:Board supported: True
INFO:nucleo-g071rb.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-g071rb.tests/ztimer64_msg:Application has test: True
INFO:nucleo-g071rb.tests/ztimer64_msg:Run compilation
INFO:nucleo-g071rb.tests/ztimer64_msg:Run test
INFO:nucleo-g071rb.tests/ztimer64_msg:Run test.flash
INFO:nucleo-g071rb.tests/ztimer64_msg:Success
INFO:nucleo-g071rb:Tests successful
INFO:nucleo-g474re:Saving toolchain
INFO:nucleo-g474re.tests/ztimer64_msg:Board supported: True
INFO:nucleo-g474re.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-g474re.tests/ztimer64_msg:Application has test: True
INFO:nucleo-g474re.tests/ztimer64_msg:Run compilation
INFO:nucleo-g474re.tests/ztimer64_msg:Run test
INFO:nucleo-g474re.tests/ztimer64_msg:Run test.flash
INFO:nucleo-g474re.tests/ztimer64_msg:Success
INFO:nucleo-g474re:Tests successful
INFO:nucleo-l073rz:Saving toolchain
INFO:nucleo-l073rz.tests/ztimer64_msg:Board supported: True
INFO:nucleo-l073rz.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-l073rz.tests/ztimer64_msg:Application has test: True
INFO:nucleo-l073rz.tests/ztimer64_msg:Run compilation
INFO:nucleo-l073rz.tests/ztimer64_msg:Run test
INFO:nucleo-l073rz.tests/ztimer64_msg:Run test.flash
INFO:nucleo-l073rz.tests/ztimer64_msg:Success
INFO:nucleo-l073rz:Tests successful
INFO:nucleo-l152re:Saving toolchain
INFO:nucleo-l152re.tests/ztimer64_msg:Board supported: True
INFO:nucleo-l152re.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-l152re.tests/ztimer64_msg:Application has test: True
INFO:nucleo-l152re.tests/ztimer64_msg:Run compilation
INFO:nucleo-l152re.tests/ztimer64_msg:Run test
INFO:nucleo-l152re.tests/ztimer64_msg:Run test.flash
INFO:nucleo-l152re.tests/ztimer64_msg:Success
INFO:nucleo-l152re:Tests successful
INFO:nucleo-l433rc:Saving toolchain
INFO:nucleo-l433rc.tests/ztimer64_msg:Board supported: True
INFO:nucleo-l433rc.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-l433rc.tests/ztimer64_msg:Application has test: True
INFO:nucleo-l433rc.tests/ztimer64_msg:Run compilation
INFO:nucleo-l433rc.tests/ztimer64_msg:Run test
INFO:nucleo-l433rc.tests/ztimer64_msg:Run test.flash
INFO:nucleo-l433rc.tests/ztimer64_msg:Success
INFO:nucleo-l433rc:Tests successful
INFO:nucleo-l452re:Saving toolchain
INFO:nucleo-l452re.tests/ztimer64_msg:Board supported: True
INFO:nucleo-l452re.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-l452re.tests/ztimer64_msg:Application has test: True
INFO:nucleo-l452re.tests/ztimer64_msg:Run compilation
INFO:nucleo-l452re.tests/ztimer64_msg:Run test
INFO:nucleo-l452re.tests/ztimer64_msg:Run test.flash
INFO:nucleo-l452re.tests/ztimer64_msg:Success
INFO:nucleo-l452re:Tests successful
INFO:nucleo-l496zg:Saving toolchain
INFO:nucleo-l496zg.tests/ztimer64_msg:Board supported: True
INFO:nucleo-l496zg.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-l496zg.tests/ztimer64_msg:Application has test: True
INFO:nucleo-l496zg.tests/ztimer64_msg:Run compilation
INFO:nucleo-l496zg.tests/ztimer64_msg:Run test
INFO:nucleo-l496zg.tests/ztimer64_msg:Run test.flash
INFO:nucleo-l496zg.tests/ztimer64_msg:Success
INFO:nucleo-l496zg:Tests successful
INFO:nucleo-l4r5zi:Saving toolchain
INFO:nucleo-l4r5zi.tests/ztimer64_msg:Board supported: True
INFO:nucleo-l4r5zi.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-l4r5zi.tests/ztimer64_msg:Application has test: True
INFO:nucleo-l4r5zi.tests/ztimer64_msg:Run compilation
INFO:nucleo-l4r5zi.tests/ztimer64_msg:Run test
INFO:nucleo-l4r5zi.tests/ztimer64_msg:Run test.flash
INFO:nucleo-l4r5zi.tests/ztimer64_msg:Success
INFO:nucleo-l4r5zi:Tests successful
INFO:nucleo-wl55jc:Saving toolchain
INFO:nucleo-wl55jc.tests/ztimer64_msg:Board supported: True
INFO:nucleo-wl55jc.tests/ztimer64_msg:Board has enough memory: True
INFO:nucleo-wl55jc.tests/ztimer64_msg:Application has test: True
INFO:nucleo-wl55jc.tests/ztimer64_msg:Run compilation
INFO:nucleo-wl55jc.tests/ztimer64_msg:Run test
INFO:nucleo-wl55jc.tests/ztimer64_msg:Run test.flash
INFO:nucleo-wl55jc.tests/ztimer64_msg:Success
INFO:nucleo-wl55jc:Tests successful
INFO:openmote-b:Saving toolchain
INFO:openmote-b.tests/ztimer64_msg:Board supported: True
INFO:openmote-b.tests/ztimer64_msg:Board has enough memory: True
INFO:openmote-b.tests/ztimer64_msg:Application has test: True
INFO:openmote-b.tests/ztimer64_msg:Run compilation
INFO:openmote-b.tests/ztimer64_msg:Run test
INFO:openmote-b.tests/ztimer64_msg:Run test.flash
INFO:openmote-b.tests/ztimer64_msg:Success
INFO:openmote-b:Tests successful
INFO:samr21-xpro:Saving toolchain
INFO:samr21-xpro.tests/ztimer64_msg:Board supported: True
INFO:samr21-xpro.tests/ztimer64_msg:Board has enough memory: True
INFO:samr21-xpro.tests/ztimer64_msg:Application has test: True
INFO:samr21-xpro.tests/ztimer64_msg:Run compilation
INFO:samr21-xpro.tests/ztimer64_msg:Run test
INFO:samr21-xpro.tests/ztimer64_msg:Run test.flash
INFO:samr21-xpro.tests/ztimer64_msg:Success
INFO:samr21-xpro:Tests successful
INFO:slstk3402a:Saving toolchain
INFO:slstk3402a.tests/ztimer64_msg:Board supported: True
INFO:slstk3402a.tests/ztimer64_msg:Board has enough memory: True
INFO:slstk3402a.tests/ztimer64_msg:Application has test: True
INFO:slstk3402a.tests/ztimer64_msg:Run compilation
INFO:slstk3402a.tests/ztimer64_msg:Run test
INFO:slstk3402a.tests/ztimer64_msg:Run test.flash
INFO:slstk3402a.tests/ztimer64_msg:Success
INFO:slstk3402a:Tests successful
INFO:z1:Saving toolchain
INFO:z1.tests/ztimer64_msg:Board supported: True
INFO:z1.tests/ztimer64_msg:Board has enough memory: True
INFO:z1.tests/ztimer64_msg:Application has test: True
INFO:z1.tests/ztimer64_msg:Run compilation
INFO:z1.tests/ztimer64_msg:Run test
INFO:z1.tests/ztimer64_msg:Run test.flash
INFO:z1.tests/ztimer64_msg:Success
INFO:z1:Tests successful

### arduino-uno/failuresummary

Failures during compilation:
- [tests/ztimer64_msg](arduino-uno/tests/ztimer64_msg/compilation.failed)

### arduino-zero/failuresummary


### atmega256rfr2-xpro/failuresummary

Failures during test:
- [tests/ztimer64_msg](atmega256rfr2-xpro/tests/ztimer64_msg/test.failed)

### frdm-k64f/failuresummary


### frdm-kw41z/failuresummary


### hifive1b/failuresummary


### i-nucleo-lrwan1/failuresummary


### nrf52dk/failuresummary


### nucleo-f030r8/failuresummary


### nucleo-f091rc/failuresummary


### nucleo-f103rb/failuresummary


### nucleo-f207zg/failuresummary


### nucleo-f303k8/failuresummary


### nucleo-f303re/failuresummary


### nucleo-f334r8/failuresummary


### nucleo-f767zi/failuresummary


### nucleo-g071rb/failuresummary


### nucleo-g474re/failuresummary


### nucleo-l073rz/failuresummary


### nucleo-l152re/failuresummary


### nucleo-l433rc/failuresummary


### nucleo-l452re/failuresummary


### nucleo-l496zg/failuresummary


### nucleo-l4r5zi/failuresummary


### nucleo-wl55jc/failuresummary


### openmote-b/failuresummary


### samr21-xpro/failuresummary


### slstk3402a/failuresummary


### z1/failuresummary


@fjmolinas
Copy link
Copy Markdown
Contributor

Can you add the following patch @kaspar030:

diff --git a/cpu/atmega_common/include/cpu_conf.h b/cpu/atmega_common/include/cpu_conf.h
index d20bea4eb2..cd7dfa8164 100644
--- a/cpu/atmega_common/include/cpu_conf.h
+++ b/cpu/atmega_common/include/cpu_conf.h
@@ -25,6 +25,7 @@
 #ifndef CPU_CONF_H
 #define CPU_CONF_H

+#include "kernel_defines.h"
 #include "atmega_regs_common.h"

 #ifdef __cplusplus
@@ -49,8 +50,8 @@ extern "C" {
  * to avoid not printing of debug in interrupts
  */
 #ifndef THREAD_STACKSIZE_IDLE
-#ifdef MODULE_XTIMER
-/* xtimer's 64 bit arithmetic doesn't perform well on 8 bit archs. In order to
+#if IS_USED(MODULE_XTIMER) || IS_USED(MODULE_ZTIMER64)
+/* 64 bit arithmetic doesn't perform well on 8 bit archs. In order to
  * prevent a stack overflow when an timer triggers while the idle thread is
  * running, we have to increase the stack size then
  */

@kaspar030 kaspar030 requested a review from kYc0o as a code owner December 8, 2021 12:49
@github-actions github-actions bot added Area: cpu Area: CPU/MCU ports Platform: AVR Platform: This PR/issue effects AVR-based platforms labels Dec 8, 2021
Copy link
Copy Markdown
Contributor

@fjmolinas fjmolinas left a comment

Choose a reason for hiding this comment

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

ACK, I ran the provided tests and unit tests, lets start giving this some users! @bergzand anything pending on your side?

Copy link
Copy Markdown
Member

@bergzand bergzand left a comment

Choose a reason for hiding this comment

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

Also an ACK from my side! and go!

@bergzand bergzand enabled auto-merge December 9, 2021 09:17
@bergzand bergzand merged commit d959ce7 into RIOT-OS:master Dec 9, 2021
@bergzand bergzand deleted the ztimer64 branch December 9, 2021 09:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area: build system Area: Build system Area: cpu Area: CPU/MCU ports Area: doc Area: Documentation Area: Kconfig Area: Kconfig integration Area: sys Area: System Area: tests Area: tests and testing framework Area: timers Area: timer subsystems CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR Discussion: RFC The issue/PR is used as a discussion starting point about the item of the issue/PR Platform: AVR Platform: This PR/issue effects AVR-based platforms

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants