20009: cpu/native: fix bug in periph_timer r=MrKevinWeiss a=maribu
### Contribution description
While debugging https://github.com/RIOT-OS/RIOT/pull/18977#issuecomment-1764258356 it became obvious that the `periph_timer` in `native` is broken and issues early IRQs. This replaces the use of `setitimer` that cannot use a monotonic clock source with `timer_settime()`.
### Testing procedure
I have some non-publishable code that tests if the time an ISR fires in terms of `timer_read()` is no earlier than the time expected. This occasionally triggered with `master`, but I didn't see any of these issues anymore with this PR. I guess I should revive my PR to spice up the periph timer tests and add a polished version of this and let this run for an hour or two.
The tests ins `tests/periph/timer*` should still succeed on `native`. (They do for me in a container running `riot/riotbuild`).
### Issues/PRs references
Found while debugging https://github.com/RIOT-OS/RIOT/pull/18977#issuecomment-1764258356
20042: dist/tools/uf2: add target to also copy families.json file r=MrKevinWeiss a=MichelRottleuthner
### Contribution description
The updated UF2 pkg (#20035) stores the family ID in an external .json file. I overlooked that and flashing fails if this file is not present. This PR fixes it by also copying the json into the tool folder.
### Testing procedure
Check if the `feather-nrf52840-sense` can be flashed when the new UF2 pkg is cloned freshly.
### Issues/PRs references
Fixes a regression introduced with #20035
Co-authored-by: Marian Buschsieweke <marian.buschsieweke@posteo.net>
Co-authored-by: Michel Rottleuthner <michel.rottleuthner@haw-hamburg.de>
Also use `CLOCK_MONOTONIC` for the timeouts, not just for
`timer_read()`. This fixes mismatches between when a timeout
occurs and what is expected in the context of the values returned by
`timer_read()`.
20003: coap: create typedef for CoAP methods r=benpicco a=benpicco
20028: nanocoap: fix incorrect uses of coap_get_code() r=benpicco a=benpicco
20036: boards/nucleo-l4r5zi : add PWM configuration r=benpicco a=krzysztof-cabaj
### Contribution description
This PR adds to the Nucleo-l4r5zi PWM configuration
### Testing procedure
Flash the board using `tests/periph/pwm` program. Check if you could, for example, change LED
intensity using PWM.
### Issues/PRs references
None.
20041: pkg/littlefs2: bump to v2.8.1 r=benpicco a=bergzand
### Contribution description
Minor version number bump.
### Testing procedure
- Check if I copied the correct commit hash.
- Run the tests.
### Issues/PRs references
None
Co-authored-by: Benjamin Valentin <benjamin.valentin@ml-pa.com>
Co-authored-by: krzysztof-cabaj <kcabaj@gmail.com>
Co-authored-by: Koen Zandberg <koen@bergzand.net>
20035: Bump version of UF2 package r=MrKevinWeiss a=MichelRottleuthner
### Contribution description
Bump UF2 package version. The new version, besides many other things, also includes an improvement to search more potential mount paths, which gives better compatibility for different distros.
### Testing procedure
Test if flashing still works for boards that use UF2 (e.g., `feather-nrf52840`, `feather-nrf52840-sense`, `nrf52840-mdk-dongle`):
`BUILD_IN_DOCKER=1 BOARD=feather-nrf52840-sense make -C examples/hello-world all flash term`
With master you should get this error, during flashing: `No drive to deploy.` if you run it on a distro that mounts your device under something like `/run/media/<username>/FTHRSNSBOOT`, or other paths not supported by the old version. To me this happened on Arch.
**Note: you will still get this error if your system doesn't auto mount the device.** But now it will be found when mounted ;)
With this PR try again with the UF2 util:
`rm -rf build/pkg/UF2`
`BUILD_IN_DOCKER=1 BOARD=feather-nrf52840-sense make -C examples/hello-world all flash term`
It should use the new pkg version and flash successfully:
```
...
[INFO] uf2conv.py not found - fetching it from GitHub now
CC= CFLAGS= make -C /home/michel/devel/riot/dist/tools/uf2
[INFO] uf2conv.py successfully fetched!
...
Flashing /run/media/michel/FTHRSNSBOOT (nRF52840-Feather-Sense)
Wrote 63488 bytes to /run/media/michel/FTHRSNSBOOT/NEW.UF2
...
```
### Issues/PRs references
Fixes the mount path problem described in #20027.
Co-authored-by: Michel Rottleuthner <michel.rottleuthner@haw-hamburg.de>
20034: boards/feather-nrf52840-sense: Add bootloader info r=MichelRottleuthner a=MrKevinWeiss
### Contribution description
Add some info on how to deal with really old bootloaders on the `boards/feather-nrf52840-sense`.
### Testing procedure
Read it and maybe try the example.
Here is the script I used:
<details><summary>update-bootloader-less-than-0.4.sh</summary>
```bash
# !/bin/bash
command -v arm-none-eabi-gcc >/dev/null 2>&1 || echo "gcc-arm-none-eabi must be installed!"
FOLDER="/tmp/Adafruit_nRF52_Bootloader"
if [ ! -d "$FOLDER" ] ; then
git clone https://github.com/adafruit/Adafruit_nRF52_Bootloader.git $FOLDER
fi
cd $FOLDER
git submodule update --init
make BOARD=feather_nrf52840_sense SERIAL=/dev/ttyACM0 flash-dfu
```
stdout:
```
$ ./boards/feather-nrf52840-sense/update-bootloader.sh
Submodule 'lib/nrfx' (https://github.com/NordicSemiconductor/nrfx.git) registered for path 'lib/nrfx'
Submodule 'lib/tinyusb' (https://github.com/hathach/tinyusb.git) registered for path 'lib/tinyusb'
Submodule 'lib/uf2' (https://github.com/microsoft/uf2.git) registered for path 'lib/uf2'
Cloning into '/tmp/Adafruit_nRF52_Bootloader/lib/nrfx'...
Cloning into '/tmp/Adafruit_nRF52_Bootloader/lib/tinyusb'...
Cloning into '/tmp/Adafruit_nRF52_Bootloader/lib/uf2'...
Submodule path 'lib/nrfx': checked out '7a4c9d946cf1801771fc180acdbf7b878f270093'
Submodule path 'lib/tinyusb': checked out '9775e76910d569ec73b8dd946f3fa5fe5414acdb'
Submodule path 'lib/uf2': checked out 'adbb8c7260f938e810eb37f2287f8e1a055ff402'
--2023-11-01 10:46:24-- https://github.com/adafruit/Adafruit_nRF52_Bootloader/releases/download/0.8.0/feather_nrf52840_sense_bootloader-0.8.0_s140_6.1.1.hex
Resolving github.com (github.com)... 140.82.121.4
Connecting to github.com (github.com)|140.82.121.4|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/118896384/52889a99-9ffe-4e97-96d8-1fa79797db83?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20231101%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231101T094625Z&X-Amz-Expires=300&X-Amz-Signature=e0f4f85d75d802691a9cce217c1f8d2ef0d2336665c221f44168c12c0331210f&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=118896384&response-content-disposition=attachment%3B%20filename%3Dfeather_nrf52840_sense_bootloader-0.8.0_s140_6.1.1.hex&response-content-type=application%2Foctet-stream [following]
--2023-11-01 10:46:24-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/118896384/52889a99-9ffe-4e97-96d8-1fa79797db83?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20231101%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231101T094625Z&X-Amz-Expires=300&X-Amz-Signature=e0f4f85d75d802691a9cce217c1f8d2ef0d2336665c221f44168c12c0331210f&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=118896384&response-content-disposition=attachment%3B%20filename%3Dfeather_nrf52840_sense_bootloader-0.8.0_s140_6.1.1.hex&response-content-type=application%2Foctet-stream
Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.109.133, 185.199.110.133, 185.199.111.133, ...
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.109.133|:443... connected.
HTTP request sent, awaiting response... 304 Not Modified
File ‘/tmp/feather_nrf52840_sense.hex/feather_nrf52840_sense_bootloader-0.8.0_s140_6.1.1.hex’ not modified on server. Omitting download.
make: Entering directory '/tmp/Adafruit_nRF52_Bootloader'
CC dfu_ble_svc.c
CC dfu_init.c
CC flash_nrf5x.c
CC main.c
CC boards.c
CC nrfx_power.c
CC nrfx_nvmc.c
CC system_nrf52840.c
CC bootloader.c
CC bootloader_settings.c
CC bootloader_util.c
CC dfu_transport_serial.c
CC dfu_transport_ble.c
CC dfu_single_bank.c
CC ble_dfu.c
CC ble_dis.c
CC pstorage_raw.c
CC app_timer.c
CC app_scheduler.c
CC app_error.c
CC app_util_platform.c
CC crc16.c
CC hci_mem_pool.c
CC hci_slip.c
CC hci_transport.c
CC nrf_assert.c
CC pinconfig.c
CC msc_uf2.c
CC usb_desc.c
CC usb.c
CC ghostfat.c
CC dcd_nrf5x.c
CC tusb_fifo.c
CC usbd.c
CC usbd_control.c
CC cdc_device.c
CC msc_device.c
CC tusb.c
AS gcc_startup_nrf52840.S
LD feather_nrf52840_sense_bootloader-0.8.0.out
Memory region Used Size Region Size %age Used
FLASH: 32776 B 38 KB 84.23%
BOOTLOADER_CONFIG: 88 B 2 KB 4.30%
MBR_PARAMS_PAGE: 0 GB 4 KB 0.00%
BOOTLOADER_SETTINGS: 4 KB 4 KB 100.00%
RAM: 20192 B 224 KB 8.80%
DBL_RESET: 0 GB 4 B 0.00%
NOINIT: 62 B 128 B 48.44%
UICR_BOOTLOADER: 4 B 4 B 100.00%
UICR_MBR_PARAM_PAGE: 4 B 4 B 100.00%
text data bss dec hex filename
32864 1744 22614 57222 df86 _build/build-feather_nrf52840_sense/feather_nrf52840_sense_bootloader-0.8.0.out
Create feather_nrf52840_sense_bootloader-0.8.0.hex
Zip created at _build/build-feather_nrf52840_sense/feather_nrf52840_sense_bootloader-0.8.0_s140_6.1.1.zip
adafruit-nrfutil --verbose dfu serial --package _build/build-feather_nrf52840_sense/feather_nrf52840_sense_bootloader-0.8.0_s140_6.1.1.zip -p /dev/ttyACM0 -b 115200 --singlebank --touch 1200
Upgrading target on /dev/ttyACM0 with DFU package /tmp/Adafruit_nRF52_Bootloader/_build/build-feather_nrf52840_sense/feather_nrf52840_sense_bootloader-0.8.0_s140_6.1.1.zip. Flow control is disabled, Single bank, Touch 1200
Touched serial port /dev/ttyACM0
Opened serial port /dev/ttyACM0
Starting DFU upgrade of type 3, SoftDevice size: 151016, bootloader size: 39000, application size: 0
Sending DFU start packet
Sending DFU init packet
Sending firmware file
########################################
########################################
########################################
########################################
########################################
########################################
########################################
########################################
########################################
############
Activating new firmware
DFU upgrade took 20.308438777923584s
Device programmed.
make: Leaving directory '/tmp/Adafruit_nRF52_Bootloader'
```
</details>
### Issues/PRs references
Co-authored-by: MrKevinWeiss <weiss.kevin604@gmail.com>
20032: boards/nucleo-l552ze: add PWM configuration r=benpicco a=krzysztof-cabaj
### Contribution description
This PR adds to the Nucleo-l552ze-q PWM configuration
### Testing procedure
Flash the board using `tests/periph/pwm` program. Check if you could, for example, change LED
intensity using PWM.
### Issues/PRs references
None.
Co-authored-by: krzysztof-cabaj <kcabaj@gmail.com>
20027: boards: add support for Adafruit Feather nRF52840 Sense r=benpicco a=MichelRottleuthner
Co-authored-by: Michel Rottleuthner <michel.rottleuthner@haw-hamburg.de>
20022: pkg/lwip: add support for slipdev r=benpicco a=benpicco
20025: tests/drivers/at: fix device table overflow r=benpicco a=krzysztof-cabaj
### Contribution description
This PR fix device table overflow in `tests/driver/at`, which could lead to device crash.
### Testing procedure
PR was tested on two nucleo boards with 2 and 3 UARTs (nucleo-l476rg and nucleo-l496zg).
Flash `tests/driver/at` with and without this PR.
Output with this PR:
```
> main(): This is RIOT! (Version: 2022.07-devel-5083-g2b9e8-tests-drivers-at)
AT command test app
> init 5 9600
Wrong UART device number - should by in range 0-2.
>
```
Output without this PR:
```
> main(): This is RIOT! (Version: 2022.07-devel-5083-g2b9e8)
AT command test app
> init 5 9600
8001afd
*** RIOT kernel panic:
FAILED ASSERTION.
*** halted.
Context before hardfault:
r0: 0x0000000a
r1: 0x00000000
. . .
```
### Issues/PRs references
None
Co-authored-by: Benjamin Valentin <benjamin.valentin@ml-pa.com>
Co-authored-by: krzysztof-cabaj <kcabaj@gmail.com>
20018: tests/pkg/minmea: fixing RMC timestamp r=benpicco a=jan-mo
The RMC timestamp calculation was creating issues. The timestamp will be related to the EPOCH and time zone. Test on native will fail if the time zone is not set correctly. (see #20005)
# how to test
```
TZ=GMT-1 make test
```
and
```
TZ=GMT make test
```
and
```
TZ=<any> make test
```
`timedatectl list-timezones` provides you with a List of timzones
do not fail
Co-authored-by: Jan Mohr <jan.mohr@ml-pa.com>
- add `static` qualifiers where sensible
- drop `volatile` qualifier that was incorrectly used
- add a comment on use of shared memory for inter-thread communication
19999: nib/_nib-6ln: bail out early if address is no longer assigned r=miri64 a=benpicco
Co-authored-by: Benjamin Valentin <benjamin.valentin@ml-pa.com>
19990: sys/psa_crypto: allow repeated initialization r=benpicco a=mguetschow
### Contribution description
- simple unit test which calls `psa_crypto_init()` twice
- fix to no re-initialize key slots (which left them in a broken state)
### Testing procedure
- `make -C tests/sys/psa_crypto all test` succeeds
- `git checkout HEAD~1 && make -C tests/sys/psa_crypto all test` fails
Co-authored-by: Mikolai Gütschow <mikolai.guetschow@tu-dresden.de>