diff --git a/cpu/arm7_common/Makefile.features b/cpu/arm7_common/Makefile.features index 78b65033f3..f4b17a8c67 100644 --- a/cpu/arm7_common/Makefile.features +++ b/cpu/arm7_common/Makefile.features @@ -3,3 +3,4 @@ FEATURES_PROVIDED += arch_arm FEATURES_PROVIDED += arch_arm7 FEATURES_PROVIDED += cpp FEATURES_PROVIDED += periph_pm +FEATURES_PROVIDED += puf_sram diff --git a/cpu/arm7_common/arm7_init.c b/cpu/arm7_common/arm7_init.c index c0c1c06938..0dfdf92733 100644 --- a/cpu/arm7_common/arm7_init.c +++ b/cpu/arm7_common/arm7_init.c @@ -20,6 +20,9 @@ #include #include #include "thread.h" +#ifdef MODULE_PUF_SRAM +#include "puf_sram.h" +#endif #include "log.h" @@ -63,6 +66,12 @@ void bootloader(void) /* initialize bss and data */ _init_data(); +#ifdef MODULE_PUF_SRAM + /* uninitialized heap starts after bss section */ + extern unsigned int __bss_end; + puf_sram_init((uint8_t *) __bss_end, SEED_RAM_LEN); +#endif + /* cpu specific setup of clocks, peripherals */ cpu_init(); diff --git a/cpu/lpc2387/include/cpu_conf.h b/cpu/lpc2387/include/cpu_conf.h index 9f37cb9f0f..b7a385ec25 100644 --- a/cpu/lpc2387/include/cpu_conf.h +++ b/cpu/lpc2387/include/cpu_conf.h @@ -71,6 +71,11 @@ extern "C" { #define CC_CONF_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) /** @} */ +/** + * @brief Attribute for memory sections required by SRAM PUF + */ +#define PUF_SRAM_ATTRIBUTES __attribute__((used, section(".noinit"))) + #ifdef __cplusplus } #endif diff --git a/tests/puf_sram/main.c b/tests/puf_sram/main.c index 61ac6fc6f7..21050fdf6a 100644 --- a/tests/puf_sram/main.c +++ b/tests/puf_sram/main.c @@ -25,7 +25,7 @@ int main(void) { puts("Start: Test random number generator"); - printf("Success: Data for puf_sram_seed: [0x%08" PRIX32 "]", puf_sram_seed); + printf("Success: Data for puf_sram_seed: [0x%08" PRIX32 "]\n", puf_sram_seed); puts("End: Test finished"); return 0;