diff --git a/boards/arduino-mega2560/Makefile.features b/boards/arduino-mega2560/Makefile.features
index c4e9afe55bcd038784a7c3627ffb01704c62c312..67246c4e1ad08557082946735830cb0ce87467af 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 933c60bc59cdf21792d41a725bcf5a3771eeceba..7eacb5bf2bfc70d92cd2beb41903003896d10c3d 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 1792fac5d893e59cfa371a9882cbcdd4b1dd80c1..0dbb20fbd305dc661eaad00944a9447feb2c7102 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 */