mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-15 09:33:50 +01:00
cpu/samd21: add support for SAMD20
This commit is contained in:
parent
7b65398ae1
commit
31b8dad147
@ -1,7 +1,12 @@
|
||||
CPU_FAM := $(shell echo $(CPU_MODEL) | cut -c -6)
|
||||
|
||||
FEATURES_PROVIDED += periph_cpuid
|
||||
FEATURES_PROVIDED += periph_dma
|
||||
|
||||
CPU_MODELS_WITHOUT_DMA = samd20%
|
||||
ifeq (,$(filter $(CPU_MODELS_WITHOUT_DMA),$(CPU_MODEL)))
|
||||
FEATURES_PROVIDED += periph_dma
|
||||
endif
|
||||
|
||||
FEATURES_PROVIDED += periph_flashpage
|
||||
FEATURES_PROVIDED += periph_flashpage_pagewise
|
||||
FEATURES_PROVIDED += periph_flashpage_rwee
|
||||
|
||||
@ -5,7 +5,7 @@ CFLAGS += -DCPU_FAM_$(call uppercase_and_underscore,$(CPU_FAM))
|
||||
CFLAGS += -D__$(call uppercase_and_underscore,$(CPU_MODEL))__
|
||||
|
||||
# Compute CPU_LINE
|
||||
LINE := $(shell echo $(CPU_MODEL) | sed -E -e 's/^sam([a-z][0-9][0-9])(.)([0-9][0-9])(.)/\1 \2 \3 \4/')
|
||||
LINE := $(shell echo $(CPU_MODEL) | sed -E -e 's/^sam([a-z][0-9][0-9])(.)([0-9][0-9])(.)*/\1 \2 \3 \4/')
|
||||
FAMILY := $(word 1, $(LINE))
|
||||
TYPE1 := $(word 2, $(LINE))
|
||||
MEMORY := $(word 3, $(LINE))
|
||||
@ -16,7 +16,7 @@ ROM_LEN := $(shell echo $$((1 << $(MEMORY))))
|
||||
|
||||
# get vendor file to extract RAM length
|
||||
VENDOR_FILE := $(shell find $(RIOTCPU)/sam0_common/include/vendor/sam$(FAMILY) -name $(CPU_MODEL).h | grep include.*/sam)
|
||||
RAM_LEN := $(shell sed -E -n 's/\#define (HMCRAMC0_SIZE|HSRAM_SIZE).*(0x[[:xdigit:]]*).*/\2/p' $(VENDOR_FILE))
|
||||
RAM_LEN := $(shell sed -E -n 's/\#define (HRAMC0_SIZE|HMCRAMC0_SIZE|HSRAM_SIZE).*(0x[[:xdigit:]]*).*/\2/p' $(VENDOR_FILE))
|
||||
|
||||
ROM_START_ADDR ?= 0x00000000
|
||||
RAM_START_ADDR ?= 0x20000000
|
||||
|
||||
@ -31,6 +31,10 @@
|
||||
|
||||
#if defined(CPU_SAMD10)
|
||||
#include "vendor/samd10/include/samd10.h"
|
||||
#elif defined(CPU_SAMD20)
|
||||
#include "vendor/samd20/include/samd20.h"
|
||||
#elif defined(CPU_SAMD20B)
|
||||
#include "vendor/samd20/include_b/samd20.h"
|
||||
#elif defined(CPU_SAMD21A)
|
||||
#include "vendor/samd21/include_a/samd21.h"
|
||||
#elif defined(CPU_SAMD21B)
|
||||
|
||||
@ -849,6 +849,7 @@ typedef struct {
|
||||
*/
|
||||
#define WDT_HAS_INIT (1)
|
||||
|
||||
#if defined(REV_DMAC) || DOXYGEN
|
||||
/**
|
||||
* @name sam0 DMA peripheral
|
||||
* @{
|
||||
@ -1117,6 +1118,7 @@ void dma_wait(dma_t dma);
|
||||
*/
|
||||
void dma_cancel(dma_t dma);
|
||||
/** @} */
|
||||
#endif /* REV_DMAC || DOXYGEN */
|
||||
|
||||
/**
|
||||
* @name sam0 RTC Tamper Detection
|
||||
|
||||
@ -1,6 +1,11 @@
|
||||
ifneq (,$(filter samd10%,$(CPU_MODEL)))
|
||||
CFLAGS += -DCPU_SAMD10
|
||||
endif
|
||||
ifneq (,$(filter samd20%b,$(CPU_MODEL)))
|
||||
CFLAGS += -DCPU_SAMD20B
|
||||
else ifneq (,$(filter samd20%,$(CPU_MODEL)))
|
||||
CFLAGS += -DCPU_SAMD20
|
||||
endif
|
||||
ifneq (,$(filter samd21%a,$(CPU_MODEL)))
|
||||
CFLAGS += -DCPU_SAMD21A
|
||||
endif
|
||||
|
||||
@ -68,6 +68,10 @@
|
||||
#define GCLK_GENCTRL_SRC_FDPLL (GCLK_GENCTRL_SRC_FDPLL_Val << GCLK_GENCTRL_SRC_Pos)
|
||||
#endif
|
||||
|
||||
#ifndef GCLK_CLKCTRL_ID_DFLL48
|
||||
#define GCLK_CLKCTRL_ID_DFLL48 GCLK_CLKCTRL_ID_DFLL48M
|
||||
#endif
|
||||
|
||||
void sam0_gclk_enable(uint8_t id)
|
||||
{
|
||||
(void) id;
|
||||
|
||||
@ -49,6 +49,9 @@ WEAK_DEFAULT void isr_tcc0(void);
|
||||
WEAK_DEFAULT void isr_tcc1(void);
|
||||
WEAK_DEFAULT void isr_tcc2(void);
|
||||
WEAK_DEFAULT void isr_tcc3(void);
|
||||
WEAK_DEFAULT void isr_tc0(void);
|
||||
WEAK_DEFAULT void isr_tc1(void);
|
||||
WEAK_DEFAULT void isr_tc2(void);
|
||||
WEAK_DEFAULT void isr_tc3(void);
|
||||
WEAK_DEFAULT void isr_tc4(void);
|
||||
WEAK_DEFAULT void isr_tc5(void);
|
||||
@ -82,14 +85,26 @@ ISR_VECTOR(1) const isr_t vector_cpu[CPU_IRQ_NUMOF] = {
|
||||
isr_sercom3, /* 12 Serial Communication Interface 3 */
|
||||
isr_sercom4, /* 13 Serial Communication Interface 4 */
|
||||
isr_sercom5, /* 14 Serial Communication Interface 5 */
|
||||
#ifdef TCC0
|
||||
isr_tcc0, /* 15 Timer Counter Control 0 */
|
||||
#else
|
||||
isr_tc0, /* 15 Basic Timer Counter 0 */
|
||||
#endif
|
||||
#ifdef TCC1
|
||||
isr_tcc1, /* 16 Timer Counter Control 1 */
|
||||
#else
|
||||
isr_tc1, /* 16 Basic Timer Counter 1 */
|
||||
#endif
|
||||
#ifdef TCC2
|
||||
isr_tcc2, /* 17 Timer Counter Control 2 */
|
||||
isr_tc3, /* 18 Basic Timer Counter 0 */
|
||||
isr_tc4, /* 19 Basic Timer Counter 1 */
|
||||
isr_tc5, /* 20 Basic Timer Counter 2 */
|
||||
isr_tc6, /* 21 Basic Timer Counter 3 */
|
||||
isr_tc7, /* 22 Basic Timer Counter 4 */
|
||||
#else
|
||||
isr_tc2, /* 17 Basic Timer Counter 2 */
|
||||
#endif
|
||||
isr_tc3, /* 18 Basic Timer Counter 3 */
|
||||
isr_tc4, /* 19 Basic Timer Counter 4 */
|
||||
isr_tc5, /* 20 Basic Timer Counter 5 */
|
||||
isr_tc6, /* 21 Basic Timer Counter 6 */
|
||||
isr_tc7, /* 22 Basic Timer Counter 7 */
|
||||
isr_adc, /* 23 Analog Digital Converter */
|
||||
isr_ac, /* 24 Analog Comparators */
|
||||
isr_dac, /* 25 Digital Analog Converter */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user