Commit graph

55894 commits

Author SHA1 Message Date
Stephanos Ioannidis
36ccd04997 tests: lib: cmsis_dsp: filtering: Add DECIM Q15 tests for 1.9.0
This commit adds the filtering DECIM Q15 test patterns and
implementations for the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
8084684537 tests: lib: cmsis_dsp: filtering: Test partial convolution optionally
This commit makes the tests for the partial convolution functions
(`arm_conv_partial*`) optional because these functions have computation
precision-related issues (tested with CMSIS-DSP 1.9.0, which is part of
the CMSIS 5.8.0 release).

The partial convolution functions (especially the fast variants) can
return very low-precision results (as low as 14dB SNR) under certain
configurations.

This issue will be further investigated and reported to the upstream
CMSIS developers.

Once this issue is fixed upstream, revert this commit in order to make
the partial convolution tests run all the time.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
df57231ecf tests: lib: cmsis_dsp: filtering: Add MISC F16 tests for 1.9.0
This commit adds the filtering MISC F16 test patterns and
implementations for the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
d817c138d4 tests: lib: cmsis_dsp: filtering: Update MISC F32 tests for 1.9.0
This commit updates the filtering MISC F32 test patterns and
implementations for the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
267780dc2b tests: lib: cmsis_dsp: filtering: Update MISC Q31 tests for 1.9.0
This commit updates the filtering MISC Q31 test patterns and
implementations for the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
53f148de84 tests: lib: cmsis_dsp: filtering: Update MISC Q15 tests for 1.9.0
This commit updates the filtering MISC Q15 test patterns and
implementations for the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
35a5daeee7 tests: lib: cmsis_dsp: filtering: Update MISC Q7 tests for 1.9.0
This commit updates the filtering MISC Q7 test patterns and
implementations for the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
5d370a24bd tests: lib: cmsis_dsp: filtering: Add FIR F16 tests for 1.9.0
This commit adds the filtering FIR F16 test patterns and
implementations for the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
15532e1c34 tests: lib: cmsis_dsp: filtering: Update FIR F32 tests for 1.9.0
This commit updates the filtering FIR Q32 test implementations for the
CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
26e3612e1a tests: lib: cmsis_dsp: filtering: Update FIR Q31 tests for 1.9.0
This commit updates the filtering FIR Q31 test implementations for the
CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
d3af641f7c tests: lib: cmsis_dsp: filtering: Update FIR Q15 tests for 1.9.0
This commit updates the filtering FIR Q15 test implementations for the
CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
66617f3785 tests: lib: cmsis_dsp: filtering: Update FIR Q7 tests for 1.9.0
This commit updates the filtering FIR Q7 test implementations for the
CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
a76096a44f tests: lib: cmsis_dsp: filtering: Add BIQUAD F16 tests for 1.9.0
This commit adds the filtering BIQUAD F16 test patterns and
implementations for the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
38e328b6f1 tests: lib: cmsis_dsp: fastmath: Add F16 tests for 1.9.0
This commit adds the fastmath F16 test patterns and implementations
for the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
68419e7a93 tests: lib: cmsis_dsp: fastmath: Update Q15 tests for 1.9.0
This commit updates the fastmath Q15 test implementations for the
CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
e2a949e5b1 tests: lib: cmsis_dsp: distance: Add F16 tests for 1.9.0
This commit adds the distance F16 test patterns and implementations
for the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
d4a7e7927e tests: lib: cmsis_dsp: complexmath: Add F16 tests for 1.9.0
This commit adds the complexmath F16 test patterns and implementations
for the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
112136e6ba tests: lib: cmsis_dsp: bayes: Add F16 tests for 1.9.0
This commit adds the bayes F16 test patterns and implementations for
the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
198c0845b9 tests: lib: cmsis_dsp: bayes: Update F32 tests for 1.9.0
This commit updates the bayes F32 test implementations for the
CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
a2eb438ae0 tests: lib: cmsis_dsp: basicmath: Add F16 tests for 1.9.0
This commit adds the basicmath F16 test patterns and implementations
for the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
4899793e9d tests: lib: cmsis_dsp: basicmath: Update F32 tests for 1.9.0
This commit updates the basicmath F32 test patterns and implementations
for the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
3aaf3d6d63 tests: lib: cmsis_dsp: basicmath: Update Q31 tests for 1.9.0
This commit updates the basicmath Q31 test patterns and implementations
for the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
ac5174cbbd tests: lib: cmsis_dsp: basicmath: Update Q15 tests for 1.9.0
This commit updates the basicmath Q15 test patterns and implementations
for the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
3f5987c82c tests: lib: cmsis_dsp: basicmath: Update Q7 tests for 1.9.0
This commit updates the basicmath Q7 test patterns and implementations
for the CMSIS-DSP 1.9.0.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
0456de7bea tests: lib: cmsis_dsp: common: Add f16 test routines
This commit adds the common test and validation routines for the half-
precision floating point data.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
2e5204b785 modules: cmsis_dsp: Update configs for CMSIS-DSP 1.9.0 (CMSIS 5.8.0)
This commit updates the CMSIS-DSP configurations for the CMSIS-DSP
1.9.0, which is part of the CMSIS 5.8.0 release.

