1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-12-25 22:43:50 +01:00

275 Commits

Author SHA1 Message Date
Marian Buschsieweke
646c8b46e6
cpu/native: move native hack from core here
CPU specific hacks never should go to `core`. This simplifies the hack
and moves it to `cpu/native` by providing a custom `sched.h` that adds
the workarounds for glibc and adds an `#include_next "sched.h"`.

It's a bit of a pity that RIOT's sched.h has a name conflict with
POSIX's sched.h - otherwise those hacks wouldn't really be needed.
2025-12-15 08:21:18 +01:00
Mikolai Gütschow
b432de4316
doc: fix drivers_mtd_native grouping 2025-12-09 09:52:13 +01:00
Marian Buschsieweke
87af1a4b58
cpu/native: fix lockup on libucontext
The `setcontext()` implementation of glibc does restore the signal
mask to the target thread during the switch, libucontext [does not][1]

[1]: https://man.archlinux.org/man/libucontext.3.en#CAVEATS

Instead, we just manually enable signals again just before the call
to `setcontext()`.

With this, tests like `tests/core/mutex_canel` or `tests/core/irq` now
pass on `native64` when using libucontext.

Co-authored-by: crasbe <crasbe@gmail.com>
2025-11-26 12:43:09 +01:00
Gilles DOFFE
dab11d7a9c cpu/native: introduce periph_i2c_mock
This allows I2C emulation on native architecture in the same way than
periph_gpio_mock.

All I2C functions from this driver are set as weak to be easily
overridden in each application.

Signed-off-by: Gilles DOFFE <g.doffe@gmail.com>
2025-10-30 23:51:07 +01:00
Gilles DOFFE
197cf51b93 cpu/native: fix GPIO bias flags for kernel >=5.5
Fix duplicate GPIO mode values on native platform when using Linux
kernel 5.5 or later. The kernel renamed GPIOHANDLE_REQUEST_PULL_* flags
to GPIOHANDLE_REQUEST_BIAS_PULL_* in version 5.5.

Without this fix, both GPIO_IN_PU and GPIO_OD_PU would have the same
fallback value (0xFF), causing compilation errors in switch statements.

Error: "duplicate case value"

Signed-off-by: Gilles DOFFE <g.doffe@gmail.com>
2025-10-30 23:51:07 +01:00
Gilles DOFFE
aab432ff6d cpu/native: remove unused XTIMER_BACKOFF definitions
XTIMER_BACKOFF and XTIMER_ISR_BACKOFF were defined in periph_conf.h
since 2016 for the legacy xtimer module, which required high backoff
values (200) on native to prevent timer underflow issues.

However, since the migration to ztimer, all code now uses
MODULE_ZTIMER_XTIMER_COMPAT which includes ztimer/xtimer_compat.h
before periph_conf.h. This means xtimer_compat.h always defines
XTIMER_BACKOFF=1 first, and the periph_conf.h definitions are never
used.

Remove these unused definitions as they serve no purpose with the
current ztimer-based implementation.

Signed-off-by: Gilles DOFFE <g.doffe@gmail.com>
2025-10-30 08:20:21 +01:00
krzysztof-cabaj
fd36921a29 cpu/native: move licenses to SPDX format 2025-09-25 17:48:55 +02:00
Marian Buschsieweke
cac44edec7
tree-wide: replace multiple empty lines with one
For each C source/header `$file`: `sed -e '/^$/N;/^\n$/D' -i $file`.
2025-05-21 22:51:04 +02:00
KSKNico
fe821eaa1d cpu: replace header guards with #pragma once 2025-05-21 17:13:37 +02:00
Marian Buschsieweke
9b417c35c1
Merge pull request #21313 from maribu/cpu/native/async_io/missing-include
cpu/native: add missing include
2025-03-21 21:01:38 +00:00
Marian Buschsieweke
56a553f80d
cpu/native: add missing include
`pid_t` is provided e.g. by `<sys/types.h>`. It seems that on glibc,
`<stdlib.h>` will also provide `pid_t`. But this way it should work on
both musl and glibc.
2025-03-21 21:24:24 +01:00
benpicco
a756dcf1c9
Merge pull request #19213 from benpicco/socket_zep_hal-fix
socket_zep: properly implement the radio HAL
2025-03-20 08:30:12 +00:00
Benjamin Valentin
460901aa00 socket_zep: properly implement the radio HAL 2025-03-20 02:04:34 +01:00
Benjamin Valentin
333e1ea97d cpu/native: bump ASYNC_READ_NUMOF 2025-03-13 00:24:07 +01:00
carl
6e5260c2d5 cpu/native: enable 64-bit thread arguments 2025-03-11 16:19:39 +01:00
carl
7d83850395 cpu/native: assembly: gardening 2025-03-11 16:19:39 +01:00
carl
9c96c18566 cpu/native: move valgrind imports into separate header 2025-03-11 16:19:39 +01:00
carl
b5eff6a107 cpu/native: unify ucontext manipulation 2025-03-11 16:19:39 +01:00
carl
64283b52aa cpu/native: doxygen gardening 2025-03-11 16:19:39 +01:00
carl
90a3f3ffcc cpu/native: docs and descriptive naming 2025-03-11 16:19:39 +01:00
carl
cf54187b7c cpu/native: move syscalls into separate header 2025-03-11 16:19:39 +01:00
Marian Buschsieweke
21151691d7
cpu/native: Fix C11 atomic sizes for musl
musl and glibc have different types for fast atomic integers. This
selects the correct size depending on the used library.
2024-06-05 22:04:43 +02:00
Marian Buschsieweke
f34cd3f7c1
cpu/native: fix build with musl
This changes a bunch of things that allows building with the musl C lib,
provided that `libucontext-dev` and `pkg-config` are installed.

