From 9fafc4575e17ddc761325bf918ace7b379ae56bd Mon Sep 17 00:00:00 2001 From: Troels Hoffmeyer Date: Tue, 11 Nov 2014 16:36:09 +0100 Subject: [PATCH] samr21: cpuid implemented by reading 128 bits from flash --- boards/samr21-xpro/Makefile.features | 2 +- cpu/samd21/include/cpu-conf.h | 4 ++++ cpu/samd21/periph/cpuid.c | 17 +++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 cpu/samd21/periph/cpuid.c diff --git a/boards/samr21-xpro/Makefile.features b/boards/samr21-xpro/Makefile.features index 1a729a107bbf9..06c585d67d392 100644 --- a/boards/samr21-xpro/Makefile.features +++ b/boards/samr21-xpro/Makefile.features @@ -1 +1 @@ -FEATURES_PROVIDED += periph_gpio cpp +FEATURES_PROVIDED += periph_gpio periph_cpuid cpp diff --git a/cpu/samd21/include/cpu-conf.h b/cpu/samd21/include/cpu-conf.h index b2dd64aee55e0..9b3f1afb8dfa3 100644 --- a/cpu/samd21/include/cpu-conf.h +++ b/cpu/samd21/include/cpu-conf.h @@ -48,5 +48,9 @@ /** @} */ +/** + * @brief CPUID_ID_LEN length of cpuid in bytes + */ +#define CPUID_ID_LEN (16) /* 128 bits long, 16 bytes long */ #endif /* __CPU_CONF_H */ /** @} */ diff --git a/cpu/samd21/periph/cpuid.c b/cpu/samd21/periph/cpuid.c new file mode 100644 index 0000000000000..6673dc4f2c37a --- /dev/null +++ b/cpu/samd21/periph/cpuid.c @@ -0,0 +1,17 @@ + +#include + +#include "cpu-conf.h" +#include "periph/cpuid.h" + +#define Word0 (*(volatile uint32_t *)0x0080A00C) +#define Word1 (*(volatile uint32_t *)0x0080A040) +#define Word2 (*(volatile uint32_t *)0x0080A044) +#define Word3 (*(volatile uint32_t *)0x0080A048) + + +void cpuid_get(void *id) +{ + uint32_t source_address[] = {Word0, Word1, Word2, Word3}; + memcpy(id, (void*) source_address, CPUID_ID_LEN); +}