Note that the Helium/MVE configurations are removed because CMSIS-DSP
now automatically selects them if available.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
a22cd59b9e west.yml: Update to CMSIS-DSP 1.9.0 (CMSIS 5.8.0)
Update the version of CMSIS-DSP to 1.9.0 which is part of the CMSIS
5.8.0 release.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Stephanos Ioannidis
41fd6e003c arch: arm: aarch32: Add half-precision floating-point configs
This commit adds the half-precision (16-bit) floating-point
configurations to the ARM AArch32 architectures.

Enabling CONFIG_FP16 has the effect of specifying `-mfp16-format`
option (in case of GCC) which allows using the half-precision floating
point types such as `__fp16` and `_Float16`.

Note that this configuration can be used regardless of whether a
hardware FPU is available or supports half-precision operations.

When an FP16-capable FPU is not available, the compiler will
automatically provide the software emulations.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-08-30 18:17:47 +02:00
Yuval Peress
74b9a607b4 drivers: bbram: Add it8xxx2 BBRAM driver implementation
Note that the it8xxx2 does not support a status register so that
functionality is omitted.

This change also adds driver tests that build both the npcx and it8xxx2
drivers.

Signed-off-by: Yuval Peress <peress@chromium.org>
2021-08-30 11:35:23 -04:00
Yuval Peress
cbe4803812 drivers: bbram: fix npcx driver and update Kconfig defaults
There was a typo that snuck into the bbram driver for npcx.
Fix the driver and update the Kconfig to automatically include the
driver if the compatible string exists in the dts. This ensures that
the driver is built when building the npcx evbs.

Signed-off-by: Yuval Peress <peress@chromium.org>
2021-08-30 11:35:23 -04:00
Lingao Meng
e35cbfb85c Bluetooth: include: Fix wrong docs
We can't call function which used by static init veriable.

Signed-off-by: Lingao Meng <menglingao@xiaomi.com>
2021-08-30 11:35:07 -04:00
Joakim Andersson
fb90113dc8 modules: hal_nordic: Add nrf51 MDK defines needed to apply nrf51 erratas
Add nrf51 MDK defines needed to correctly select the nrf51 erratas
needed on the specific SoCs. The nrf51_erratas.h header file only uses
these defines to check which erratas should be applied.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-08-30 15:48:19 +02:00
Fabio Baltieri
466ca63c2b drivers: ipm: set IPM_STM32_HSEM default from the device tree
Change IPM_STM32_HSEM Kconfig definition so that it picks the correct
default automatically depending on which cpu node is enabled in the
device tree, rather than relying on board specific Kconfig overrides.

Signed-off-by: Fabio Baltieri <fabio.baltieri@gmail.com>
2021-08-30 09:33:32 -04:00
Johann Fischer
9d45581735 usb: cdc_acm: prefix ringbuffers with cdc_acm
Prefix ringbuffers with cdc_acm because it is not possible
to use static specifier with RING_BUF_*_DECLARE_* macros
to avoid conflicts.

Fixes: #36608

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2021-08-30 09:33:09 -04:00
Filip Kokosinski
2304a274e0 boards/riscv/m2gl025_miv: run tests on m2gl025_miv board by default
Issue #37006 highlighted that some tests are prone to not passing on
QEMU for 32-bit RISC-V. This commit enables running tests in Renode on
emulated 32-bit RISC-V m2gl025_miv platform as a double-check.

