From 8d11ca417f594655ab04e8ee55aadc2dfe71c375 Mon Sep 17 00:00:00 2001 From: PeterKietzmann Date: Tue, 20 Nov 2018 09:43:24 +0100 Subject: [PATCH] cpu/atmega_common: add mega2560 puf_sram feature --- boards/arduino-mega2560/Makefile.features | 1 + cpu/atmega_common/include/cpu_conf.h | 5 +++++ cpu/atmega_common/startup.c | 6 ++++++ 3 files changed, 12 insertions(+) diff --git a/boards/arduino-mega2560/Makefile.features b/boards/arduino-mega2560/Makefile.features index c4e9afe55b..67246c4e1a 100644 --- a/boards/arduino-mega2560/Makefile.features +++ b/boards/arduino-mega2560/Makefile.features @@ -1,3 +1,4 @@ +FEATURES_PROVIDED += puf_sram include $(RIOTBOARD)/common/arduino-atmega/Makefile.features include $(RIOTCPU)/atmega2560/Makefile.features diff --git a/cpu/atmega_common/include/cpu_conf.h b/cpu/atmega_common/include/cpu_conf.h index 933c60bc59..7eacb5bf2b 100644 --- a/cpu/atmega_common/include/cpu_conf.h +++ b/cpu/atmega_common/include/cpu_conf.h @@ -51,6 +51,11 @@ extern "C" { #define THREAD_STACKSIZE_IDLE (128) /** @} */ +/** + * @brief Attribute for memory sections required by SRAM PUF + */ +#define PUF_SRAM_ATTRIBUTES __attribute__((used, section(".noinit"))) + #ifdef __cplusplus } #endif diff --git a/cpu/atmega_common/startup.c b/cpu/atmega_common/startup.c index 1792fac5d8..0dbb20fbd3 100644 --- a/cpu/atmega_common/startup.c +++ b/cpu/atmega_common/startup.c @@ -25,6 +25,9 @@ /* For Catchall-Loop */ #include "board.h" +#ifdef MODULE_PUF_SRAM +#include "puf_sram.h" +#endif /** * @brief functions for initializing the board, std-lib and kernel @@ -65,6 +68,9 @@ __attribute__((used, naked)) void init8_ovr(void) */ __attribute__((used)) void reset_handler(void) { +#ifdef MODULE_PUF_SRAM + puf_sram_init((uint8_t *)RAMEND-SEED_RAM_LEN, SEED_RAM_LEN); +#endif /* initialize the board and startup the kernel */ board_init(); /* startup the kernel */