Note that installing libucontext makes absolutely zero sense on C libs
that do natively provide this deprecated System V API, such as glibc.
Hence, it no sane glibc setup is expected to ever have libucontext
installed.

A main pain point was that argv and argc are expected to be passed to
init_fini handlers, but that is actually a glibc extension. This just
parses `/proc/self/cmdline` by hand to populate argv and argc during
startup, unless running on glibc.
2024-05-31 12:18:33 +02:00
Karl Fessel
2bdca8d6c9
Merge pull request #16809 from kfessel/p-backtrace-fix
native/backtrace: improve its print capabilitys and test
2024-05-08 19:57:18 +00:00
Karl Fessel
37627ce2b8 native/backtrace: improve print capabilitys and test 2024-05-08 12:53:57 +02:00
Gilles DOFFE
ebf95d2545 cpu/native: enhance GPIO mocking with 2D array representation
This commit introduces a more robust GPIO mocking mechanism by utilizing
a 2-dimensional array. Each element of the array holds a gpio_mock_t
structure describing a pin's attributes such as value, mode, flank,
interruption callback, and callback argument.

This enhancement allows for the arbitrary simulation of GPIOs across
various microcontroller architectures using the current API, while
maintaining consistency through the use of the GPIO_PIN macro.

Additionally, it should be noted that only the maximum number of ports
and maximum number of pins can be altered according to the context.

The implemented API in gpio_mock.c remains rudimentary, providing no
validation but fulfilling the required functions. However, it remains
customizable as all its functions are marked as weak.

Signed-off-by: Gilles DOFFE <g.doffe@gmail.com>
2024-03-24 23:12:24 +01:00
Mihai Renea
795415d59e cpu/native/periph/uart: uart_poweroff() closes the file descriptor 2024-02-09 12:55:40 +01:00
Frederik Haxel
0c2cfe99e6 native64: Add Linux/x86_64 board
Adds a separate board for native64 instead of the `NATIVE_64BIT` workaround.
The files in `boards/native64` are more or less dummy files and just include
the `boards/native` logic (similar to `openlabs-kw41z-mini-256kib`).
The main logic for native is in `makefiles/arch/native.inc.mk`, `cpu/native`
and `boards/native`.

The remaining changes concern the build system, and change native board checks
to native CPU checks to cover both boards.
2024-02-05 22:01:40 +01:00
Frederik Haxel
16eff9b6ed native: Linux/x86_64 support
Initial version to test 64 bit compatibility.

Instead of a separate board, the inital version for Linux/x86_64 is enabled
by setting the environment variable `NATIVE_64BIT=y` and compiling as usual.

Not currently implemented:
* Architectures other than x86_64 or operating systems other than Linux
    * No FreeBSD support
    * No Aarch support
* Rust support for x86_64
2024-01-30 16:33:19 +01:00
Armin Wolf
6070c57e21 cpu/native: Add support for periph_timer_query_freqs
Add support for querying the frequency supported by
`periph_timer`. This allows applications which require
this feature to run on the `native` board.

Signed-off-by: Armin Wolf <W_Armin@gmx.de>
2024-01-30 02:01:50 +01:00
bors[bot]
718a4513b5
Merge #19368 #19529 #19531
19368: debug: add DEBUG_BREAKPOINT() macro, set breakpoint on failed assertion r=benpicco a=benpicco