Signed-off-by: Filip Kokosinski <fkokosinski@antmicro.com>
2021-08-30 09:32:36 -04:00
Filip Kokosinski
19fc1ee77c subsys/random: change parameters for timer-based PRNG
PR #36996 disabled running mem_protect/stack_random test on qemu_riscv32
platform because of this test consistently failing on said platform.
This test starts new threads in equal time intervals, and because of
that we get repeating values after performing the modulus operation when
calculating the stack pointer address.

This can be solved by changing the value of the _RAND32_INC constant
that is used to increase the value returned by the timer-based PRNG.

This commit decreases the value of the mentioned constant from
1000000013U to 1000000003U.

Fixes #37006.

Signed-off-by: Filip Kokosinski <fkokosinski@antmicro.com>
2021-08-30 09:32:36 -04:00
Gerson Fernando Budke
ef87d485d0 boards: arm: sam0: Fix pinmux init prio
After pinmux being converted to build a separate static library
console not show anymore and there is a hard fault.  The hard
fault happen because pinmux drivers are not ready yet and board
emits an assert.  This change board pinmux initialization to
PRE_KERNEL_2 and let system take care error handling.

Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
2021-08-30 09:31:56 -04:00
Torsten Rasmussen
2760fb9eda tests: added kernel tests for arm arch with linker script generator
This commit adds an additional test case for several kernel test suites
to ensure that the linker script generator is working correctly for a
subset of the Zephyr test suites.

The ensures that the basic functionality of the linker script generator
is working while still keep the performance impact on CI at a minimal
level.

Using the kernel tests is a trade-off between testing coverage of the
linker script generator and the time it takes to complete CI.

The kernel tests is considered to have the broadest coverage of various
features important for the generated linker script.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-08-30 08:54:23 -04:00
Torsten Rasmussen
16e848b57c armclang: threading_weak.c source file added for armclang
The stub file threading_weak.c has been added containing weak stub
implementation of threading related kernel functions.

The file is needed for armlink.

When linking with armlink the linker will resolve undefined symbols for
all undefined functions even if those functions the reference the
undefined symbol is never actually called.

This file provides weak stub implementations that are compiled when
CONFIG_MULTITHREADING=n to ensure proper linking.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-08-30 08:54:23 -04:00
Torsten Rasmussen
36bb00d1f5 armclang: ARM Compiler C library support
Support for ARM Compiler C library.

This commit add support for the ARM Compiler C libary in:
- Kconfig
- libc/armstdc

A new Kconfig symbol is added to allow a toolchain to specify if they
support linking with the minimal C library.
Also the CMake variable `TOOLCHAIN_HAS_NEWLIB` is exported to Kconfig
so that CONFIG_NEWLIB_LIBS can only be enabled if the toolchain has
newlib.

The armclang toolchain selects the CMake scatter file generator and
disables support for the LD linker template which is not supported by
armlink.

For the ARM Compiler C library, a corresponding lib/libc/armstc/ folder
with a minimal implementation to work with the ARM Compiler C library
is added.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-08-30 08:54:23 -04:00
Torsten Rasmussen
28ba86d066 armclang: armlinker: armlink symbol steering file
This commit introduces armlink steering file.

A steering file in armlink allows Zephyr to keep using existing linker
symbols defined in ld scripts and used throughout the code tree.

The steering file is generated at build time in order to resolve Zephyr
linker symbols to their corresponding armlink symbols.

As example, Zephyr defines __ramfunc_start which corresponds to the
armlink auto defined Image$$ramfunc$$Base symbol.

Or __init_PRE_KERNEL_1_start which corresponds to Image$$init_0$$Base.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-08-30 08:54:23 -04:00
Torsten Rasmussen
5dfbd227a6 armclang: specify armlink link executable signature
The default armlink signature uses `--list=<TARGET_BASE>.map`, but in
Zephyr we uses a different name for the map file, therefore we need to
specify a custom link executable signature.

