1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

Merge pull request #16929 from leandrolanzieri/pr/cpu/avr8/model_kconfig

cpu/avr8: model kconfig
This commit is contained in:
Marian Buschsieweke 2021-11-23 09:24:03 +01:00 committed by GitHub
commit 68e1d29e90
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
62 changed files with 534 additions and 93 deletions

View File

@ -8,11 +8,19 @@
: ${TEST_BOARDS_LLVM_COMPILE:=""}
: ${TEST_KCONFIG_BOARDS_AVAILABLE:="
arduino-leonardo
arduino-mega2560
arduino-nano
atxmega-a1-xplained
atxmega-a3bu-xplained
avr-rss2
cc1352-launchpad
cc2650-launchpad
derfmega128
dwm1001
hifive1
mbed_lpc1768
mega-xplained
native
nrf52840dk
nucleo-f072rb
@ -34,6 +42,7 @@ seeedstudio-gd32
slstk3400a
sltb001a
slwstk6220a
waspmote-pro
"}
: ${TEST_KCONFIG_ENFORCE_APP_GROUPS:="

View File

@ -47,6 +47,7 @@ RIOTCPU ?= $(RIOTBASE)/cpu
RIOTBOARD ?= $(RIOTBASE)/boards
EXTERNAL_BOARD_DIRS ?=
RIOTMAKE ?= $(RIOTBASE)/makefiles
RIOTKCONFIG ?= $(RIOTBASE)/kconfigs
RIOTPKG ?= $(RIOTBASE)/pkg
RIOTTOOLS ?= $(RIOTBASE)/dist/tools
RIOTPROJECT ?= $(shell git rev-parse --show-toplevel 2>/dev/null || pwd)

View File

@ -9,6 +9,7 @@ config BOARD_ARDUINO_DUEMILANOVE
default y
select BOARD_COMMON_ARDUINO_ATMEGA
select CPU_MODEL_ATMEGA328P
select MODULE_BOARDS_COMMON_ARDUINO-ATMEGA if TEST_KCONFIG
config BOARD
default "arduino-duemilanove" if BOARD_ARDUINO_DUEMILANOVE

View File

@ -12,5 +12,6 @@ config BOARD_ARDUINO_LEONARDO
default y
select BOARD_COMMON_ARDUINO_ATMEGA
select CPU_MODEL_ATMEGA32U4
select MODULE_BOARDS_COMMON_ARDUINO-ATMEGA if TEST_KCONFIG
source "$(RIOTBOARD)/common/arduino-atmega/Kconfig"

View File

@ -12,5 +12,6 @@ config BOARD_ARDUINO_MEGA2560
default y
select CPU_MODEL_ATMEGA2560
select BOARD_COMMON_ARDUINO_ATMEGA
select MODULE_BOARDS_COMMON_ARDUINO-ATMEGA if TEST_KCONFIG
source "$(RIOTBOARD)/common/arduino-atmega/Kconfig"

View File

@ -9,6 +9,7 @@ config BOARD_ARDUINO_NANO
default y
select BOARD_COMMON_ARDUINO_ATMEGA
select CPU_MODEL_ATMEGA328P
select MODULE_BOARDS_COMMON_ARDUINO-ATMEGA if TEST_KCONFIG
config BOARD
default "arduino-nano" if BOARD_ARDUINO_NANO

View File

@ -9,6 +9,7 @@ config BOARD_ARDUINO_UNO
default y
select CPU_MODEL_ATMEGA328P
select BOARD_COMMON_ARDUINO_ATMEGA
select MODULE_BOARDS_COMMON_ARDUINO-ATMEGA if TEST_KCONFIG
config BOARD
default "arduino-uno" if BOARD_ARDUINO_UNO

View File

@ -19,3 +19,7 @@ config BOARD_ATMEGA1284P
select HAS_PERIPH_SPI
select HAS_PERIPH_TIMER
select HAS_PERIPH_UART
select MODULE_BOARDS_COMMON_ATMEGA if TEST_KCONFIG
source "$(RIOTBOARD)/common/atmega/Kconfig"

View File

@ -18,3 +18,9 @@ config BOARD_ATMEGA256RFR2_XPRO
select HAS_PERIPH_SPI
select HAS_PERIPH_TIMER
select HAS_PERIPH_UART
select HAVE_SAUL_GPIO
select HAVE_AT30TSE75X
select MODULE_BOARDS_COMMON_ATMEGA if TEST_KCONFIG
source "$(RIOTBOARD)/common/atmega/Kconfig"

View File

@ -22,3 +22,6 @@ config BOARD_ATMEGA328P_XPLAINED_MINI
select HAS_PERIPH_TIMER
select HAS_PERIPH_UART
# Various other features (if any)
select MODULE_BOARDS_COMMON_ATMEGA if TEST_KCONFIG
source "$(RIOTBOARD)/common/atmega/Kconfig"

View File

@ -21,3 +21,6 @@ config BOARD_ATMEGA328P
select HAS_PERIPH_TIMER
select HAS_PERIPH_UART
# Various other features (if any)
select MODULE_BOARDS_COMMON_ATMEGA if TEST_KCONFIG
source "$(RIOTBOARD)/common/atmega/Kconfig"

View File

@ -18,3 +18,6 @@ config BOARD_ATXMEGA_A1_XPLAINED
select HAS_PERIPH_UART
select HAVE_SAUL_GPIO
select MODULE_BOARDS_COMMON_ATXMEGA if TEST_KCONFIG
source "$(RIOTBOARD)/common/atxmega/Kconfig"

View File

@ -18,3 +18,6 @@ config BOARD_ATXMEGA_A1U_XPRO
select HAS_PERIPH_UART
select HAVE_SAUL_GPIO
select MODULE_BOARDS_COMMON_ATXMEGA if TEST_KCONFIG
source "$(RIOTBOARD)/common/atxmega/Kconfig"

View File

@ -18,3 +18,6 @@ config BOARD_ATXMEGA_A3BU_XPLAINED
select HAS_PERIPH_UART
select HAVE_SAUL_GPIO
select MODULE_BOARDS_COMMON_ATXMEGA if TEST_KCONFIG
source "$(RIOTBOARD)/common/atxmega/Kconfig"

View File

@ -18,3 +18,12 @@ config BOARD_AVR_RSS2
select HAS_PERIPH_SPI
select HAS_PERIPH_TIMER
select HAS_PERIPH_UART
select MODULE_BOARDS_COMMON_ATMEGA if TEST_KCONFIG
select MODULE_ATMEGA_PCINT0 if TEST_KCONFIG
select HAVE_SAUL_GPIO
select HAVE_BME280_I2C
select HAVE_AT24MAC
source "$(RIOTBOARD)/common/atmega/Kconfig"

View File

@ -16,3 +16,14 @@ config BOARD_COMMON_ARDUINO_ATMEGA
# Various other features (if any)
select HAS_ARDUINO
select HAS_ARDUINO_PWM
select HAVE_SAUL_GPIO
config MODULE_BOARDS_COMMON_ARDUINO-ATMEGA
bool
depends on TEST_KCONFIG
select MODULE_BOARDS_COMMON_ATMEGA
help
Common code of Arduino ATmega boards.
source "$(RIOTBOARD)/common/atmega/Kconfig"

View File

@ -0,0 +1,12 @@
# Copyright (c) 2021 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config MODULE_BOARDS_COMMON_ATMEGA
bool
depends on TEST_KCONFIG
help
Common code of ATmega boards.

View File

@ -1,17 +1,5 @@
/**
@defgroup boards_common_atmega ATmega common
@ingroup boards
@brief Shared files and configuration for ATmega-based boards
### Pin Change Interrupts
Pin Change Interrupts (PCINTs) can be enabled using pseudo modules. To provide
a low-memory overhead implementation, the PCINTs are grouped into **banks**.
Each banks corresponds to one PCINT on the ATmega (PCINT0, ..., PCINT3).
To enable only a specific bank, simply add `USEMODULE += atmega_pcintN` to your
Makefile. To enable all interrupts you can use `USEMODULE += atmega_pcint`.
In case you want to add a new CPU, simply provide an `atmega_pcint.h` with your
CPU and adapt your Makefile.dep and Makefile.features files.
*/
* @defgroup boards_common_atmega ATmega common
* @ingroup boards
* @brief Shared files and configuration for ATmega-based boards
*/

View File

@ -0,0 +1,12 @@
# Copyright (c) 2021 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config MODULE_BOARDS_COMMON_ATXMEGA
bool
depends on TEST_KCONFIG
help
Common ATXmega boards code.

View File

@ -18,3 +18,7 @@ config BOARD_DERFMEGA128
select HAS_PERIPH_SPI
select HAS_PERIPH_TIMER
select HAS_PERIPH_UART
select MODULE_BOARDS_COMMON_ATMEGA if TEST_KCONFIG
source "$(RIOTBOARD)/common/atmega/Kconfig"

View File

@ -18,3 +18,8 @@ config BOARD_DERFMEGA256
select HAS_PERIPH_SPI
select HAS_PERIPH_TIMER
select HAS_PERIPH_UART
select MODULE_BOARDS_COMMON_ATMEGA if TEST_KCONFIG
select MODULE_PERIPH_EEPROM if MODULE_EUI_PROVIDER && HAS_PERIPH_EEPROM
source "$(RIOTBOARD)/common/atmega/Kconfig"

View File

@ -18,3 +18,9 @@ config BOARD_MEGA_XPLAINED
select HAS_PERIPH_SPI
select HAS_PERIPH_TIMER
select HAS_PERIPH_UART
select MODULE_BOARDS_COMMON_ATMEGA if TEST_KCONFIG
select HAVE_SAUL_ADC
select HAVE_SAUL_GPIO
source "$(RIOTBOARD)/common/atmega/Kconfig"

View File

@ -19,3 +19,7 @@ config BOARD_MICRODUINO_CORERF
select HAS_PERIPH_SPI
select HAS_PERIPH_TIMER
select HAS_PERIPH_UART
select MODULE_BOARDS_COMMON_ATMEGA if TEST_KCONFIG
source "$(RIOTBOARD)/common/atmega/Kconfig"

View File

@ -17,3 +17,5 @@ config BOARD_WASPMOTE_PRO
select HAS_PERIPH_TIMER
select HAS_PERIPH_UART
select HAS_ARDUINO
source "$(RIOTKCONFIG)/Kconfig.ztimer_only"

View File

@ -19,3 +19,9 @@ config BOARD_ZIGDUINO
select HAS_PERIPH_SPI
select HAS_PERIPH_TIMER
select HAS_PERIPH_UART
select MODULE_BOARDS_COMMON_ATMEGA if TEST_KCONFIG
select HAVE_SAUL_ADC
select HAVE_SAUL_GPIO
source "$(RIOTBOARD)/common/atmega/Kconfig"

View File

@ -37,29 +37,17 @@ config CPU_FAM_ATMEGA128
config CPU_FAM
default "atmega128" if CPU_FAM_ATMEGA128
## Declaration of specific features
config HAS_ATMEGA_PCINT0
bool
help
Indicates that the Pin Change Interrupt bank 0 is present.
config HAS_ATMEGA_PCINT1
bool
help
Indicates that the Pin Change Interrupt bank 1 is present.
config HAS_ATMEGA_PCINT2
bool
help
Indicates that the Pin Change Interrupt bank 2 is present.
config HAS_ATMEGA_PCINT3
bool
help
Indicates that the Pin Change Interrupt bank 3 is present.
config ERROR_MODULES_CONFLICT
default "On ATmega, the RTC and RTT use to the same hardware timer." if MODULE_PERIPH_RTC && MODULE_PERIPH_RTT
depends on CPU_COMMON_ATMEGA
config MODULE_ATMEGA_COMMON
bool
depends on CPU_COMMON_ATMEGA
depends on TEST_KCONFIG
default y
help
ATmega common code.
rsource "periph/Kconfig"
source "$(RIOTCPU)/avr8_common/Kconfig"

View File

@ -2,4 +2,16 @@
* @defgroup cpu_atmega_common Atmel ATmega CPU: common files
* @brief AVR Atmega specific code
* @ingroup cpu
*
* ### Pin Change Interrupts
*
* Pin Change Interrupts (PCINTs) can be enabled using pseudo modules. To provide
* a low-memory overhead implementation, the PCINTs are grouped into **banks**.
* Each banks corresponds to one PCINT on the ATmega (PCINT0, ..., PCINT3).
*
* To enable only a specific bank, simply add `USEMODULE += atmega_pcintN` to your
* Makefile. To enable all interrupts you can use `USEMODULE += atmega_pcint`.
*
* In case you want to add a new CPU, simply provide an `atmega_pcint.h` with your
* CPU and adapt your Makefile.dep and Makefile.features files.
*/

View File

@ -0,0 +1,71 @@
# Copyright (c) 2021 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
if TEST_KCONFIG && CPU_COMMON_ATMEGA
config MODULE_ATMEGA_COMMON_PERIPH
bool
default y
help
Common ATmega peripheral drivers.
config MODULE_ATMEGA_PCINT
bool
depends on HAS_ATMEGA_PCINT0 || HAS_ATMEGA_PCINT1 || HAS_ATMEGA_PCINT2 || HAS_ATMEGA_PCINT3
help
Say y to enable all the present Pin Change Interrupt banks.
config MODULE_ATMEGA_PCINT0
bool
depends on HAS_ATMEGA_PCINT0
default MODULE_ATMEGA_PCINT
help
Say y to enable PIC bank 0.
config MODULE_ATMEGA_PCINT1
bool
depends on HAS_ATMEGA_PCINT1
default MODULE_ATMEGA_PCINT
help
Say y to enable PIC bank 1.
config MODULE_ATMEGA_PCINT2
bool
depends on HAS_ATMEGA_PCINT2
default MODULE_ATMEGA_PCINT
help
Say y to enable PIC bank 2.
config MODULE_ATMEGA_PCINT3
bool
depends on HAS_ATMEGA_PCINT3
default MODULE_ATMEGA_PCINT
help
Say y to enable PIC bank 3.
endif # TEST_KCONFIG && CPU_COMMON_ATMEGA
## Declaration of specific features
config HAS_ATMEGA_PCINT0
bool
help
Indicates that the Pin Change Interrupt bank 0 is present.
config HAS_ATMEGA_PCINT1
bool
help
Indicates that the Pin Change Interrupt bank 1 is present.
config HAS_ATMEGA_PCINT2
bool
help
Indicates that the Pin Change Interrupt bank 2 is present.
config HAS_ATMEGA_PCINT3
bool
help
Indicates that the Pin Change Interrupt bank 3 is present.

View File

@ -77,14 +77,11 @@ source "$(RIOTCPU)/atxmega/Kconfig.XMEGAE"
config HAS_CPU_ATXMEGA
bool
config HAS_ATXMEGA_EBI
bool
help
Indicates that the External Bus Interface is present.
config HAS_PERIPH_NVM
bool
help
Indicates that the Non Volatile Memory controller is present.
rsource "ebi/Kconfig"
rsource "periph/Kconfig"
source "$(RIOTCPU)/avr8_common/Kconfig"

View File

@ -4,7 +4,7 @@ USEMODULE += atxmega_periph
# All ATxmega based CPUs provide PM
USEMODULE += pm_layered
ifeq (,$(filter cpuid,$(USEMODULE)))
ifneq (,$(filter periph_cpuid,$(USEMODULE)))
USEMODULE += periph_nvm
endif

View File

@ -13,3 +13,9 @@ FEATURES_PROVIDED += periph_gpio periph_gpio_irq
FEATURES_PROVIDED += periph_nvm
FEATURES_PROVIDED += periph_pm
FEATURES_PROVIDED += periph_timer periph_timer_periodic
# Add atxmega configurations. This configuration enables modules that are only available when
# using Kconfig module modelling
ifeq (1, $(TEST_KCONFIG))
KCONFIG_ADD_CONFIG += $(RIOTCPU)/atxmega/atxmega.config
endif

View File

@ -0,0 +1,2 @@
# All ATxmega based CPUs provide PM
CONFIG_MODULE_PM_LAYERED=y

20
cpu/atxmega/ebi/Kconfig Normal file
View File

@ -0,0 +1,20 @@
# Copyright (c) 2021 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config MODULE_ATXMEGA_EBI
bool
depends on TEST_KCONFIG
depends on CPU_COMMON_ATXMEGA
depends on HAS_ATXMEGA_EBI
default y if CPU_CORE_ATXMEGA_A1
help
Low-level EBI (External BUS Interface) driver.
config HAS_ATXMEGA_EBI
bool
help
Indicates that the External Bus Interface is present.

View File

@ -0,0 +1,22 @@
# Copyright (c) 2021 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config MODULE_ATXMEGA_PERIPH
bool
depends on TEST_KCONFIG
depends on CPU_COMMON_ATXMEGA
default y
help
Common ATXmega peripheral drivers.
config MODULE_PERIPH_NVM
bool
depends on MODULE_ATXMEGA_PERIPH
depends on HAS_PERIPH_NVM
default y if MODULE_PERIPH_CPUID
help
Internal ATXmega Non Volatile Memory (NVM) driver.

View File

@ -11,6 +11,10 @@ config CPU_ARCH_AVR8
select HAS_ARCH_8BIT
select HAS_ARCH_AVR8
select MODULE_MALLOC_THREAD_SAFE if TEST_KCONFIG
# static C++ constructors need guards for thread safe initialization
select MODULE_CXX_CTOR_GUARDS if MODULE_CPP
## Common CPU symbols
config CPU_ARCH
default "avr8" if CPU_ARCH_AVR8
@ -23,3 +27,21 @@ config HAS_ARCH_AVR8
bool
help
Indicates that the current architecture is Atmel AVR8.
if CPU_ARCH_AVR8
config MODULE_AVR8_COMMON
bool
depends on TEST_KCONFIG
default y
help
AVR-8 common code.
# the atmel port uses stdio_uart by default
choice STDIO_IMPLEMENTATION
default MODULE_STDIO_UART
endchoice
endif # CPU_ARCH_AVR8
rsource "avr_libc_extra/Kconfig"

View File

@ -0,0 +1,14 @@
# Copyright (c) 2021 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config MODULE_AVR_LIBC_EXTRA
bool
depends on TEST_KCONFIG
depends on CPU_ARCH_AVR8
default y
help
AVR libc RIOT-specific support code.

View File

@ -5,7 +5,18 @@
# directory for more details.
#
comment "AT24MAC unique ID chip enabled as default EUI-48/64 provider"
depends on MODULE_EUI_PROVIDER && HAVE_AT24MAC && MODULE_AT24MAC
config MODULE_AT24MAC
bool "AT24MAC unique ID chip"
bool
prompt "AT24MAC unique ID chip" if !(MODULE_EUI_PROVIDER && HAVE_AT24MAC)
default (MODULE_EUI_PROVIDER && HAVE_AT24MAC)
select MODULE_AT24CXXX
depends on HAS_PERIPH_I2C
depends on TEST_KCONFIG
config HAVE_AT24MAC
bool
help
Indicates that an AT24MAC unique ID chip is present.

View File

@ -5,8 +5,13 @@
# directory for more details.
#
comment "AT30TSE75X temperature sensor select by default for the current platform"
depends on MODULE_AT30TSE75X && MODULE_SAUL_DEFAULT && HAVE_AT30TSE75X
config MODULE_AT30TSE75X
bool "AT30TSE75X temperature sensor"
bool
prompt "AT30TSE75X temperature sensor" if !(MODULE_SAUL_DEFAULT && HAVE_AT30TSE75X)
default (MODULE_SAUL_DEFAULT && HAVE_AT30TSE75X)
depends on HAS_PERIPH_I2C
depends on TEST_KCONFIG
select MODULE_PERIPH_I2C
@ -14,3 +19,8 @@ config MODULE_AT30TSE75X
select MODULE_ZTIMER_USEC
help
AT30TSE75x temperature sensor with serial EEPROM.
config HAVE_AT30TSE75X
bool
help
Indicates that a AT30TSE75x sensor is present on the board.

View File

@ -5,20 +5,24 @@
# directory for more details.
#
menuconfig MODULE_BMX280
bool "BMx280 Temperature, pressure and humidity sensors"
depends on TEST_KCONFIG
help
The driver supports both BME280 and BMP280 connected either via SPI or
I2C bus. Select one combination.
choice
bool "Sensor variant"
depends on MODULE_BMX280
menuconfig MODULE_BMX280
bool
prompt "BMx280 Temperature, pressure and humidity sensors" if !(MODULE_SAUL_DEFAULT && HAVE_BMX280)
default (MODULE_SAUL_DEFAULT && HAVE_BMX280)
depends on TEST_KCONFIG
if MODULE_BMX280
choice BMX280_VARIANT
bool "Model"
default MODULE_BME280_I2C if HAVE_BME280_I2C
default MODULE_BME280_SPI if HAVE_BME280_SPI
default MODULE_BMP280_I2C if HAVE_BMP280_I2C
default MODULE_BMP280_SPI if HAVE_BMP280_SPI
help
The driver supports both BME280 and BMP280 connected either via SPI or
I2C bus. Select one combination.
config MODULE_BME280_I2C
bool "BME280 on I2C"
@ -46,26 +50,33 @@ config MODULE_BMP280_SPI
endchoice
endif # MODULE_BMX280
config HAVE_BME280_I2C
bool
select MODULE_BMX280 if MODULE_SAUL_DEFAULT
select HAVE_BMX280
help
Indicates that a bme280 is present on the I2C bus.
Indicates that a bme280 sensor on the I2C bus is present.
config HAVE_BME280_SPI
bool
select MODULE_BMX280 if MODULE_SAUL_DEFAULT
select HAVE_BMX280
help
Indicates that a bme280 is present on the SPI bus.
Indicates that a bme280 sensor on the SPI bus is present.
config HAVE_BMP280_I2C
bool
select MODULE_BMX280 if MODULE_SAUL_DEFAULT
select HAVE_BMX280
help
Indicates that a bmp280 is present on the I2C bus.
Indicates that a bmp280 sensor on the I2C bus is present.
config HAVE_BMP280_SPI
bool
select MODULE_BMX280 if MODULE_SAUL_DEFAULT
select HAVE_BMX280
help
Indicates that a bmp280 is present on the SPI bus.
Indicates that a bmp280 sensor on the SPI bus is present.
config HAVE_BMX280
bool
help
Indicates that a bmx280 sensor is present.

View File

@ -5,7 +5,7 @@
# directory for more details.
#
config MODULE_DFPLAYER
menuconfig MODULE_DFPLAYER
bool "DFPlayer Mini MP3 Player"
depends on HAS_PERIPH_UART
depends on HAS_PERIPH_GPIO
@ -16,3 +16,14 @@ config MODULE_DFPLAYER
select HAVE_MULTIMEDIA_DEVICE
# Perhaps this could be moved to its own symbol to enable the dfplayer commands
select MODULE_FMT if MODULE_SHELL_COMMANDS
config DFPLAYER_NO_STRERROR
bool
prompt "Avoid using strerror in shell command" if !(HAS_ARCH_AVR8 || HAS_ARCH_MSP430)
depends on MODULE_DFPLAYER
depends on MODULE_SHELL_COMMANDS
# no strerror() on AVR and MSP430
default y if (HAS_ARCH_AVR8 || HAS_ARCH_MSP430)
help
Say y to print error codes as numbers when using the shell, instead of the corresponding
standard error string.

View File

@ -3,5 +3,5 @@ USEMODULE_INCLUDES += $(USEMODULE_INCLUDES_dfplayer)
ifneq (,$(filter arch_avr8 arch_msp430,$(FEATURES_USED)))
# no strerror() on AVR and MSP430
CFLAGS += -DDFPLAYER_NO_STRERROR
CFLAGS += -DCONFIG_DFPLAYER_NO_STRERROR
endif

View File

@ -5,15 +5,25 @@
# directory for more details.
#
config MODULE_PERIPH_RTC
menuconfig MODULE_PERIPH_RTC
bool "RTC peripheral driver"
depends on HAS_PERIPH_RTC
select MODULE_PERIPH_COMMON
if MODULE_PERIPH_RTC
config MODULE_PERIPH_INIT_RTC
bool "Auto initialize RTC peripheral"
default y if MODULE_PERIPH_INIT
depends on MODULE_PERIPH_RTC
config MODULE_PERIPH_RTC_MS
bool "Support for time with sub-second component"
depends on HAS_PERIPH_RTC_MS
help
Provides an interface to access the RTC time with a sub-second
component.
endif #MODULE_PERIPH_RTC
config MODULE_PERIPH_RTC_MEM
bool "Low-Power RTC Memory"

View File

@ -0,0 +1,14 @@
# Include this for boards whose timer periph cannot generate a clock frequency
# suitable for xtimer with the available clock sources and dividers.
# This will use ztimer to perform the required frequency conversion.
# By default, xtimer is still used with ztimer as backed, unless
# ztimer_xtimer_compat is used.
config HAVE_ZTIMER_ONLY
bool
default y
select MODULE_ZTIMER if MODULE_XTIMER
select MODULE_ZTIMER_USEC if MODULE_XTIMER
help
Indicates that the board cannot generate a clock frequency suitable for
xtimer and requires ztimer for conversion. ztimer is used as backend.

View File

@ -14,6 +14,7 @@ ifneq (,$(filter periph_init, $(USEMODULE)))
PERIPH_IGNORE_MODULES := \
periph_init% \
periph_common \
periph_rtc_ms \
periph_rtc_rtt \
periph_clic \
periph_coretimer \
@ -68,3 +69,6 @@ USEMODULE += $(filter efm32_coretemp, $(FEATURES_USED))
# if LC filter(s) is attached to the CPUs voltage regulator, use it
USEMODULE += $(filter vdd_lc_filter_%,$(FEATURES_USED))
# select arduino_pwm pseudomodule if the corresponding feature is used
USEMODULE += $(filter arduino_pwm, $(FEATURES_USED))

View File

@ -38,6 +38,7 @@ export RIOTPKG # For overriding RIOT's pkg directory
export RIOTTOOLS # Location of host machine tools
export RIOTPROJECT # Top level git root of the project being built, or PWD if not a git repository
export RIOTMAKE # Location of all supplemental Makefiles (such as this file)
export RIOTKCONFIG # Location of all supplemental Kconfig files
export BINDIRBASE # This is the folder where the application should be built in. For each BOARD a different subfolder is used.
export BINDIR # This is the folder where the application should be built in.
export BUILD_DIR # This is the base folder to store common build files and artifacts, e.g. test results.

View File

@ -19,4 +19,64 @@ config MODULE_LIBFIXMATH_UNITTESTS
depends on !HAS_ARCH_8BIT
depends on !HAS_MSP430
menu "Accuracy"
config FIXMATH_NO_ROUNDING
bool "Disable rounding"
help
Say y to disable rounding. Results may round randomly up or down, i.e.
their accuracy is +-1. Runs slightly faster.
config FIXMATH_NO_OVERFLOW
bool "Disable overflow detection"
help
Say y to disable overflow detection and saturating arithmetic support.
Overflowing computations will give garbage results. Runs slightly
faster.
endmenu
menu "Platform"
config FIXMATH_NO_64BIT
bool "Disable use of uint64_t"
help
Say y to disable use of uint64_t in the code. Meant for compilers that
do not have 64-bit support. Runs the same speed or slightly slower.
config FIXMATH_OPTIMIZE_8BIT
bool "Optimize for 8-bit architectures"
default y if HAS_ARCH_8BIT
help
Say y to use variants of the functions that are suitable for small 8- and
16-bit processors. Much faster on those processors, much slower on 32-bit
processors.
config FIXMATH_NO_CACHE
bool "Do not use cache"
default y
help
Say y to avoid using cache for exp etc. function results. Uses less RAM,
runs slightly slower.
endmenu
menu "Algorithms"
config FIXMATH_SIN_LUT
bool "Use sin look-up table generated by fixsingen"
help
Say y to use a look-up table generated by the fixsingen tool from svn,
it is faster on some devices but the lookup table takes up ~200KiB
(205376 bytes) in memory and can be slower depending on usage.
config FIXMATH_FAST_SIN
bool "Fast sin approximation"
help
Say y to enable a faster but less accurate approximation of the sin
function, for code where accuracy isn't as important such as games logic
or graphics rendering then this is often a worthwhile tradeoff.
endmenu
endif # PACKAGE_LIBFIXMATH

View File

@ -7,6 +7,10 @@ ifneq (,$(filter arch_8bit,$(FEATURES_USED)))
CFLAGS += -DFIXMATH_OPTIMIZE_8BIT
endif
# translate Kconfig options to CFLAGS for the package
libfixmath_options = $(filter CONFIG_FIXMATH_%,$(.VARIABLES))
CFLAGS += $(libfixmath_options:CONFIG_FIXMATH_%=-DFIXMATH_%)
INCLUDES += -I$(PKG_SOURCE_DIR)/libfixmath
ifneq (,$(filter libfixmath-unittests,$(USEMODULE)))

View File

@ -8,4 +8,3 @@
config PACKAGE_NANOCBOR
bool "NANOCBOR encoder and decoder library package"
depends on TEST_KCONFIG
depends on HAS_ARCH_32BIT

View File

@ -9,12 +9,28 @@ config PACKAGE_QDSA
bool "qDSA Digital Signatures package"
depends on TEST_KCONFIG
depends on !HAS_ARCH_16BIT
select MODULE_QDSA_ASM if HAS_ARCH_AVR8 || CPU_CORE_CORTEX_M23
select MODULE_QDSA_ASM if CPU_CORE_CORTEX_M0 || CPU_CORE_CORTEX_M0PLUS
help
Small and Secure Digital Signatures with Curve-based
Diffie-Hellman Key Pairs.
if PACKAGE_QDSA
config MODULE_QDSA_ASM
bool
default y if HAS_ARCH_AVR8 || CPU_CORE_CORTEX_M23
default y if CPU_CORE_CORTEX_M0 || CPU_CORE_CORTEX_M0PLUS
depends on TEST_KCONFIG
config MODULE_QDSA_IMPL_ARM
bool
default y if CPU_CORE_CORTEX_M23 || CPU_CORE_CORTEX_M0 || CPU_CORE_CORTEX_M0PLUS
config MODULE_QDSA_IMPL_AVR
bool
default y if HAS_ARCH_AVR8
config MODULE_QDSA_IMPL_CREF
bool
default y if !MODULE_QDSA_IMPL_ARM && !MODULE_QDSA_IMPL_AVR
endif # PACKAGE_QDSA

View File

@ -6,4 +6,4 @@ PKG_LICENSE=PD
include $(RIOTBASE)/pkg/pkg.mk
all:
$(QQ)"$(MAKE)" -C $(PKG_SOURCE_DIR)/$(QDSA_IMPL)
$(QQ)"$(MAKE)" -C $(PKG_SOURCE_DIR)/$(patsubst qdsa_impl_%,%,$(filter qdsa_impl_%,$(USEMODULE)))

View File

@ -6,5 +6,15 @@ ifneq (,$(filter arch_avr8,$(FEATURES_USED)))
USEMODULE += qdsa_asm
endif
ifeq (,$(filter qdsa_impl_%,$(USEMODULE)))
ifneq (,$(filter cortex-m23 cortex-m0%,$(CPU_CORE)))
USEMODULE += qdsa_impl_arm
else ifneq (,$(filter arch_avr8,$(FEATURES_USED)))
USEMODULE += qdsa_impl_avr
else
USEMODULE += qdsa_impl_cref
endif
endif
# qDsa is not 16 bit compatible
FEATURES_BLACKLIST += arch_16bit

View File

@ -1,16 +1,8 @@
ifneq (,$(filter cortex-m23 cortex-m0%,$(CPU_CORE)))
QDSA_IMPL ?= arm
else
ifneq (,$(filter arch_avr8,$(FEATURES_USED)))
QDSA_IMPL ?= avr
else
QDSA_IMPL ?= cref
endif
endif
PSEUDOMODULES += qdsa_impl_arm
PSEUDOMODULES += qdsa_impl_avr
PSEUDOMODULES += qdsa_impl_cref
export QDSA_IMPL
INCLUDES += -I$(PKGDIRBASE)/qdsa/$(QDSA_IMPL)
INCLUDES += -I$(PKGDIRBASE)/qdsa/$(patsubst qdsa_impl_%,%,$(filter qdsa_impl_%,$(USEMODULE)))
ifeq (cortex-m0plus,$(CPU_CORE))
# There are problems with the LLVM assembler and the Cortex-M0+ instruction

View File

@ -19,6 +19,7 @@ rsource "checksum/Kconfig"
rsource "color/Kconfig"
rsource "crypto/Kconfig"
rsource "congure/Kconfig"
rsource "cxx_ctor_guards/Kconfig"
rsource "div/Kconfig"
rsource "embunit/Kconfig"
rsource "entropy_source/Kconfig"

View File

@ -8,7 +8,7 @@
menu "Standard Input/Output (STDIO)"
depends on TEST_KCONFIG
choice
choice STDIO_IMPLEMENTATION
bool "STDIO implementation"
default MODULE_STDIO_NATIVE if CPU_ARCH_NATIVE
default MODULE_STDIO_UART

View File

@ -10,7 +10,6 @@ config MODULE_ARDUINO_SKETCHES
menuconfig MODULE_ARDUINO
bool "Arduino support"
imply MODULE_ARDUINO_PWM
imply MODULE_PERIPH_ADC
imply MODULE_PERIPH_I2C
imply MODULE_PERIPH_SPI

View File

@ -24,3 +24,5 @@ INCLUDES += -I$(RIOTBASE)/sys/arduino/include
# package, which is __horrible__ out of date. However, we cannot simply ignore
# all Ubuntu users and instead simply manually enable C++11 support
CXXEXFLAGS += -std=c++11
PSEUDOMODULES += arduino_pwm

View File

@ -0,0 +1,13 @@
# Copyright (c) 2021 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config MODULE_CXX_CTOR_GUARDS
bool "C++ constructor guards for static instances"
depends on TEST_KCONFIG
help
C++ constructor guards for thread-safe initialization of static instances.
Warning! this module is likely only compatible with g++.

View File

@ -56,7 +56,7 @@ static const char *_states[] = {
static void _print_error(int retval)
{
print_str("Error: ");
#ifdef DFPLAYER_NO_STRERROR
#ifdef CONFIG_DFPLAYER_NO_STRERROR
print_s32_dec(retval);
#else
print_str(strerror(-retval));
@ -377,7 +377,7 @@ int _sc_dfplayer(int argc, char **argv)
}
if (!strcmp("files", argv[pos])) {
if (++pos != argc) {
if ((pos + 1) != argc) {
print_str("Error: Expected no parameter for argument \"files\"\n");
return 1;
}

View File

@ -0,0 +1,15 @@
# Copyright (c) 2021 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
config NO_RIOT_IMAGE
bool
prompt "Avoid showing the RIOT logo on the test" if !HAS_ARCH_AVR8
# the logo does not usually fit in AVR8
default y if HAS_ARCH_AVR8
help
Say y to avoid loading the RIOT logo on the test application. Useful for architectures
storing it in a limited RAM.

View File

@ -5,15 +5,19 @@ USEMODULE += ili9341
USEMODULE += ztimer
USEMODULE += ztimer_msec
# As there is an 'Kconfig' we want to explicitly disable Kconfig by setting
# the variable to empty
SHOULD_RUN_KCONFIG ?=
include $(RIOTBASE)/Makefile.include
# Check if being configured via Kconfig
ifndef CONFIG_KCONFIG_USEMODULE_ILI9341
CFLAGS += -DCONFIG_ILI9341_LE_MODE
endif
CFLAGS += -DCONFIG_ILI9341_LE_MODE
# The AVR architecture stores the image in the RAM, this usually doesn't fit.
# This flag excludes the image from the test
ifneq (,$(filter arch_avr8,$(FEATURES_USED)))
CFLAGS += -DNO_RIOT_IMAGE
# The AVR architecture stores the image in the RAM, this usually doesn't fit.
# This flag excludes the image from the test
ifneq (,$(filter arch_avr8,$(FEATURES_USED)))
CFLAGS += -DCONFIG_NO_RIOT_IMAGE
endif
endif

View File

@ -75,7 +75,7 @@ int main(void)
/* Make the same square black again */
ili9341_fill(&dev, 10, 59, 10, 109, 0x0000);
#ifndef NO_RIOT_IMAGE
#ifndef CONFIG_NO_RIOT_IMAGE
/* Approximate middle of the display */
ili9341_pixmap(&dev, 95, 222, 85, 153, (const uint16_t *)picture);
#endif

View File

@ -9,3 +9,4 @@ config APPLICATION
bool
default y
imply MODULE_PERIPH_RTC_MEM
imply MODULE_PERIPH_RTC_MS