19529: cpu/stm32/periph/dac: optimize setting DAC r=benpicco a=Enoch247

### Contribution description

The current implmentation right shifted the 16 bit value passed into `dac_set()` down to the 12 bits that the DAC is actually capable of. This patch drops the shift and instead writes the 16 bit value to the DAC's left aligned 12 bit wide data holding register.


### Testing procedure

do something like:
``` c
#include "perip/dac.h"

int main(void)
{
    dac_set(DAC_LINE(0), 0xffff/2);
    return 0;
}
```
- observe DAC's output is half of vref


### Issues/PRs references

- none known


19531: tests/unittests: allow passing `UNIT_TESTS` via env r=benpicco a=kaspar030



Co-authored-by: Benjamin Valentin <benpicco@beuth-hochschule.de>
Co-authored-by: Joshua DeWeese <jdeweese@primecontrols.com>
Co-authored-by: Kaspar Schleiser <kaspar@schleiser.de>
2023-05-02 18:08:42 +00:00
Marian Buschsieweke
c3500eb6e0
tree wide: fix typos in comments found by codespell
This will not change generated binaries, only the Doxygen output and
source code will have less typos.
2023-05-02 09:52:06 +02:00
Benjamin Valentin
fe4cc9169d cpu/native: define ARCHITECTURE_BREAKPOINT() 2023-04-27 13:19:17 +02:00
Benjamin Valentin
006ad81c0c cpu/native: wire up more fs related syscalls 2023-04-25 13:28:20 +02:00
Teufelchen1
10cada1b8d native/syscalls: rename real_clock_gettime to clock_gettime 2023-04-17 15:21:52 +02:00
bors[bot]
d4d91492cd
Merge #18100 #19121 #19164 #19169
18100: core/assert: print backtrace on failed assertion r=kaspar030 a=benpicco



19121: socket_zep: only report size of single datagram r=kaspar030 a=benpicco



19164: cpu/sam0_common: move adc_res_t to common code r=dylad a=benpicco



19169: tests/driver_ws281x: don't overwrite board definition r=benpicco a=benpicco





Co-authored-by: Benjamin Valentin <benjamin.valentin@ml-pa.com>
Co-authored-by: Benjamin Valentin <benjamin.valentin@bht-berlin.de>
2023-01-18 23:59:58 +00:00
Benjamin Valentin
81625fd5f2 doc: sort all stdio implementations into sys_stdio group 2023-01-13 11:08:22 +01:00
Benjamin Valentin
8a80e70e5e cpu/native: syscalls: provide real_recv() 2023-01-10 14:24:16 +01:00
Teufelchen1
c9e9a8d2f1 native: Remove code used for __MACH__ target 2022-12-22 17:57:25 +01:00
Teufelchen1
35a06c4806 boards/native: Remove macOS as native target 2022-10-25 19:11:23 +02:00
Benjamin Valentin
0aa931ad7d cpu/native: povide real_ftell() function 2022-09-29 14:55:27 +02:00
Benjamin Valentin
ea917f4b07 cpu: cpu_print_last_instruction() -> cpu_get_caller_pc() 2022-09-15 10:49:56 +02:00
Teufelchen1
1231807bab Documentation: Renaming OS X to macOS 2022-06-23 17:25:48 +02:00
Martine Lenders
c4e202ae67
Merge pull request #17709 from benpicco/cpu/native-tap_wired
netdev_tap: make 'wired' property configurable
2022-06-01 02:24:43 +02:00
Benjamin Valentin
f61c12e008 netdev_tap: make 'wired' property configurable
`netdev_tap` is a virtual interface, make it possible to simulate both
a wired and a wireless interface.
2022-05-23 15:27:35 +02:00
Francisco Molina
0d7eb36247 boards/native: only one CAN_DLL by default 2022-04-20 14:40:06 +02:00
Jens Wetterich
4dfeafcabd cpu/native/netdev_tap: Add to netdev_register 2022-02-11 07:54:11 +01:00
Benjamin Valentin
fc4cd0484b cpu/native: change mtd_native_dev_t parent name to base
This brings it in line with the other MTD implementations.
2022-02-09 12:21:53 +01:00
Jose Alamos
db815aa779
ieee802154/hal: migrate to request_op and confirm_op 2022-01-10 13:57:02 +01:00
Alexandre Abadie
b206658b51
cpu/native: define default CLOCK_CORECLOCK constant 2021-12-15 12:41:36 +01:00