This is done in the linker specific flags file:
cmake/linker/armlink/linker_flags.cmake

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-08-30 08:54:23 -04:00
Torsten Rasmussen
93f0d0d528 armclang: warn on non-Ninja generator for CMake 3.20.
When using ARMClang linker and scatter files (armlink) then all
libraries are linked as object libraries using `$<TARGET_OBJECTS:lib>`.

CMake version 3.20 only has limited support for such linking:
> Referencing $<TARGET_OBJECTS> in target_link_libraries calls worked
> in versions of CMake prior to 3.21 for some cases, but was not fully
> supported.

One of those cases that do not work is Unix Makefiles generators.

As only Ninja is currently verified to work, this commit will check the
CMake version in use and the generator, and if CMake version <=3.21 is
used with non-Ninja generator then an error is raised informing user
to either use Ninja generator or update CMake.

As the Ninja generator has been confirmed to work as expected, then that
generator is accepted with CMake 3.20 and older.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-08-30 08:54:23 -04:00
Torsten Rasmussen
40a2ffd2ea armclang: support for armclang compiler and armlink linker
This is the initial support for the armclang compiler together with the
armlink linker.

Introduced in this commit:
- armclang compiler support
- armlink linker support
- armlink scatter file generator for scatter loading
- dual pass linker script generation

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-08-30 08:54:23 -04:00
Torsten Rasmussen
4de0d5511c armclang: bintools support for armclang (arm-ds/Keil)
Initial bintools support for elfconvert
- hex, srec, bin conversion
- strip
- gap fill

Initial bintools support for readelf
Initial bintools support for disaasembly

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-08-30 08:54:23 -04:00
Torsten Rasmussen
ce8f8c9f17 armclang: adding toolchain/armclang.h header
The armclang.h includes the toolchain/llvm.h header.

Also it redifines the __GENERIC_SECTION and Z_GENERIC_SECTION so that
they includes the `used` attribute which is needed by armlink.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-08-30 08:54:23 -04:00
Torsten Rasmussen
761eada9d3 kconfig: cmake: CMake linker script generator symbol added
A "Linker script" choice group has been added to the linker options
menu.

The existing HAVE_CUSTOM_LINKER_SCRIPT config has been relocated inside
the linker script menu.

Two new entries has been created:
- LD template, for using the old ld template files together with the C
  pre-processor to create the final linker script.
- CMake linker generator, used for ARMClang / armlink toolchain.
  The CMake linker generator is also supported for LD linker scripts
  for the ARM architecture.

In CMake, the file cmake/linker/ld/target.cmake has been updated to
support the CMake LD linker generator.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-08-30 08:54:23 -04:00
Torsten Rasmussen
e9e47a45dd cmake: ld: adding ld linker script generator
Adding intial version of ld_script.cmake.

This script can generate ld linker script from the Zephyr CMake linker
functions.

This script is called by the build system and all linker settings, such
as memory regions, groups, output sections, linker symbols defined with
Zephyr CMake linker functions are passed to this script in order to
generate an ld linker script.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-08-30 08:54:23 -04:00
Torsten Rasmussen
02fb26dd44 cmake: ld: adding common linker script generator
Adding intial version of linker_script_common.cmake.

This script parses memory regions, groups, sections, settings, and
symbols defined in the Zephyr CMake build system.

The linker script creates objects for each type above and groups
sections, symbols, and groups together based on their configuration.

This creates a hierarchy which the `<linker>_script.cmake`
implementations can then use during linker script generation.

linker_script_common.cmake also provides stubs for <type>_to_string()
functions which are used when generating the output script.

Each specific `<linker>_script.cmake` must implement those to_string()
functions to create the final linker script.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-08-30 08:54:23 -04:00
Torsten Rasmussen
450b9fa9bc cmake: linker: arm: memory regions from devicetree added
This commit add devicetree memory regions added to arm/linker.cmake.

The following memory regions are now added to the generated linker
script and scatter file if they exists in the devicetree.
- chosen:    zephyr,itcm
- chosen:    zephyr,dtcm
- nodelabel: ti_ccfg_partition
- nodelabel: sram1
- nodelabel: sram2
- nodelabel: sram3
- nodelabel: sram4
- nodelabel: sdram1
- nodelabel: sdram2
- nodelabel: backup_sram

Also support for the itcm and dtcm section and their placement in
corresponding memory regions has been added.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-08-30 08:54:23 -04:00