17612: pkg: add FlashDB r=benpicco a=benpicco
19332: sys/tiny_strerror: make use of flash_utils.h r=benpicco a=benpicco
Co-authored-by: Benjamin Valentin <benpicco@beuth-hochschule.de>
Co-authored-by: Benjamin Valentin <benjamin.valentin@bht-berlin.de>
18682: pkg/lwext4: add lightweight implementation of the ext2/3/4 filesystem r=benpicco a=benpicco
Co-authored-by: Benjamin Valentin <benjamin.valentin@ml-pa.com>
In [0] the paper concludes with
> The Knuth LCG is the most efficient general purpose generator that
> provides decent statistical quality.
> It is simple and lean enough to run on very constrained devices.
So let's select `prng_musl_lcg` to be the default PRNG instead of
`prng_tinymt32`.
This gives a good chunk of memory on e.g. `samr21-xpro`:
prng_tinymt32
-------------
text data bss dec hex filename
26452 136 2824 29412 72e4 tests/rng/bin/samr21-xpro/tests_rng.elf
prng_musl_lcg
-------------
text data bss dec hex filename
26208 136 2808 29152 71e0 tests/rng/bin/samr21-xpro/tests_rng.elf
[0] https://sci-hub.se/10.1145/3453159
Previously, external modules had to be individually added to both
EXTERNAL_MODULE_DIRS and USEMODULE. If those where not in sync, this
resulted in build errors.
With this commit, search folders for external modules are added to
EXTERNAL_MODULE_DIRS instead. So lets say the file system structure is
like this
```
└── /path/to/external/modules
├── mod_a
│ ├── Makefile
│ ├── Makefile.dep
│ ├── Makefile.include
│ ├── foo.c
│ └── include
│ └── external_module.h
└── mod_b
├── Makefile
└── bar.c
```
One now adds `/path/to/external/modules` to EXTERNAL_MODULES and only
with `USEMODULE += mod_a` the corresponding module, dependencies and
include settings are actually used. Hence, it is possible to configure
`EXTERNAL_MODULE_DIRS` from `~/.profile` or `~/.bashrc` once and never
needs to worry about them again.
This commit allows to add a Makefile.dep file in an application
directory to finely tune application dependencies, based on the
used TOOLCHAIN.
Using this mechanism, if an application has dependencies pulled-in based
on the TOOLCHAIN, info-boards-supported, will take this into account to
determine the boards supported by an application
This commit introduces a common storage backend for SUIT manifest
payloads. Different backends can be compiled into a single firmware.
Degending on the component name in the SUIT manifest, a storage backend
is selected by the parser.
For an app, a user usually uses `gnrc_ipv6_router_default` to activate
routing behavior. `gnrc_sixlowpan_router_default` is used by that to
pull in further dependencies for 6LoWPAN routers. It shouldn't pull in
`gnrc_ipv6_router_default` again, as this introduces a cyclic
dependency.
It has no real purpose other than pulling in `gnrc_ipv6_router` as a
dependency, which is already done in other places (or by pulling in its
dependencies).
Just because a user pulls in the DNS client (`sock_dns`) doesn't mean
they want to pull in RDNSS option support as well. Besides, since
`gnrc_ipv6_nib_dns` depends on `gnrc_ipv6_nib`, this forms a circular
dependency that really isn't necessary.
Support for picolibc as alternative libc implementation is added with
this commit. For now only cortex-m CPU's are supported.
Enable via PICOLIBC=1
---
v2:
squash fixes in
v3:
Remove picolibc integer printf/scanf stuff from sys/Makefile.include,
it gets set in makefiles/libc/picolibc.mk
fixup for dependency
It is desireable to have a way to identify network devices.
This should be independent from the type of netdev, so a common identifier is needed.
Base this on the driver ID and the index in the configuration struct.
This way we achive unique IDs that stay consistent for any firmware flashed on a board.