Fix Archim1 stepper timing (with new variant) (#19596)
This commit is contained in:
		
							
								
								
									
										59
									
								
								buildroot/share/PlatformIO/boards/archim.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								buildroot/share/PlatformIO/boards/archim.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
			
		||||
{
 | 
			
		||||
  "build": {
 | 
			
		||||
    "core": "arduino",
 | 
			
		||||
    "cpu": "cortex-m3",
 | 
			
		||||
    "extra_flags": "-D__SAM3X8E__ -DARDUINO_ARCH_SAM -DARDUINO_SAM_DUE",
 | 
			
		||||
    "f_cpu": "84000000L",
 | 
			
		||||
    "hwids": [
 | 
			
		||||
      [
 | 
			
		||||
        "0x27B1",
 | 
			
		||||
        "0x0001"
 | 
			
		||||
      ],
 | 
			
		||||
      [
 | 
			
		||||
        "0x2341",
 | 
			
		||||
        "0x003E"
 | 
			
		||||
      ],
 | 
			
		||||
      [
 | 
			
		||||
        "0x2341",
 | 
			
		||||
        "0x003D"
 | 
			
		||||
      ]
 | 
			
		||||
    ],
 | 
			
		||||
    "ldscript": "linker_scripts/gcc/flash.ld",
 | 
			
		||||
    "mcu": "at91sam3x8e",
 | 
			
		||||
    "usb_product": "Archim",
 | 
			
		||||
    "variant": "archim"
 | 
			
		||||
  },
 | 
			
		||||
  "connectivity": [
 | 
			
		||||
    "can"
 | 
			
		||||
  ],
 | 
			
		||||
  "debug": {
 | 
			
		||||
    "jlink_device": "ATSAM3X8E",
 | 
			
		||||
    "openocd_chipname": "at91sam3X8E",
 | 
			
		||||
    "openocd_target": "at91sam3XXX",
 | 
			
		||||
    "svd_path": "ATSAM3X8E.svd"
 | 
			
		||||
  },
 | 
			
		||||
  "frameworks": [
 | 
			
		||||
    "arduino",
 | 
			
		||||
    "simba"
 | 
			
		||||
  ],
 | 
			
		||||
  "name": "Archim",
 | 
			
		||||
  "upload": {
 | 
			
		||||
    "disable_flushing": true,
 | 
			
		||||
    "maximum_ram_size": 98304,
 | 
			
		||||
    "maximum_size": 524288,
 | 
			
		||||
    "native_usb": true,
 | 
			
		||||
    "protocol": "sam-ba",
 | 
			
		||||
    "protocols": [
 | 
			
		||||
      "sam-ba",
 | 
			
		||||
      "jlink",
 | 
			
		||||
      "blackmagic",
 | 
			
		||||
      "atmel-ice",
 | 
			
		||||
      "stlink"
 | 
			
		||||
    ],
 | 
			
		||||
    "require_upload_port": true,
 | 
			
		||||
    "use_1200bps_touch": true,
 | 
			
		||||
    "wait_for_upload_port": true
 | 
			
		||||
  },
 | 
			
		||||
  "url": "https://ultimachine.com",
 | 
			
		||||
  "vendor": "UltiMachine"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								buildroot/share/PlatformIO/variants/archim/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								buildroot/share/PlatformIO/variants/archim/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
# Exception for libsam
 | 
			
		||||
!libsam_sam3x8e_gcc_rel.a
 | 
			
		||||
@@ -0,0 +1,42 @@
 | 
			
		||||
#
 | 
			
		||||
#  Copyright (c) 2011 Arduino.  All right reserved.
 | 
			
		||||
#
 | 
			
		||||
#  This library is free software; you can redistribute it and/or
 | 
			
		||||
#  modify it under the terms of the GNU Lesser General Public
 | 
			
		||||
#  License as published by the Free Software Foundation; either
 | 
			
		||||
#  version 2.1 of the License, or (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
#  This library is distributed in the hope that it will be useful,
 | 
			
		||||
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
#  See the GNU Lesser General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
#  You should have received a copy of the GNU Lesser General Public
 | 
			
		||||
#  License along with this library; if not, write to the Free Software
 | 
			
		||||
#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
SUBMAKE_OPTIONS=--no-builtin-rules --no-builtin-variables --no-print-directory
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
# Rules
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
all: arduino_due_x
 | 
			
		||||
 | 
			
		||||
.PHONY: arduino_due_x
 | 
			
		||||
arduino_due_x:
 | 
			
		||||
	@echo ------------------------------------------------------------------------------------
 | 
			
		||||
	@echo --- Making variant arduino_due_x
 | 
			
		||||
	@$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f libvariant_arduino_due_x.mk
 | 
			
		||||
#	@$(MAKE) $(SUBMAKE_OPTIONS) -f libvariant_arduino_due_x.mk
 | 
			
		||||
	@echo ------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
.PHONY: clean
 | 
			
		||||
clean:
 | 
			
		||||
	@echo ------------------------------------------------------------------------------------
 | 
			
		||||
	@echo --- Cleaning variant arduino_due_x
 | 
			
		||||
	@$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f libvariant_arduino_due_x.mk $@
 | 
			
		||||
#	@$(MAKE) $(SUBMAKE_OPTIONS) -f libvariant_arduino_due_x.mk $@
 | 
			
		||||
	@echo ------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1,25 @@
 | 
			
		||||
#
 | 
			
		||||
#  Copyright (c) 2011 Arduino.  All right reserved.
 | 
			
		||||
#
 | 
			
		||||
#  This library is free software; you can redistribute it and/or
 | 
			
		||||
#  modify it under the terms of the GNU Lesser General Public
 | 
			
		||||
#  License as published by the Free Software Foundation; either
 | 
			
		||||
#  version 2.1 of the License, or (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
#  This library is distributed in the hope that it will be useful,
 | 
			
		||||
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 | 
			
		||||
#  See the GNU Lesser General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
#  You should have received a copy of the GNU Lesser General Public
 | 
			
		||||
#  License along with this library; if not, write to the Free Software
 | 
			
		||||
#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# Optimization level
 | 
			
		||||
# -O1 Optimize
 | 
			
		||||
# -O2 Optimize even more
 | 
			
		||||
# -O3 Optimize yet more
 | 
			
		||||
# -O0 Reduce compilation time and make debugging produce the expected results
 | 
			
		||||
# -Os Optimize for size
 | 
			
		||||
OPTIMIZATION = -g -O0 -DDEBUG
 | 
			
		||||
							
								
								
									
										82
									
								
								buildroot/share/PlatformIO/variants/archim/build_gcc/gcc.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								buildroot/share/PlatformIO/variants/archim/build_gcc/gcc.mk
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,82 @@
 | 
			
		||||
#
 | 
			
		||||
#  Copyright (c) 2011 Arduino.  All right reserved.
 | 
			
		||||
#
 | 
			
		||||
#  This library is free software; you can redistribute it and/or
 | 
			
		||||
#  modify it under the terms of the GNU Lesser General Public
 | 
			
		||||
#  License as published by the Free Software Foundation; either
 | 
			
		||||
#  version 2.1 of the License, or (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
#  This library is distributed in the hope that it will be useful,
 | 
			
		||||
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
#  See the GNU Lesser General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
#  You should have received a copy of the GNU Lesser General Public
 | 
			
		||||
#  License along with this library; if not, write to the Free Software
 | 
			
		||||
#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# Tool suffix when cross-compiling
 | 
			
		||||
CROSS_COMPILE = $(ARM_GCC_TOOLCHAIN)/arm-none-eabi-
 | 
			
		||||
 | 
			
		||||
# Compilation tools
 | 
			
		||||
AR = $(CROSS_COMPILE)ar
 | 
			
		||||
CC = $(CROSS_COMPILE)gcc
 | 
			
		||||
CXX = $(CROSS_COMPILE)g++
 | 
			
		||||
AS = $(CROSS_COMPILE)as
 | 
			
		||||
NM = $(CROSS_COMPILE)nm
 | 
			
		||||
ifeq ($(OS),Windows_NT)
 | 
			
		||||
RM=cs-rm -Rf
 | 
			
		||||
else
 | 
			
		||||
RM=rm -Rf
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
SEP=\\
 | 
			
		||||
 | 
			
		||||
# ---------------------------------------------------------------------------------------
 | 
			
		||||
# C Flags
 | 
			
		||||
 | 
			
		||||
CFLAGS += -Wall -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int
 | 
			
		||||
CFLAGS += -Werror-implicit-function-declaration -Wmain -Wparentheses
 | 
			
		||||
CFLAGS += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused
 | 
			
		||||
CFLAGS += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef
 | 
			
		||||
CFLAGS += -Wshadow -Wpointer-arith -Wbad-function-cast -Wwrite-strings
 | 
			
		||||
CFLAGS += -Wsign-compare -Waggregate-return -Wstrict-prototypes
 | 
			
		||||
CFLAGS += -Wmissing-prototypes -Wmissing-declarations
 | 
			
		||||
CFLAGS += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations
 | 
			
		||||
CFLAGS += -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long
 | 
			
		||||
CFLAGS += -Wunreachable-code
 | 
			
		||||
CFLAGS += -Wcast-align
 | 
			
		||||
#CFLAGS += -Wmissing-noreturn
 | 
			
		||||
#CFLAGS += -Wconversion
 | 
			
		||||
 | 
			
		||||
CFLAGS += --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb -mlong-calls -ffunction-sections -fdata-sections -nostdlib -std=c99
 | 
			
		||||
CFLAGS += $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) -D$(VARIANT)
 | 
			
		||||
 | 
			
		||||
# To reduce application size use only integer printf function.
 | 
			
		||||
CFLAGS += -Dprintf=iprintf
 | 
			
		||||
 | 
			
		||||
# ---------------------------------------------------------------------------------------
 | 
			
		||||
# CPP Flags
 | 
			
		||||
 | 
			
		||||
CPPFLAGS += -Wall -Wchar-subscripts -Wcomment -Wformat=2
 | 
			
		||||
CPPFLAGS += -Wmain -Wparentheses -Wcast-align -Wunreachable-code
 | 
			
		||||
CPPFLAGS += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused
 | 
			
		||||
CPPFLAGS += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef
 | 
			
		||||
CPPFLAGS += -Wshadow -Wpointer-arith -Wwrite-strings
 | 
			
		||||
CPPFLAGS += -Wsign-compare -Waggregate-return -Wmissing-declarations
 | 
			
		||||
CPPFLAGS += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations
 | 
			
		||||
CPPFLAGS += -Wpacked -Wredundant-decls -Winline -Wlong-long
 | 
			
		||||
#CPPFLAGS += -Wmissing-noreturn
 | 
			
		||||
#CPPFLAGS += -Wconversion
 | 
			
		||||
 | 
			
		||||
CPPFLAGS += --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb -mlong-calls -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -std=c++98
 | 
			
		||||
CPPFLAGS += $(OPTIMIZATION) $(INCLUDES) -D$(CHIP)
 | 
			
		||||
 | 
			
		||||
# To reduce application size use only integer printf function.
 | 
			
		||||
CPPFLAGS += -Dprintf=iprintf
 | 
			
		||||
 | 
			
		||||
# ---------------------------------------------------------------------------------------
 | 
			
		||||
# ASM Flags
 | 
			
		||||
 | 
			
		||||
ASFLAGS = -mcpu=cortex-m3 -mthumb -Wall -g $(OPTIMIZATION) $(INCLUDES)
 | 
			
		||||
@@ -0,0 +1,184 @@
 | 
			
		||||
#
 | 
			
		||||
#  Copyright (c) 2012 Arduino.  All right reserved.
 | 
			
		||||
#
 | 
			
		||||
#  This library is free software; you can redistribute it and/or
 | 
			
		||||
#  modify it under the terms of the GNU Lesser General Public
 | 
			
		||||
#  License as published by the Free Software Foundation; either
 | 
			
		||||
#  version 2.1 of the License, or (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
#  This library is distributed in the hope that it will be useful,
 | 
			
		||||
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
#  See the GNU Lesser General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
#  You should have received a copy of the GNU Lesser General Public
 | 
			
		||||
#  License along with this library; if not, write to the Free Software
 | 
			
		||||
#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# Makefile for compiling libArduino
 | 
			
		||||
.SUFFIXES: .o .a .c .s
 | 
			
		||||
 | 
			
		||||
CHIP=__SAM3X8E__
 | 
			
		||||
VARIANT=arduino_due_x
 | 
			
		||||
LIBNAME=libvariant_$(VARIANT)
 | 
			
		||||
TOOLCHAIN=gcc
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
# Path
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
# Output directories
 | 
			
		||||
OUTPUT_BIN = ../../../cores/arduino
 | 
			
		||||
 | 
			
		||||
# Libraries
 | 
			
		||||
PROJECT_BASE_PATH = ..
 | 
			
		||||
SYSTEM_PATH = ../../../system
 | 
			
		||||
CMSIS_ROOT_PATH = $(SYSTEM_PATH)/CMSIS
 | 
			
		||||
CMSIS_ARM_PATH=$(CMSIS_ROOT_PATH)/CMSIS/Include
 | 
			
		||||
CMSIS_ATMEL_PATH=$(CMSIS_ROOT_PATH)/Device/ATMEL
 | 
			
		||||
#CMSIS_CHIP_PATH=$(CMSIS_ROOT_PATH)/Device/ATMEL/$(CHIP_SERIE)
 | 
			
		||||
 | 
			
		||||
ARDUINO_PATH = ../../../cores/arduino
 | 
			
		||||
VARIANT_BASE_PATH = ../../../variants
 | 
			
		||||
VARIANT_PATH = ../../../variants/$(VARIANT)
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
# Files
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
#vpath %.h $(PROJECT_BASE_PATH) $(SYSTEM_PATH) $(VARIANT_PATH)
 | 
			
		||||
vpath %.cpp $(PROJECT_BASE_PATH)
 | 
			
		||||
 | 
			
		||||
VPATH+=$(PROJECT_BASE_PATH)
 | 
			
		||||
 | 
			
		||||
INCLUDES =
 | 
			
		||||
#INCLUDES += -I$(PROJECT_BASE_PATH)
 | 
			
		||||
INCLUDES += -I$(ARDUINO_PATH)
 | 
			
		||||
INCLUDES += -I$(ARDUINO_PATH)/USB
 | 
			
		||||
INCLUDES += -I$(SYSTEM_PATH)
 | 
			
		||||
INCLUDES += -I$(SYSTEM_PATH)/libsam
 | 
			
		||||
INCLUDES += -I$(SYSTEM_PATH)/USBHost
 | 
			
		||||
INCLUDES += -I$(VARIANT_BASE_PATH)
 | 
			
		||||
INCLUDES += -I$(VARIANT_PATH)
 | 
			
		||||
INCLUDES += -I$(CMSIS_ARM_PATH)
 | 
			
		||||
INCLUDES += -I$(CMSIS_ATMEL_PATH)
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
ifdef DEBUG
 | 
			
		||||
include debug.mk
 | 
			
		||||
else
 | 
			
		||||
include release.mk
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
# Tools
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
include $(TOOLCHAIN).mk
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
ifdef DEBUG
 | 
			
		||||
OUTPUT_OBJ=debug
 | 
			
		||||
OUTPUT_LIB_POSTFIX=dbg
 | 
			
		||||
else
 | 
			
		||||
OUTPUT_OBJ=release
 | 
			
		||||
OUTPUT_LIB_POSTFIX=rel
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
OUTPUT_LIB=$(LIBNAME)_$(TOOLCHAIN)_$(OUTPUT_LIB_POSTFIX).a
 | 
			
		||||
OUTPUT_PATH=$(OUTPUT_OBJ)_$(VARIANT)
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
# C source files and objects
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
C_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.c)
 | 
			
		||||
 | 
			
		||||
C_OBJ_TEMP = $(patsubst %.c, %.o, $(notdir $(C_SRC)))
 | 
			
		||||
 | 
			
		||||
# during development, remove some files
 | 
			
		||||
C_OBJ_FILTER=
 | 
			
		||||
 | 
			
		||||
C_OBJ=$(filter-out $(C_OBJ_FILTER), $(C_OBJ_TEMP))
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
# CPP source files and objects
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
CPP_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.cpp)
 | 
			
		||||
 | 
			
		||||
CPP_OBJ_TEMP = $(patsubst %.cpp, %.o, $(notdir $(CPP_SRC)))
 | 
			
		||||
 | 
			
		||||
# during development, remove some files
 | 
			
		||||
CPP_OBJ_FILTER=
 | 
			
		||||
 | 
			
		||||
CPP_OBJ=$(filter-out $(CPP_OBJ_FILTER), $(CPP_OBJ_TEMP))
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
# Assembler source files and objects
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
A_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.s)
 | 
			
		||||
 | 
			
		||||
A_OBJ_TEMP=$(patsubst %.s, %.o, $(notdir $(A_SRC)))
 | 
			
		||||
 | 
			
		||||
# during development, remove some files
 | 
			
		||||
A_OBJ_FILTER=
 | 
			
		||||
 | 
			
		||||
A_OBJ=$(filter-out $(A_OBJ_FILTER), $(A_OBJ_TEMP))
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
# Rules
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
all: $(VARIANT)
 | 
			
		||||
 | 
			
		||||
$(VARIANT): create_output $(OUTPUT_LIB)
 | 
			
		||||
 | 
			
		||||
.PHONY: create_output
 | 
			
		||||
create_output:
 | 
			
		||||
	@echo ------------------------------------------------------------------------------------
 | 
			
		||||
	@echo -------------------------
 | 
			
		||||
	@echo --- Preparing variant $(VARIANT) files in $(OUTPUT_PATH) $(OUTPUT_BIN)
 | 
			
		||||
	@echo -------------------------
 | 
			
		||||
#	@echo *$(INCLUDES)
 | 
			
		||||
#	@echo -------------------------
 | 
			
		||||
#	@echo *$(C_SRC)
 | 
			
		||||
#	@echo -------------------------
 | 
			
		||||
#	@echo *$(C_OBJ)
 | 
			
		||||
#	@echo -------------------------
 | 
			
		||||
#	@echo *$(addprefix $(OUTPUT_PATH)/, $(C_OBJ))
 | 
			
		||||
#	@echo -------------------------
 | 
			
		||||
#	@echo *$(CPP_SRC)
 | 
			
		||||
#	@echo -------------------------
 | 
			
		||||
#	@echo *$(CPP_OBJ)
 | 
			
		||||
#	@echo -------------------------
 | 
			
		||||
#	@echo *$(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ))
 | 
			
		||||
#	@echo -------------------------
 | 
			
		||||
#	@echo *$(A_SRC)
 | 
			
		||||
#	@echo -------------------------
 | 
			
		||||
 | 
			
		||||
	-@mkdir $(OUTPUT_PATH) 1>NUL 2>&1
 | 
			
		||||
	@echo ------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: %.c
 | 
			
		||||
#	@"$(CC)" -v -c $(CFLAGS) $< -o $@
 | 
			
		||||
	@"$(CC)" -c $(CFLAGS) $< -o $@
 | 
			
		||||
 | 
			
		||||
$(addprefix $(OUTPUT_PATH)/,$(CPP_OBJ)): $(OUTPUT_PATH)/%.o: %.cpp
 | 
			
		||||
#	@"$(CC)" -c $(CPPFLAGS) $< -o $@
 | 
			
		||||
	@"$(CC)" -xc++ -c $(CPPFLAGS) $< -o $@
 | 
			
		||||
 | 
			
		||||
$(addprefix $(OUTPUT_PATH)/,$(A_OBJ)): $(OUTPUT_PATH)/%.o: %.s
 | 
			
		||||
	@"$(AS)" -c $(ASFLAGS) $< -o $@
 | 
			
		||||
 | 
			
		||||
$(OUTPUT_LIB): $(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(A_OBJ))
 | 
			
		||||
	@"$(AR)" -v -r "$(OUTPUT_BIN)/$@" $^
 | 
			
		||||
	@"$(NM)" "$(OUTPUT_BIN)/$@" > "$(OUTPUT_BIN)/$@.txt"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.PHONY: clean
 | 
			
		||||
clean:
 | 
			
		||||
	@echo ------------------------------------------------------------------------------------
 | 
			
		||||
	@echo --- Cleaning $(VARIANT) files [$(OUTPUT_PATH)$(SEP)*.o]
 | 
			
		||||
	-@$(RM) $(OUTPUT_PATH) 1>NUL 2>&1
 | 
			
		||||
	-@$(RM) $(OUTPUT_BIN)/$(OUTPUT_LIB) 1>NUL 2>&1
 | 
			
		||||
	@echo ------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1,25 @@
 | 
			
		||||
#
 | 
			
		||||
#  Copyright (c) 2011 Arduino.  All right reserved.
 | 
			
		||||
#
 | 
			
		||||
#  This library is free software; you can redistribute it and/or
 | 
			
		||||
#  modify it under the terms of the GNU Lesser General Public
 | 
			
		||||
#  License as published by the Free Software Foundation; either
 | 
			
		||||
#  version 2.1 of the License, or (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
#  This library is distributed in the hope that it will be useful,
 | 
			
		||||
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 | 
			
		||||
#  See the GNU Lesser General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
#  You should have received a copy of the GNU Lesser General Public
 | 
			
		||||
#  License along with this library; if not, write to the Free Software
 | 
			
		||||
#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# Optimization level
 | 
			
		||||
# -O1 Optimize
 | 
			
		||||
# -O2 Optimize even more
 | 
			
		||||
# -O3 Optimize yet more
 | 
			
		||||
# -O0 Reduce compilation time and make debugging produce the expected results
 | 
			
		||||
# -Os Optimize for size
 | 
			
		||||
OPTIMIZATION = -Os
 | 
			
		||||
@@ -0,0 +1,37 @@
 | 
			
		||||
#*******************************************************
 | 
			
		||||
#
 | 
			
		||||
#  Connect to J-Link and debug application in flash on SAM3X.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# Define 'reset' command
 | 
			
		||||
define reset
 | 
			
		||||
 | 
			
		||||
# Connect to the J-Link gdb server
 | 
			
		||||
target remote localhost:2331
 | 
			
		||||
 | 
			
		||||
# Reset the chip to get to a known state
 | 
			
		||||
monitor reset
 | 
			
		||||
 | 
			
		||||
# Select flash device
 | 
			
		||||
monitor flash device = AT91SAM3X8E
 | 
			
		||||
 | 
			
		||||
# Enable flash download and flash breakpoints
 | 
			
		||||
monitor flash download = 1
 | 
			
		||||
 | 
			
		||||
# Load the program
 | 
			
		||||
load
 | 
			
		||||
 | 
			
		||||
# Reset peripheral (RSTC_CR)
 | 
			
		||||
set *0x400e1a00 = 0xA5000004
 | 
			
		||||
 | 
			
		||||
# Initialize PC and stack pointer
 | 
			
		||||
mon reg sp=(0x80000)
 | 
			
		||||
#set *0x80004 = *0x80004 & 0xFFFFFFFE
 | 
			
		||||
mon reg pc=(0x80004)
 | 
			
		||||
 | 
			
		||||
info reg
 | 
			
		||||
 | 
			
		||||
break main
 | 
			
		||||
 | 
			
		||||
# End of 'reset' command
 | 
			
		||||
end
 | 
			
		||||
@@ -0,0 +1,37 @@
 | 
			
		||||
#*******************************************************
 | 
			
		||||
#
 | 
			
		||||
#  Connect to J-Link and debug application in sram on SAM3X.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# Define 'reset' command
 | 
			
		||||
define reset
 | 
			
		||||
 | 
			
		||||
# Connect to the J-Link gdb server
 | 
			
		||||
target remote localhost:2331
 | 
			
		||||
 | 
			
		||||
# Reset the chip to get to a known state
 | 
			
		||||
monitor reset
 | 
			
		||||
 | 
			
		||||
# Select flash device
 | 
			
		||||
monitor flash device = AT91SAM3X8E
 | 
			
		||||
 | 
			
		||||
# Enable flash download and flash breakpoints
 | 
			
		||||
monitor flash download = 1
 | 
			
		||||
 | 
			
		||||
# Load the program
 | 
			
		||||
load
 | 
			
		||||
 | 
			
		||||
# Reset peripheral (RSTC_CR)
 | 
			
		||||
set *0x400e1a00 = 0xA5000004
 | 
			
		||||
 | 
			
		||||
# Initialize PC and stack pointer
 | 
			
		||||
mon reg sp=(0x20000000)
 | 
			
		||||
#set *0x20000004 = *0x20000004 & 0xFFFFFFFE
 | 
			
		||||
mon reg pc=(0x20000004)
 | 
			
		||||
 | 
			
		||||
info reg
 | 
			
		||||
 | 
			
		||||
break main
 | 
			
		||||
 | 
			
		||||
# End of 'reset' command
 | 
			
		||||
end
 | 
			
		||||
@@ -0,0 +1,44 @@
 | 
			
		||||
// ---------------------------------------------------------
 | 
			
		||||
//   ATMEL Microcontroller Software Support  -  ROUSSET  -
 | 
			
		||||
// ---------------------------------------------------------
 | 
			
		||||
// The software is delivered "AS IS" without warranty or
 | 
			
		||||
// condition of any  kind, either express, implied or
 | 
			
		||||
// statutory. This includes without limitation any warranty
 | 
			
		||||
// or condition with respect to merchantability or fitness
 | 
			
		||||
// for any particular purpose, or against the infringements of
 | 
			
		||||
// intellectual property rights of others.
 | 
			
		||||
// ---------------------------------------------------------
 | 
			
		||||
//  File: at91sam3u-ek-flash.mac
 | 
			
		||||
//  User setup file for CSPY debugger.
 | 
			
		||||
// ---------------------------------------------------------
 | 
			
		||||
__var __mac_i;
 | 
			
		||||
__var __mac_pt;
 | 
			
		||||
 | 
			
		||||
/*********************************************************************
 | 
			
		||||
*
 | 
			
		||||
*       execUserReset()
 | 
			
		||||
*/
 | 
			
		||||
execUserReset()
 | 
			
		||||
{
 | 
			
		||||
    __message "------------------------------ execUserReset ---------------------------------";
 | 
			
		||||
    __message "-------------------------------Set PC Reset ----------------------------------";
 | 
			
		||||
 | 
			
		||||
    __hwReset(0);
 | 
			
		||||
 | 
			
		||||
    // perpheral reset RSTC_CR
 | 
			
		||||
    __writeMemory32(0xA5000004,0x400e1200,"Memory");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*********************************************************************
 | 
			
		||||
*
 | 
			
		||||
*       execUserPreload()
 | 
			
		||||
*/
 | 
			
		||||
execUserPreload()
 | 
			
		||||
{
 | 
			
		||||
    __message "------------------------------ execUserPreload ---------------------------------";
 | 
			
		||||
 | 
			
		||||
    __hwReset(0);                          //* Hardware Reset: CPU is automatically halted after the reset
 | 
			
		||||
 | 
			
		||||
    // perpheral reset RSTC_CR
 | 
			
		||||
    __writeMemory32(0xA5000004,0x400e1200,"Memory");
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,44 @@
 | 
			
		||||
// ---------------------------------------------------------
 | 
			
		||||
//   ATMEL Microcontroller Software Support  -  ROUSSET  -
 | 
			
		||||
// ---------------------------------------------------------
 | 
			
		||||
// The software is delivered "AS IS" without warranty or
 | 
			
		||||
// condition of any  kind, either express, implied or
 | 
			
		||||
// statutory. This includes without limitation any warranty
 | 
			
		||||
// or condition with respect to merchantability or fitness
 | 
			
		||||
// for any particular purpose, or against the infringements of
 | 
			
		||||
// intellectual property rights of others.
 | 
			
		||||
// ---------------------------------------------------------
 | 
			
		||||
//  File: at91sam3u-ek-sram.mac
 | 
			
		||||
//  User setup file for CSPY debugger.
 | 
			
		||||
// ---------------------------------------------------------
 | 
			
		||||
__var __mac_i;
 | 
			
		||||
__var __mac_pt;
 | 
			
		||||
 | 
			
		||||
/*********************************************************************
 | 
			
		||||
*
 | 
			
		||||
*       execUserReset()
 | 
			
		||||
*/
 | 
			
		||||
execUserReset()
 | 
			
		||||
{
 | 
			
		||||
    __message "------------------------------ execUserReset ---------------------------------";
 | 
			
		||||
    __message "-------------------------------Set PC Reset ----------------------------------";
 | 
			
		||||
 | 
			
		||||
     //__hwReset(50);
 | 
			
		||||
 | 
			
		||||
    // perpheral reset RSTC_CR
 | 
			
		||||
    __writeMemory32(0xA5000004,0x400e1200,"Memory");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*********************************************************************
 | 
			
		||||
*
 | 
			
		||||
*       execUserPreload()
 | 
			
		||||
*/
 | 
			
		||||
execUserPreload()
 | 
			
		||||
{
 | 
			
		||||
    __message "------------------------------ execUserPreload ---------------------------------";
 | 
			
		||||
 | 
			
		||||
    __hwReset(0);                          //* Hardware Reset: CPU is automatically halted after the reset
 | 
			
		||||
    
 | 
			
		||||
    // perpheral reset RSTC_CR
 | 
			
		||||
    __writeMemory32(0xA5000004,0x400e1200,"Memory");
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,576 @@
 | 
			
		||||
 | 
			
		||||
adc10_sam3u.o:
 | 
			
		||||
 | 
			
		||||
adc12_sam3u.o:
 | 
			
		||||
 | 
			
		||||
adc_sam3snxa.o:
 | 
			
		||||
 | 
			
		||||
pio.o:
 | 
			
		||||
00000000 T PIO_Clear
 | 
			
		||||
00000000 T PIO_Configure
 | 
			
		||||
00000000 T PIO_DisableInterrupt
 | 
			
		||||
00000000 T PIO_Get
 | 
			
		||||
00000000 T PIO_GetOutputDataStatus
 | 
			
		||||
00000000 T PIO_PullUp
 | 
			
		||||
00000000 T PIO_Set
 | 
			
		||||
00000000 T PIO_SetDebounceFilter
 | 
			
		||||
00000000 T PIO_SetInput
 | 
			
		||||
00000000 T PIO_SetOutput
 | 
			
		||||
00000000 T PIO_SetPeripheral
 | 
			
		||||
 | 
			
		||||
pmc.o:
 | 
			
		||||
00000000 T pmc_clr_fast_startup_input
 | 
			
		||||
00000000 T pmc_disable_all_pck
 | 
			
		||||
00000000 T pmc_disable_all_periph_clk
 | 
			
		||||
00000000 T pmc_disable_interrupt
 | 
			
		||||
00000000 T pmc_disable_pck
 | 
			
		||||
00000000 T pmc_disable_periph_clk
 | 
			
		||||
00000000 T pmc_disable_pllack
 | 
			
		||||
00000000 T pmc_disable_udpck
 | 
			
		||||
00000000 T pmc_disable_upll_clock
 | 
			
		||||
00000000 T pmc_enable_all_pck
 | 
			
		||||
00000000 T pmc_enable_all_periph_clk
 | 
			
		||||
00000000 T pmc_enable_backupmode
 | 
			
		||||
00000000 T pmc_enable_interrupt
 | 
			
		||||
00000000 T pmc_enable_pck
 | 
			
		||||
00000000 T pmc_enable_periph_clk
 | 
			
		||||
00000000 T pmc_enable_pllack
 | 
			
		||||
00000000 T pmc_enable_sleepmode
 | 
			
		||||
00000000 T pmc_enable_udpck
 | 
			
		||||
00000000 T pmc_enable_upll_clock
 | 
			
		||||
00000000 T pmc_enable_waitmode
 | 
			
		||||
00000000 T pmc_get_interrupt_mask
 | 
			
		||||
00000000 T pmc_get_status
 | 
			
		||||
00000000 T pmc_get_writeprotect_status
 | 
			
		||||
00000000 T pmc_is_locked_pllack
 | 
			
		||||
00000000 T pmc_is_locked_upll
 | 
			
		||||
00000000 T pmc_is_pck_enabled
 | 
			
		||||
00000000 T pmc_is_periph_clk_enabled
 | 
			
		||||
00000000 T pmc_mck_set_prescaler
 | 
			
		||||
00000000 T pmc_mck_set_source
 | 
			
		||||
00000000 T pmc_osc_disable_fastrc
 | 
			
		||||
00000000 T pmc_osc_disable_xtal
 | 
			
		||||
00000000 T pmc_osc_enable_fastrc
 | 
			
		||||
00000000 T pmc_osc_is_ready_32kxtal
 | 
			
		||||
00000000 T pmc_osc_is_ready_mainck
 | 
			
		||||
00000000 T pmc_pck_set_prescaler
 | 
			
		||||
00000000 T pmc_pck_set_source
 | 
			
		||||
00000000 T pmc_set_fast_startup_input
 | 
			
		||||
00000000 T pmc_set_writeprotect
 | 
			
		||||
00000000 T pmc_switch_mainck_to_fastrc
 | 
			
		||||
00000000 T pmc_switch_mainck_to_xtal
 | 
			
		||||
00000000 T pmc_switch_mck_to_mainck
 | 
			
		||||
00000000 T pmc_switch_mck_to_pllack
 | 
			
		||||
00000000 T pmc_switch_mck_to_sclk
 | 
			
		||||
00000000 T pmc_switch_mck_to_upllck
 | 
			
		||||
00000000 T pmc_switch_pck_to_mainck
 | 
			
		||||
00000000 T pmc_switch_pck_to_pllack
 | 
			
		||||
00000000 T pmc_switch_pck_to_sclk
 | 
			
		||||
00000000 T pmc_switch_pck_to_upllck
 | 
			
		||||
00000000 T pmc_switch_sclk_to_32kxtal
 | 
			
		||||
00000000 T pmc_switch_udpck_to_pllack
 | 
			
		||||
00000000 T pmc_switch_udpck_to_upllck
 | 
			
		||||
 | 
			
		||||
pwmc.o:
 | 
			
		||||
00000000 t FindClockConfiguration
 | 
			
		||||
00000000 T PWMC_ConfigureChannel
 | 
			
		||||
00000000 T PWMC_ConfigureChannelExt
 | 
			
		||||
00000000 T PWMC_ConfigureClocks
 | 
			
		||||
00000000 T PWMC_ConfigureComparisonUnit
 | 
			
		||||
00000000 T PWMC_ConfigureEventLineMode
 | 
			
		||||
00000000 T PWMC_ConfigureSyncChannel
 | 
			
		||||
00000000 T PWMC_DisableChannel
 | 
			
		||||
00000000 T PWMC_DisableChannelIt
 | 
			
		||||
00000000 T PWMC_DisableIt
 | 
			
		||||
00000000 T PWMC_DisableOverrideOutput
 | 
			
		||||
00000000 T PWMC_EnableChannel
 | 
			
		||||
00000000 T PWMC_EnableChannelIt
 | 
			
		||||
00000000 T PWMC_EnableFaultProtection
 | 
			
		||||
00000000 T PWMC_EnableIt
 | 
			
		||||
00000000 T PWMC_EnableOverrideOutput
 | 
			
		||||
00000000 T PWMC_FaultClear
 | 
			
		||||
00000000 T PWMC_SetDeadTime
 | 
			
		||||
00000000 T PWMC_SetDutyCycle
 | 
			
		||||
00000000 T PWMC_SetFaultMode
 | 
			
		||||
00000000 T PWMC_SetFaultProtectionValue
 | 
			
		||||
00000000 T PWMC_SetOverrideValue
 | 
			
		||||
00000000 T PWMC_SetPeriod
 | 
			
		||||
00000000 T PWMC_SetSyncChannelUpdatePeriod
 | 
			
		||||
00000000 T PWMC_SetSyncChannelUpdateUnlock
 | 
			
		||||
00000000 T PWMC_WriteBuffer
 | 
			
		||||
         U __assert_func
 | 
			
		||||
00000000 r __func__.6793
 | 
			
		||||
00000000 r __func__.6804
 | 
			
		||||
00000000 r __func__.6819
 | 
			
		||||
00000000 r __func__.6830
 | 
			
		||||
00000000 r __func__.6841
 | 
			
		||||
00000000 r __func__.6848
 | 
			
		||||
00000000 r __func__.6932
 | 
			
		||||
00000000 r __func__.6938
 | 
			
		||||
 | 
			
		||||
rtc.o:
 | 
			
		||||
00000000 T RTC_ClearSCCR
 | 
			
		||||
00000000 T RTC_DisableIt
 | 
			
		||||
00000000 T RTC_EnableIt
 | 
			
		||||
00000000 T RTC_GetDate
 | 
			
		||||
00000000 T RTC_GetHourMode
 | 
			
		||||
00000000 T RTC_GetSR
 | 
			
		||||
00000000 T RTC_GetTime
 | 
			
		||||
00000000 T RTC_SetDate
 | 
			
		||||
00000000 T RTC_SetDateAlarm
 | 
			
		||||
00000000 T RTC_SetHourMode
 | 
			
		||||
00000000 T RTC_SetTime
 | 
			
		||||
00000000 T RTC_SetTimeAlarm
 | 
			
		||||
         U __assert_func
 | 
			
		||||
00000000 r __func__.6790
 | 
			
		||||
00000000 r __func__.6799
 | 
			
		||||
00000000 r __func__.6804
 | 
			
		||||
 | 
			
		||||
rtt.o:
 | 
			
		||||
00000000 T RTT_EnableIT
 | 
			
		||||
00000000 T RTT_GetStatus
 | 
			
		||||
00000000 T RTT_GetTime
 | 
			
		||||
00000000 T RTT_SetAlarm
 | 
			
		||||
00000000 T RTT_SetPrescaler
 | 
			
		||||
         U __assert_func
 | 
			
		||||
00000000 r __func__.6797
 | 
			
		||||
00000000 r __func__.6805
 | 
			
		||||
 | 
			
		||||
spi.o:
 | 
			
		||||
00000000 T SPI_Configure
 | 
			
		||||
00000000 T SPI_ConfigureNPCS
 | 
			
		||||
00000000 T SPI_Disable
 | 
			
		||||
00000000 T SPI_DisableIt
 | 
			
		||||
00000000 T SPI_Enable
 | 
			
		||||
00000000 T SPI_EnableIt
 | 
			
		||||
00000000 T SPI_GetStatus
 | 
			
		||||
00000000 T SPI_IsFinished
 | 
			
		||||
00000000 T SPI_Read
 | 
			
		||||
00000000 T SPI_Write
 | 
			
		||||
         U pmc_enable_periph_clk
 | 
			
		||||
 | 
			
		||||
tc.o:
 | 
			
		||||
00000000 T TC_Configure
 | 
			
		||||
00000000 T TC_FindMckDivisor
 | 
			
		||||
00000000 T TC_GetStatus
 | 
			
		||||
00000000 T TC_ReadCV
 | 
			
		||||
00000000 T TC_SetRA
 | 
			
		||||
00000000 T TC_SetRB
 | 
			
		||||
00000000 T TC_SetRC
 | 
			
		||||
00000000 T TC_Start
 | 
			
		||||
00000000 T TC_Stop
 | 
			
		||||
         U __assert_func
 | 
			
		||||
00000000 r __func__.6792
 | 
			
		||||
00000000 r __func__.6798
 | 
			
		||||
00000000 r __func__.6804
 | 
			
		||||
 | 
			
		||||
timetick.o:
 | 
			
		||||
00000000 T GetTickCount
 | 
			
		||||
00000000 T Sleep
 | 
			
		||||
00000000 T TimeTick_Configure
 | 
			
		||||
00000000 T TimeTick_Increment
 | 
			
		||||
00000000 T Wait
 | 
			
		||||
00000000 b _dwTickCount
 | 
			
		||||
 | 
			
		||||
twi.o:
 | 
			
		||||
00000000 T TWI_ByteReceived
 | 
			
		||||
00000000 T TWI_ByteSent
 | 
			
		||||
00000000 T TWI_ConfigureMaster
 | 
			
		||||
00000000 T TWI_ConfigureSlave
 | 
			
		||||
00000000 T TWI_Disable
 | 
			
		||||
00000000 T TWI_DisableIt
 | 
			
		||||
00000000 T TWI_EnableIt
 | 
			
		||||
00000000 T TWI_GetMaskedStatus
 | 
			
		||||
00000000 T TWI_GetStatus
 | 
			
		||||
00000000 T TWI_ReadByte
 | 
			
		||||
00000000 T TWI_SendSTOPCondition
 | 
			
		||||
00000000 T TWI_SetClock
 | 
			
		||||
00000000 T TWI_StartRead
 | 
			
		||||
00000000 T TWI_StartWrite
 | 
			
		||||
00000000 T TWI_Stop
 | 
			
		||||
00000000 T TWI_TransferComplete
 | 
			
		||||
00000000 T TWI_WriteByte
 | 
			
		||||
         U __assert_func
 | 
			
		||||
00000000 r __func__.7151
 | 
			
		||||
00000000 r __func__.7157
 | 
			
		||||
00000000 r __func__.7172
 | 
			
		||||
00000000 r __func__.7176
 | 
			
		||||
00000000 r __func__.7184
 | 
			
		||||
00000000 r __func__.7191
 | 
			
		||||
00000000 r __func__.7195
 | 
			
		||||
00000000 r __func__.7200
 | 
			
		||||
00000000 r __func__.7208
 | 
			
		||||
00000000 r __func__.7222
 | 
			
		||||
00000000 r __func__.7227
 | 
			
		||||
00000000 r __func__.7231
 | 
			
		||||
00000000 r __func__.7236
 | 
			
		||||
00000000 r __func__.7240
 | 
			
		||||
 | 
			
		||||
usart.o:
 | 
			
		||||
00000000 T USART_Configure
 | 
			
		||||
00000000 T USART_DisableIt
 | 
			
		||||
00000000 T USART_EnableIt
 | 
			
		||||
00000000 T USART_GetChar
 | 
			
		||||
00000000 T USART_GetStatus
 | 
			
		||||
00000000 T USART_IsDataAvailable
 | 
			
		||||
00000000 T USART_IsRxReady
 | 
			
		||||
00000000 T USART_PutChar
 | 
			
		||||
00000000 T USART_Read
 | 
			
		||||
00000000 T USART_ReadBuffer
 | 
			
		||||
00000000 T USART_SetIrdaFilter
 | 
			
		||||
00000000 T USART_SetReceiverEnabled
 | 
			
		||||
00000000 T USART_SetTransmitterEnabled
 | 
			
		||||
00000000 T USART_Write
 | 
			
		||||
00000000 T USART_WriteBuffer
 | 
			
		||||
         U __assert_func
 | 
			
		||||
00000000 r __func__.7068
 | 
			
		||||
 | 
			
		||||
wdt.o:
 | 
			
		||||
00000000 T WDT_Disable
 | 
			
		||||
00000000 T WDT_Enable
 | 
			
		||||
00000000 T WDT_GetPeriod
 | 
			
		||||
00000000 T WDT_GetStatus
 | 
			
		||||
00000000 T WDT_Restart
 | 
			
		||||
 | 
			
		||||
system_sam3xa.o:
 | 
			
		||||
00000000 D SystemCoreClock
 | 
			
		||||
00000000 T SystemCoreClockUpdate
 | 
			
		||||
00000000 T SystemInit
 | 
			
		||||
00000000 T system_init_flash
 | 
			
		||||
 | 
			
		||||
startup_sam3xa.o:
 | 
			
		||||
         U ADC_Handler
 | 
			
		||||
         U BusFault_Handler
 | 
			
		||||
         U CAN0_Handler
 | 
			
		||||
         U CAN1_Handler
 | 
			
		||||
         U DACC_Handler
 | 
			
		||||
         U DMAC_Handler
 | 
			
		||||
         U DebugMon_Handler
 | 
			
		||||
         U EFC0_Handler
 | 
			
		||||
         U EFC1_Handler
 | 
			
		||||
         U EMAC_Handler
 | 
			
		||||
         U HSMCI_Handler
 | 
			
		||||
         U HardFault_Handler
 | 
			
		||||
         U MemManage_Handler
 | 
			
		||||
         U NMI_Handler
 | 
			
		||||
         U PIOA_Handler
 | 
			
		||||
         U PIOB_Handler
 | 
			
		||||
         U PIOC_Handler
 | 
			
		||||
         U PIOD_Handler
 | 
			
		||||
         U PMC_Handler
 | 
			
		||||
         U PWM_Handler
 | 
			
		||||
         U PendSV_Handler
 | 
			
		||||
         U RSTC_Handler
 | 
			
		||||
         U RTC_Handler
 | 
			
		||||
         U RTT_Handler
 | 
			
		||||
00000000 T Reset_Handler
 | 
			
		||||
         U SMC_Handler
 | 
			
		||||
         U SPI0_Handler
 | 
			
		||||
         U SSC_Handler
 | 
			
		||||
         U SUPC_Handler
 | 
			
		||||
         U SVC_Handler
 | 
			
		||||
         U SysTick_Handler
 | 
			
		||||
         U TC0_Handler
 | 
			
		||||
         U TC1_Handler
 | 
			
		||||
         U TC2_Handler
 | 
			
		||||
         U TC3_Handler
 | 
			
		||||
         U TC4_Handler
 | 
			
		||||
         U TC5_Handler
 | 
			
		||||
         U TC6_Handler
 | 
			
		||||
         U TC7_Handler
 | 
			
		||||
         U TC8_Handler
 | 
			
		||||
         U TRNG_Handler
 | 
			
		||||
         U TWI0_Handler
 | 
			
		||||
         U TWI1_Handler
 | 
			
		||||
         U UART_Handler
 | 
			
		||||
         U UOTGHS_Handler
 | 
			
		||||
         U USART0_Handler
 | 
			
		||||
         U USART1_Handler
 | 
			
		||||
         U USART2_Handler
 | 
			
		||||
         U USART3_Handler
 | 
			
		||||
         U UsageFault_Handler
 | 
			
		||||
         U WDT_Handler
 | 
			
		||||
         U _erelocate
 | 
			
		||||
         U _estack
 | 
			
		||||
         U _etext
 | 
			
		||||
         U _ezero
 | 
			
		||||
         U _sfixed
 | 
			
		||||
         U _srelocate
 | 
			
		||||
         U _szero
 | 
			
		||||
00000000 R exception_table
 | 
			
		||||
         U main
 | 
			
		||||
 | 
			
		||||
adc.o:
 | 
			
		||||
00000000 T adc_configure_power_save
 | 
			
		||||
00000000 T adc_configure_sequence
 | 
			
		||||
00000000 T adc_configure_timing
 | 
			
		||||
00000000 T adc_configure_trigger
 | 
			
		||||
00000000 T adc_disable_all_channel
 | 
			
		||||
00000000 T adc_disable_anch
 | 
			
		||||
00000000 T adc_disable_channel
 | 
			
		||||
00000000 T adc_disable_channel_differential_input
 | 
			
		||||
00000000 T adc_disable_channel_input_offset
 | 
			
		||||
00000000 T adc_disable_interrupt
 | 
			
		||||
00000000 T adc_disable_tag
 | 
			
		||||
00000000 T adc_disable_ts
 | 
			
		||||
00000000 T adc_enable_all_channel
 | 
			
		||||
00000000 T adc_enable_anch
 | 
			
		||||
00000000 T adc_enable_channel
 | 
			
		||||
00000000 T adc_enable_channel_differential_input
 | 
			
		||||
00000000 T adc_enable_channel_input_offset
 | 
			
		||||
00000000 T adc_enable_interrupt
 | 
			
		||||
00000000 T adc_enable_tag
 | 
			
		||||
00000000 T adc_enable_ts
 | 
			
		||||
00000000 T adc_get_actual_adc_clock
 | 
			
		||||
00000000 T adc_get_channel_status
 | 
			
		||||
00000000 T adc_get_channel_value
 | 
			
		||||
00000000 T adc_get_comparison_mode
 | 
			
		||||
00000000 T adc_get_interrupt_mask
 | 
			
		||||
00000000 T adc_get_latest_value
 | 
			
		||||
00000000 T adc_get_overrun_status
 | 
			
		||||
00000000 T adc_get_pdc_base
 | 
			
		||||
00000000 T adc_get_status
 | 
			
		||||
00000000 T adc_get_tag
 | 
			
		||||
00000000 T adc_get_writeprotect_status
 | 
			
		||||
00000000 T adc_init
 | 
			
		||||
00000000 T adc_set_bias_current
 | 
			
		||||
00000000 T adc_set_channel_input_gain
 | 
			
		||||
00000000 T adc_set_comparison_channel
 | 
			
		||||
00000000 T adc_set_comparison_mode
 | 
			
		||||
00000000 T adc_set_comparison_window
 | 
			
		||||
00000000 T adc_set_resolution
 | 
			
		||||
00000000 T adc_set_writeprotect
 | 
			
		||||
00000000 T adc_start
 | 
			
		||||
00000000 T adc_start_sequencer
 | 
			
		||||
00000000 T adc_stop
 | 
			
		||||
00000000 T adc_stop_sequencer
 | 
			
		||||
 | 
			
		||||
udp.o:
 | 
			
		||||
 | 
			
		||||
udphs.o:
 | 
			
		||||
 | 
			
		||||
uotghs.o:
 | 
			
		||||
00000000 T UOTGHS_Handler
 | 
			
		||||
00000000 B gpf_isr
 | 
			
		||||
 | 
			
		||||
interrupt_sam_nvic.o:
 | 
			
		||||
00000000 D g_interrupt_enabled
 | 
			
		||||
 | 
			
		||||
uotghs_device.o:
 | 
			
		||||
00000000 T UDD_Attach
 | 
			
		||||
00000000 T UDD_ClearIN
 | 
			
		||||
00000000 T UDD_ClearOUT
 | 
			
		||||
00000000 T UDD_ClearSetupInt
 | 
			
		||||
00000000 T UDD_Detach
 | 
			
		||||
00000000 T UDD_FifoByteCount
 | 
			
		||||
00000000 T UDD_GetFrameNumber
 | 
			
		||||
00000000 T UDD_Init
 | 
			
		||||
00000000 T UDD_InitEP
 | 
			
		||||
00000000 T UDD_InitEndpoints
 | 
			
		||||
00000000 T UDD_ReadWriteAllowed
 | 
			
		||||
00000000 T UDD_ReceivedSetupInt
 | 
			
		||||
00000000 T UDD_Recv
 | 
			
		||||
00000000 T UDD_Recv8
 | 
			
		||||
00000000 T UDD_ReleaseRX
 | 
			
		||||
00000000 T UDD_ReleaseTX
 | 
			
		||||
00000000 T UDD_Send
 | 
			
		||||
00000000 T UDD_Send8
 | 
			
		||||
00000000 T UDD_SetAddress
 | 
			
		||||
00000000 T UDD_SetStack
 | 
			
		||||
00000000 T UDD_Stall
 | 
			
		||||
00000000 T UDD_WaitForINOrOUT
 | 
			
		||||
00000000 T UDD_WaitIN
 | 
			
		||||
00000000 T UDD_WaitOUT
 | 
			
		||||
         U g_interrupt_enabled
 | 
			
		||||
         U gpf_isr
 | 
			
		||||
         U pmc_enable_periph_clk
 | 
			
		||||
         U pmc_enable_udpck
 | 
			
		||||
         U pmc_enable_upll_clock
 | 
			
		||||
         U pmc_switch_udpck_to_upllck
 | 
			
		||||
00000000 b ul_recv_fifo_ptr
 | 
			
		||||
00000000 b ul_send_fifo_ptr
 | 
			
		||||
 | 
			
		||||
uotghs_host.o:
 | 
			
		||||
00000000 T UHD_BusReset
 | 
			
		||||
00000000 T UHD_GetVBUSState
 | 
			
		||||
00000000 t UHD_ISR
 | 
			
		||||
00000000 T UHD_Init
 | 
			
		||||
00000000 T UHD_Pipe0_Alloc
 | 
			
		||||
00000000 T UHD_Pipe_Alloc
 | 
			
		||||
00000000 T UHD_Pipe_Free
 | 
			
		||||
00000000 T UHD_Pipe_Is_Transfer_Complete
 | 
			
		||||
00000000 T UHD_Pipe_Read
 | 
			
		||||
00000000 T UHD_Pipe_Send
 | 
			
		||||
00000000 T UHD_Pipe_Write
 | 
			
		||||
00000000 T UHD_SetStack
 | 
			
		||||
         U g_interrupt_enabled
 | 
			
		||||
         U gpf_isr
 | 
			
		||||
         U pmc_enable_periph_clk
 | 
			
		||||
         U pmc_enable_udpck
 | 
			
		||||
         U pmc_enable_upll_clock
 | 
			
		||||
         U pmc_switch_udpck_to_upllck
 | 
			
		||||
00000000 b uhd_state
 | 
			
		||||
 | 
			
		||||
dacc.o:
 | 
			
		||||
00000000 T dacc_disable_channel
 | 
			
		||||
00000000 T dacc_disable_interrupt
 | 
			
		||||
00000000 T dacc_disable_trigger
 | 
			
		||||
00000000 T dacc_enable_channel
 | 
			
		||||
00000000 T dacc_enable_flexible_selection
 | 
			
		||||
00000000 T dacc_enable_interrupt
 | 
			
		||||
00000000 T dacc_get_analog_control
 | 
			
		||||
00000000 T dacc_get_channel_status
 | 
			
		||||
00000000 T dacc_get_interrupt_mask
 | 
			
		||||
00000000 T dacc_get_interrupt_status
 | 
			
		||||
00000000 T dacc_get_pdc_base
 | 
			
		||||
00000000 T dacc_get_writeprotect_status
 | 
			
		||||
00000000 T dacc_reset
 | 
			
		||||
00000000 T dacc_set_analog_control
 | 
			
		||||
00000000 T dacc_set_channel_selection
 | 
			
		||||
00000000 T dacc_set_power_save
 | 
			
		||||
00000000 T dacc_set_timing
 | 
			
		||||
00000000 T dacc_set_transfer_mode
 | 
			
		||||
00000000 T dacc_set_trigger
 | 
			
		||||
00000000 T dacc_set_writeprotect
 | 
			
		||||
00000000 T dacc_write_conversion_data
 | 
			
		||||
 | 
			
		||||
can.o:
 | 
			
		||||
00000000 R can_bit_time
 | 
			
		||||
00000000 T can_disable
 | 
			
		||||
00000000 T can_disable_autobaud_listen_mode
 | 
			
		||||
00000000 T can_disable_interrupt
 | 
			
		||||
00000000 T can_disable_low_power_mode
 | 
			
		||||
00000000 T can_disable_overload_frame
 | 
			
		||||
00000000 T can_disable_time_triggered_mode
 | 
			
		||||
00000000 T can_disable_timer_freeze
 | 
			
		||||
00000000 T can_disable_tx_repeat
 | 
			
		||||
00000000 T can_enable
 | 
			
		||||
00000000 T can_enable_autobaud_listen_mode
 | 
			
		||||
00000000 T can_enable_interrupt
 | 
			
		||||
00000000 T can_enable_low_power_mode
 | 
			
		||||
00000000 T can_enable_overload_frame
 | 
			
		||||
00000000 T can_enable_time_triggered_mode
 | 
			
		||||
00000000 T can_enable_timer_freeze
 | 
			
		||||
00000000 T can_enable_tx_repeat
 | 
			
		||||
00000000 T can_get_internal_timer_value
 | 
			
		||||
00000000 T can_get_interrupt_mask
 | 
			
		||||
00000000 T can_get_rx_error_cnt
 | 
			
		||||
00000000 T can_get_status
 | 
			
		||||
00000000 T can_get_timestamp_value
 | 
			
		||||
00000000 T can_get_tx_error_cnt
 | 
			
		||||
00000000 T can_global_send_abort_cmd
 | 
			
		||||
00000000 T can_global_send_transfer_cmd
 | 
			
		||||
00000000 T can_init
 | 
			
		||||
00000000 T can_mailbox_get_status
 | 
			
		||||
00000000 T can_mailbox_init
 | 
			
		||||
00000000 T can_mailbox_read
 | 
			
		||||
00000000 T can_mailbox_send_abort_cmd
 | 
			
		||||
00000000 T can_mailbox_send_transfer_cmd
 | 
			
		||||
00000000 T can_mailbox_set_timemark
 | 
			
		||||
00000000 T can_mailbox_tx_remote_frame
 | 
			
		||||
00000000 T can_mailbox_write
 | 
			
		||||
00000000 T can_reset_all_mailbox
 | 
			
		||||
00000000 T can_reset_internal_timer
 | 
			
		||||
00000000 T can_reset_mailbox_data
 | 
			
		||||
00000000 T can_set_rx_sync_stage
 | 
			
		||||
00000000 T can_set_timestamp_capture_point
 | 
			
		||||
         U memset
 | 
			
		||||
 | 
			
		||||
efc.o:
 | 
			
		||||
00000000 T efc_disable_frdy_interrupt
 | 
			
		||||
00000000 T efc_enable_frdy_interrupt
 | 
			
		||||
00000000 T efc_get_flash_access_mode
 | 
			
		||||
00000000 T efc_get_result
 | 
			
		||||
00000000 T efc_get_status
 | 
			
		||||
00000000 T efc_get_wait_state
 | 
			
		||||
00000000 T efc_init
 | 
			
		||||
00000000 T efc_perform_command
 | 
			
		||||
0000006c T efc_perform_fcr
 | 
			
		||||
00000000 T efc_perform_read_sequence
 | 
			
		||||
00000000 T efc_set_flash_access_mode
 | 
			
		||||
00000000 T efc_set_wait_state
 | 
			
		||||
00000068 T efc_write_fmr
 | 
			
		||||
00000000 b iap_perform_command.7049
 | 
			
		||||
 | 
			
		||||
gpbr.o:
 | 
			
		||||
00000000 T gpbr_read
 | 
			
		||||
00000000 T gpbr_write
 | 
			
		||||
 | 
			
		||||
ssc.o:
 | 
			
		||||
         U memset
 | 
			
		||||
00000000 T ssc_disable_interrupt
 | 
			
		||||
00000000 T ssc_disable_rx
 | 
			
		||||
00000000 T ssc_disable_tx
 | 
			
		||||
00000000 T ssc_disable_tx_frame_sync_data
 | 
			
		||||
00000000 T ssc_enable_interrupt
 | 
			
		||||
00000000 T ssc_enable_rx
 | 
			
		||||
00000000 T ssc_enable_tx
 | 
			
		||||
00000000 T ssc_enable_tx_frame_sync_data
 | 
			
		||||
00000000 T ssc_get_interrupt_mask
 | 
			
		||||
00000000 T ssc_get_rx_access
 | 
			
		||||
00000000 T ssc_get_rx_compare
 | 
			
		||||
00000000 T ssc_get_status
 | 
			
		||||
00000000 T ssc_get_tx_access
 | 
			
		||||
00000000 T ssc_get_writeprotect_status
 | 
			
		||||
00000000 T ssc_i2s_set_receiver
 | 
			
		||||
00000000 T ssc_i2s_set_transmitter
 | 
			
		||||
00000000 T ssc_is_rx_enabled
 | 
			
		||||
00000000 T ssc_is_rx_ready
 | 
			
		||||
00000000 T ssc_is_tx_empty
 | 
			
		||||
00000000 T ssc_is_tx_enabled
 | 
			
		||||
00000000 T ssc_is_tx_ready
 | 
			
		||||
00000000 T ssc_read
 | 
			
		||||
00000000 T ssc_read_sync_data
 | 
			
		||||
00000000 T ssc_reset
 | 
			
		||||
00000000 T ssc_set_clock_divider
 | 
			
		||||
00000000 T ssc_set_loop_mode
 | 
			
		||||
00000000 T ssc_set_normal_mode
 | 
			
		||||
00000000 T ssc_set_receiver
 | 
			
		||||
00000000 T ssc_set_rx_compare
 | 
			
		||||
00000000 T ssc_set_rx_stop_selection
 | 
			
		||||
00000000 T ssc_set_td_default_level
 | 
			
		||||
00000000 T ssc_set_transmitter
 | 
			
		||||
00000000 T ssc_set_writeprotect
 | 
			
		||||
00000000 T ssc_write
 | 
			
		||||
00000000 T ssc_write_sync_data
 | 
			
		||||
 | 
			
		||||
trng.o:
 | 
			
		||||
00000000 T trng_disable
 | 
			
		||||
00000000 T trng_disable_interrupt
 | 
			
		||||
00000000 T trng_enable
 | 
			
		||||
00000000 T trng_enable_interrupt
 | 
			
		||||
00000000 T trng_get_interrupt_mask
 | 
			
		||||
00000000 T trng_get_interrupt_status
 | 
			
		||||
00000000 T trng_read_output_data
 | 
			
		||||
 | 
			
		||||
rstc.o:
 | 
			
		||||
00000000 T rstc_disable_user_reset
 | 
			
		||||
00000000 T rstc_disable_user_reset_interrupt
 | 
			
		||||
00000000 T rstc_enable_user_reset
 | 
			
		||||
00000000 T rstc_enable_user_reset_interrupt
 | 
			
		||||
00000000 T rstc_get_reset_cause
 | 
			
		||||
00000000 T rstc_get_status
 | 
			
		||||
00000000 T rstc_reset_extern
 | 
			
		||||
00000000 T rstc_set_external_reset
 | 
			
		||||
00000000 T rstc_start_software_reset
 | 
			
		||||
 | 
			
		||||
emac.o:
 | 
			
		||||
00000000 t circ_inc
 | 
			
		||||
00000000 T emac_dev_get_tx_load
 | 
			
		||||
00000000 T emac_dev_init
 | 
			
		||||
00000000 T emac_dev_read
 | 
			
		||||
00000000 T emac_dev_reset
 | 
			
		||||
00000000 T emac_dev_set_rx_callback
 | 
			
		||||
00000000 T emac_dev_set_tx_wakeup_callback
 | 
			
		||||
00000000 T emac_dev_write
 | 
			
		||||
00000000 T emac_handler
 | 
			
		||||
00000000 T emac_phy_read
 | 
			
		||||
00000000 T emac_phy_write
 | 
			
		||||
00000000 t emac_reset_rx_mem
 | 
			
		||||
00000000 t emac_reset_tx_mem
 | 
			
		||||
00000000 b gs_rx_desc
 | 
			
		||||
00000000 b gs_tx_callback
 | 
			
		||||
00000000 b gs_tx_desc
 | 
			
		||||
00000000 b gs_uc_rx_buffer
 | 
			
		||||
00000000 b gs_uc_tx_buffer
 | 
			
		||||
         U memcpy
 | 
			
		||||
@@ -0,0 +1,146 @@
 | 
			
		||||
/* ----------------------------------------------------------------------------
 | 
			
		||||
 *         SAM Software Package License
 | 
			
		||||
 * ----------------------------------------------------------------------------
 | 
			
		||||
 * Copyright (c) 2012, Atmel Corporation
 | 
			
		||||
 *
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following condition is met:
 | 
			
		||||
 *
 | 
			
		||||
 * - Redistributions of source code must retain the above copyright notice,
 | 
			
		||||
 * this list of conditions and the disclaimer below.
 | 
			
		||||
 *
 | 
			
		||||
 * Atmel's name may not be used to endorse or promote products derived from
 | 
			
		||||
 * this software without specific prior written permission.
 | 
			
		||||
 *
 | 
			
		||||
 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
 | 
			
		||||
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 | 
			
		||||
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
 | 
			
		||||
 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
 | 
			
		||||
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 | 
			
		||||
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 | 
			
		||||
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 | 
			
		||||
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 | 
			
		||||
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 | 
			
		||||
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 * ----------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
 | 
			
		||||
OUTPUT_ARCH(arm)
 | 
			
		||||
SEARCH_DIR(.)
 | 
			
		||||
 | 
			
		||||
/* Memory Spaces Definitions */
 | 
			
		||||
MEMORY
 | 
			
		||||
{
 | 
			
		||||
	rom (rx)    : ORIGIN = 0x00080000, LENGTH = 0x00080000 /* Flash, 512K */
 | 
			
		||||
	sram0 (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00010000 /* sram0, 64K */
 | 
			
		||||
	sram1 (rwx) : ORIGIN = 0x20080000, LENGTH = 0x00008000 /* sram1, 32K */
 | 
			
		||||
	ram (rwx)   : ORIGIN = 0x20070000, LENGTH = 0x00018000 /* sram, 96K */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Section Definitions */
 | 
			
		||||
SECTIONS
 | 
			
		||||
{
 | 
			
		||||
    .text :
 | 
			
		||||
    {
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        _sfixed = .;
 | 
			
		||||
        KEEP(*(.vectors .vectors.*))
 | 
			
		||||
        *(.text .text.* .gnu.linkonce.t.*)
 | 
			
		||||
        *(.glue_7t) *(.glue_7)
 | 
			
		||||
        *(.rodata .rodata* .gnu.linkonce.r.*)
 | 
			
		||||
        *(.ARM.extab* .gnu.linkonce.armextab.*)
 | 
			
		||||
 | 
			
		||||
        /* Support C constructors, and C destructors in both user code
 | 
			
		||||
           and the C library. This also provides support for C++ code. */
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        KEEP(*(.init))
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        __preinit_array_start = .;
 | 
			
		||||
        KEEP (*(.preinit_array))
 | 
			
		||||
        __preinit_array_end = .;
 | 
			
		||||
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        __init_array_start = .;
 | 
			
		||||
        KEEP (*(SORT(.init_array.*)))
 | 
			
		||||
        KEEP (*(.init_array))
 | 
			
		||||
        __init_array_end = .;
 | 
			
		||||
 | 
			
		||||
        . = ALIGN(0x4);
 | 
			
		||||
        KEEP (*crtbegin.o(.ctors))
 | 
			
		||||
        KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
 | 
			
		||||
        KEEP (*(SORT(.ctors.*)))
 | 
			
		||||
        KEEP (*crtend.o(.ctors))
 | 
			
		||||
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        KEEP(*(.fini))
 | 
			
		||||
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        __fini_array_start = .;
 | 
			
		||||
        KEEP (*(.fini_array))
 | 
			
		||||
        KEEP (*(SORT(.fini_array.*)))
 | 
			
		||||
        __fini_array_end = .;
 | 
			
		||||
 | 
			
		||||
        KEEP (*crtbegin.o(.dtors))
 | 
			
		||||
        KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
 | 
			
		||||
        KEEP (*(SORT(.dtors.*)))
 | 
			
		||||
        KEEP (*crtend.o(.dtors))
 | 
			
		||||
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        _efixed = .;            /* End of text section */
 | 
			
		||||
    } > rom
 | 
			
		||||
 | 
			
		||||
    /* .ARM.exidx is sorted, so has to go in its own output section.  */
 | 
			
		||||
    PROVIDE_HIDDEN (__exidx_start = .);
 | 
			
		||||
    .ARM.exidx :
 | 
			
		||||
    {
 | 
			
		||||
      *(.ARM.exidx* .gnu.linkonce.armexidx.*)
 | 
			
		||||
    } > rom
 | 
			
		||||
    PROVIDE_HIDDEN (__exidx_end = .);
 | 
			
		||||
 | 
			
		||||
    . = ALIGN(4);
 | 
			
		||||
    _etext = .;
 | 
			
		||||
 | 
			
		||||
    .relocate : AT (_etext)
 | 
			
		||||
    {
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        _srelocate = .;
 | 
			
		||||
        *(.ramfunc .ramfunc.*);
 | 
			
		||||
        *(.data .data.*);
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        _erelocate = .;
 | 
			
		||||
    } > ram
 | 
			
		||||
 | 
			
		||||
    /* .bss section which is used for uninitialized data */
 | 
			
		||||
    .bss ALIGN(4) (NOLOAD) :
 | 
			
		||||
    {
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        _sbss = . ;
 | 
			
		||||
        _szero = .;
 | 
			
		||||
        *(.bss .bss.*)
 | 
			
		||||
        *(COMMON)
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        _ebss = . ;
 | 
			
		||||
        _ezero = .;
 | 
			
		||||
    } > ram
 | 
			
		||||
 | 
			
		||||
    . = ALIGN(4);
 | 
			
		||||
    _end = . ;
 | 
			
		||||
 | 
			
		||||
    /* .stack_dummy section doesn't contains any symbols. It is only
 | 
			
		||||
       used for linker to calculate size of stack sections, and assign
 | 
			
		||||
       values to stack symbols later */
 | 
			
		||||
    .stack_dummy :
 | 
			
		||||
    {
 | 
			
		||||
        *(.stack*)
 | 
			
		||||
    } > ram
 | 
			
		||||
 | 
			
		||||
    /* Set stack top to end of ram, and stack limit move down by
 | 
			
		||||
     * size of stack_dummy section */
 | 
			
		||||
    __StackTop = ORIGIN(ram) + LENGTH(ram);
 | 
			
		||||
    __StackLimit = __StackTop - SIZEOF(.stack_dummy);
 | 
			
		||||
    PROVIDE(_sstack = __StackLimit);
 | 
			
		||||
    PROVIDE(_estack = __StackTop);
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,145 @@
 | 
			
		||||
/* ----------------------------------------------------------------------------
 | 
			
		||||
 *         SAM Software Package License
 | 
			
		||||
 * ----------------------------------------------------------------------------
 | 
			
		||||
 * Copyright (c) 2012, Atmel Corporation
 | 
			
		||||
 *
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following condition is met:
 | 
			
		||||
 *
 | 
			
		||||
 * - Redistributions of source code must retain the above copyright notice,
 | 
			
		||||
 * this list of conditions and the disclaimer below.
 | 
			
		||||
 *
 | 
			
		||||
 * Atmel's name may not be used to endorse or promote products derived from
 | 
			
		||||
 * this software without specific prior written permission.
 | 
			
		||||
 *
 | 
			
		||||
 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
 | 
			
		||||
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 | 
			
		||||
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
 | 
			
		||||
 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
 | 
			
		||||
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 | 
			
		||||
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 | 
			
		||||
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 | 
			
		||||
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 | 
			
		||||
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 | 
			
		||||
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 * ----------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
 | 
			
		||||
OUTPUT_ARCH(arm)
 | 
			
		||||
SEARCH_DIR(.)
 | 
			
		||||
 | 
			
		||||
/* Memory Spaces Definitions */
 | 
			
		||||
MEMORY
 | 
			
		||||
{
 | 
			
		||||
	rom (rx)    : ORIGIN = 0x00080000, LENGTH = 0x00080000 /* Flash, 512K */
 | 
			
		||||
	sram0 (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00010000 /* sram0, 64K */
 | 
			
		||||
	sram1 (rwx) : ORIGIN = 0x20080000, LENGTH = 0x00008000 /* sram1, 32K */
 | 
			
		||||
	ram (rwx)   : ORIGIN = 0x20070000, LENGTH = 0x00018000 /* sram, 96K */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* The stack size used by the application. NOTE: you need to adjust  */
 | 
			
		||||
STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : 0x2000 ;
 | 
			
		||||
 | 
			
		||||
/* Section Definitions */
 | 
			
		||||
SECTIONS
 | 
			
		||||
{
 | 
			
		||||
    .text :
 | 
			
		||||
    {
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        _sfixed = .;
 | 
			
		||||
        KEEP(*(.vectors .vectors.*))
 | 
			
		||||
        *(.text .text.* .gnu.linkonce.t.*)
 | 
			
		||||
        *(.glue_7t) *(.glue_7)
 | 
			
		||||
        *(.rodata .rodata* .gnu.linkonce.r.*)
 | 
			
		||||
        *(.ARM.extab* .gnu.linkonce.armextab.*)
 | 
			
		||||
 | 
			
		||||
        /* Support C constructors, and C destructors in both user code
 | 
			
		||||
           and the C library. This also provides support for C++ code. */
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        KEEP(*(.init))
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        __preinit_array_start = .;
 | 
			
		||||
        KEEP (*(.preinit_array))
 | 
			
		||||
        __preinit_array_end = .;
 | 
			
		||||
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        __init_array_start = .;
 | 
			
		||||
        KEEP (*(SORT(.init_array.*)))
 | 
			
		||||
        KEEP (*(.init_array))
 | 
			
		||||
        __init_array_end = .;
 | 
			
		||||
 | 
			
		||||
        . = ALIGN(0x4);
 | 
			
		||||
        KEEP (*crtbegin.o(.ctors))
 | 
			
		||||
        KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
 | 
			
		||||
        KEEP (*(SORT(.ctors.*)))
 | 
			
		||||
        KEEP (*crtend.o(.ctors))
 | 
			
		||||
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        KEEP(*(.fini))
 | 
			
		||||
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        __fini_array_start = .;
 | 
			
		||||
        KEEP (*(.fini_array))
 | 
			
		||||
        KEEP (*(SORT(.fini_array.*)))
 | 
			
		||||
        __fini_array_end = .;
 | 
			
		||||
 | 
			
		||||
        KEEP (*crtbegin.o(.dtors))
 | 
			
		||||
        KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
 | 
			
		||||
        KEEP (*(SORT(.dtors.*)))
 | 
			
		||||
        KEEP (*crtend.o(.dtors))
 | 
			
		||||
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        _efixed = .;            /* End of text section */
 | 
			
		||||
    } > ram
 | 
			
		||||
 | 
			
		||||
    . = ALIGN(4);
 | 
			
		||||
    _etext = .;
 | 
			
		||||
 | 
			
		||||
    .relocate : AT (_etext)
 | 
			
		||||
    {
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        _srelocate = .;
 | 
			
		||||
        *(.ramfunc .ramfunc.*);
 | 
			
		||||
        *(.data .data.*);
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        _erelocate = .;
 | 
			
		||||
    } > ram
 | 
			
		||||
 | 
			
		||||
    /* .bss section which is used for uninitialized data */
 | 
			
		||||
    .bss (NOLOAD) :
 | 
			
		||||
    {
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        _sbss = . ;
 | 
			
		||||
        _szero = .;
 | 
			
		||||
        *(.bss .bss.*)
 | 
			
		||||
        *(COMMON)
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        _ebss = . ;
 | 
			
		||||
        _ezero = .;
 | 
			
		||||
    } > ram
 | 
			
		||||
 | 
			
		||||
    /* stack section */
 | 
			
		||||
    .stack (NOLOAD):
 | 
			
		||||
    {
 | 
			
		||||
        . = ALIGN(8);
 | 
			
		||||
        _sstack = .;
 | 
			
		||||
        . = . + STACK_SIZE;
 | 
			
		||||
        . = ALIGN(8);
 | 
			
		||||
        _estack = .;
 | 
			
		||||
    } > ram
 | 
			
		||||
 | 
			
		||||
    /* .ARM.exidx is sorted, so has to go in its own output section.  */
 | 
			
		||||
    PROVIDE_HIDDEN (__exidx_start = .);
 | 
			
		||||
    .ARM.exidx :
 | 
			
		||||
    {
 | 
			
		||||
      *(.ARM.exidx* .gnu.linkonce.armexidx.*)
 | 
			
		||||
    } > ram
 | 
			
		||||
    PROVIDE_HIDDEN (__exidx_end = .);
 | 
			
		||||
 | 
			
		||||
    . = ALIGN(4);
 | 
			
		||||
    _end = . ;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1,49 @@
 | 
			
		||||
/*###ICF### Section handled by ICF editor, don't touch! ****/
 | 
			
		||||
/*-Editor annotation file-*/
 | 
			
		||||
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */
 | 
			
		||||
/*-Vector table start*/
 | 
			
		||||
define symbol __ICFEDIT_vector_start__ = 0x00080000; /*Add for CMSIS*/
 | 
			
		||||
/*-Memory Regions-*/
 | 
			
		||||
define symbol __ICFEDIT_region_RAM0_start__  = 0x20000000;
 | 
			
		||||
define symbol __ICFEDIT_region_RAM0_end__    = 0x20007FFF;
 | 
			
		||||
define symbol __ICFEDIT_region_RAM1_start__  = 0x20080000;
 | 
			
		||||
define symbol __ICFEDIT_region_RAM1_end__    = 0x20083FFF;
 | 
			
		||||
define symbol __ICFEDIT_region_ROM0_start__  = 0x00080000;
 | 
			
		||||
define symbol __ICFEDIT_region_ROM0_end__    = 0x0009FFFF;
 | 
			
		||||
define symbol __ICFEDIT_region_ROM1_start__  = 0x00100000;
 | 
			
		||||
define symbol __ICFEDIT_region_ROM1_end__    = 0x0011FFFF;
 | 
			
		||||
/*-Sizes-*/
 | 
			
		||||
/*define symbol __ICFEDIT_size_cstack__        = 0x1000;*//*for nandflash*/
 | 
			
		||||
define symbol __ICFEDIT_size_cstack__        = 0x2000;
 | 
			
		||||
define symbol __ICFEDIT_size_heap__          = 0x200;
 | 
			
		||||
/*-Specials-*/
 | 
			
		||||
/*define symbol __ICFEDIT_region_RAM_VECT_start__ = __ICFEDIT_region_RAM0_start__;*/ /*Referenced for CMSIS*/
 | 
			
		||||
/*define symbol __ICFEDIT_size_vectors__          = 0x100;*/ /*Referenced for CMSIS*/
 | 
			
		||||
/*-Exports-*/
 | 
			
		||||
/*export symbol __ICFEDIT_region_RAM_VECT_start__;*/
 | 
			
		||||
export symbol __ICFEDIT_vector_start__; /*Add for CMSIS*/
 | 
			
		||||
/**** End of ICF editor section. ###ICF###*/
 | 
			
		||||
 | 
			
		||||
define memory mem with size   = 4G;
 | 
			
		||||
/*define region RAM_VECT_region = mem:[from __ICFEDIT_region_RAM_VECT_start__ size __ICFEDIT_size_vectors__];*/ /*Referenced for CMSIS*/
 | 
			
		||||
/*define region RAM0_region     = mem:[from __ICFEDIT_region_RAM0_start__+__ICFEDIT_size_vectors__ to __ICFEDIT_region_RAM0_end__];*/ /*Referenced for CMSIS*/
 | 
			
		||||
define region RAM0_region     = mem:[from __ICFEDIT_region_RAM0_start__ to __ICFEDIT_region_RAM0_end__];
 | 
			
		||||
define region RAM1_region     = mem:[from __ICFEDIT_region_RAM1_start__ to __ICFEDIT_region_RAM1_end__];
 | 
			
		||||
/*define region RAM_region      = mem:[from __ICFEDIT_region_RAM0_start__+__ICFEDIT_size_vectors__ to __ICFEDIT_region_RAM0_end__] |
 | 
			
		||||
                                mem:[from __ICFEDIT_region_RAM1_start__ to __ICFEDIT_region_RAM1_end__];*/ /*Referenced for CMSIS*/
 | 
			
		||||
define region ROM0_region     = mem:[from __ICFEDIT_region_ROM0_start__ to __ICFEDIT_region_ROM0_end__];
 | 
			
		||||
define region ROM1_region     = mem:[from __ICFEDIT_region_ROM1_start__ to __ICFEDIT_region_ROM1_end__];
 | 
			
		||||
 | 
			
		||||
/*define block RamVect   with alignment = 8, size = __ICFEDIT_size_vectors__  { };*/
 | 
			
		||||
define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
 | 
			
		||||
define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };
 | 
			
		||||
 | 
			
		||||
initialize by copy { readwrite };
 | 
			
		||||
do not initialize  { section .noinit };
 | 
			
		||||
 | 
			
		||||
/*place at start of ROM0_region { readonly section .vectors };*/ /*Referenced for CMSIS*/
 | 
			
		||||
place at address mem:__ICFEDIT_vector_start__ { readonly section .intvec }; /*Add for CMSIS*/
 | 
			
		||||
place in ROM0_region          { readonly };
 | 
			
		||||
place in RAM0_region          { readwrite, block HEAP };
 | 
			
		||||
place in RAM1_region          { block CSTACK }; /* for nandflash*/
 | 
			
		||||
/*place in RAM_VECT_region      { block RamVect };*/ /*Referenced for CMSIS*/
 | 
			
		||||
@@ -0,0 +1,33 @@
 | 
			
		||||
/*###ICF### Section handled by ICF editor, don't touch! ****/
 | 
			
		||||
/*-Editor annotation file-*/
 | 
			
		||||
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */
 | 
			
		||||
/*-Vector table start*/
 | 
			
		||||
define symbol __ICFEDIT_vector_start__ = 0x20000000;
 | 
			
		||||
/*-Memory Regions-*/
 | 
			
		||||
define symbol __ICFEDIT_region_RAM0_start__  = 0x20000000;
 | 
			
		||||
define symbol __ICFEDIT_region_RAM0_end__    = 0x20007FFF;
 | 
			
		||||
define symbol __ICFEDIT_region_RAM1_start__  = 0x20080000;
 | 
			
		||||
define symbol __ICFEDIT_region_RAM1_end__    = 0x20083FFF;
 | 
			
		||||
/*-Sizes-*/
 | 
			
		||||
define symbol __ICFEDIT_size_cstack__        = 0x900;
 | 
			
		||||
define symbol __ICFEDIT_size_heap__          = 0x200;
 | 
			
		||||
/*-Exports-*/
 | 
			
		||||
export symbol __ICFEDIT_vector_start__;
 | 
			
		||||
/**** End of ICF editor section. ###ICF###*/
 | 
			
		||||
 | 
			
		||||
define memory mem with size   = 4G;
 | 
			
		||||
define region RAM0_region     = mem:[from __ICFEDIT_region_RAM0_start__ to __ICFEDIT_region_RAM0_end__];
 | 
			
		||||
define region RAM1_region     = mem:[from __ICFEDIT_region_RAM1_start__ to __ICFEDIT_region_RAM1_end__];
 | 
			
		||||
/*define region RAM_region      = mem:[from __ICFEDIT_region_RAM0_start__+__ICFEDIT_size_vectors__ to __ICFEDIT_region_RAM0_end__] |
 | 
			
		||||
                                mem:[from __ICFEDIT_region_RAM1_start__ to __ICFEDIT_region_RAM1_end__];*/
 | 
			
		||||
 | 
			
		||||
/* define block RamVect   with alignment = 8, size = __ICFEDIT_size_vectors__  { }; */
 | 
			
		||||
define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
 | 
			
		||||
define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };
 | 
			
		||||
 | 
			
		||||
initialize by copy { readwrite };
 | 
			
		||||
do not initialize  { section .noinit };
 | 
			
		||||
 | 
			
		||||
place at address mem:__ICFEDIT_vector_start__ { readonly section .intvec };
 | 
			
		||||
place in RAM0_region          { readonly };
 | 
			
		||||
place in RAM1_region          { readwrite, block CSTACK, block HEAP };
 | 
			
		||||
							
								
								
									
										21
									
								
								buildroot/share/PlatformIO/variants/archim/pins_arduino.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								buildroot/share/PlatformIO/variants/archim/pins_arduino.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
/*
 | 
			
		||||
  Copyright (c) 2011 Arduino.  All right reserved.
 | 
			
		||||
 | 
			
		||||
  This library is free software; you can redistribute it and/or
 | 
			
		||||
  modify it under the terms of the GNU Lesser General Public
 | 
			
		||||
  License as published by the Free Software Foundation; either
 | 
			
		||||
  version 2.1 of the License, or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
  This library is distributed in the hope that it will be useful,
 | 
			
		||||
  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
  See the GNU Lesser General Public License for more details.
 | 
			
		||||
 | 
			
		||||
  You should have received a copy of the GNU Lesser General Public
 | 
			
		||||
  License along with this library; if not, write to the Free Software
 | 
			
		||||
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// API compatibility
 | 
			
		||||
#include "variant.h"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										485
									
								
								buildroot/share/PlatformIO/variants/archim/variant.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										485
									
								
								buildroot/share/PlatformIO/variants/archim/variant.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,485 @@
 | 
			
		||||
/*
 | 
			
		||||
  Copyright (c) 2011 Arduino.  All right reserved.
 | 
			
		||||
 | 
			
		||||
  This library is free software; you can redistribute it and/or
 | 
			
		||||
  modify it under the terms of the GNU Lesser General Public
 | 
			
		||||
  License as published by the Free Software Foundation; either
 | 
			
		||||
  version 2.1 of the License, or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
  This library is distributed in the hope that it will be useful,
 | 
			
		||||
  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
  See the GNU Lesser General Public License for more details.
 | 
			
		||||
 | 
			
		||||
  You should have received a copy of the GNU Lesser General Public
 | 
			
		||||
  License along with this library; if not, write to the Free Software
 | 
			
		||||
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include "variant.h"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * DUE Board pin   |  PORT  | Label
 | 
			
		||||
 * ----------------+--------+-------
 | 
			
		||||
 *   0             |  PA8   | "RX0"
 | 
			
		||||
 *   1             |  PA9   | "TX0"
 | 
			
		||||
 *   2       TIOA0 |  PB25  |
 | 
			
		||||
 *   3       TIOA7 |  PC28  |
 | 
			
		||||
 *   4       NPCS1 |  PA29  |
 | 
			
		||||
 *           TIOB6 |  PC26  |
 | 
			
		||||
 *   5       TIOA6 |  PC25  |
 | 
			
		||||
 *   6       PWML7 |  PC24  |
 | 
			
		||||
 *   7       PWML6 |  PC23  |
 | 
			
		||||
 *   8       PWML5 |  PC22  |
 | 
			
		||||
 *   9       PWML4 |  PC21  |
 | 
			
		||||
 *  10       NPCS0 |  PA28  |
 | 
			
		||||
 *           TIOB7 |  PC29  |
 | 
			
		||||
 *  11       TIOA8 |  PD7   |
 | 
			
		||||
 *  12       TIOB8 |  PD8   |
 | 
			
		||||
 *  13       TIOB0 |  PB27  | LED AMBER "L"
 | 
			
		||||
 *  14       TXD3  |  PD4   | "TX3"
 | 
			
		||||
 *  15       RXD3  |  PD5   | "RX3"
 | 
			
		||||
 *  16       TXD1  |  PA13  | "TX2"
 | 
			
		||||
 *  17       RXD1  |  PA12  | "RX2"
 | 
			
		||||
 *  18       TXD0  |  PA11  | "TX1"
 | 
			
		||||
 *  19       RXD0  |  PA10  | "RX1"
 | 
			
		||||
 *  20             |  PB12  | "SDA"
 | 
			
		||||
 *  21             |  PB13  | "SCL"
 | 
			
		||||
 *  22             |  PB26  |
 | 
			
		||||
 *  23             |  PA14  |
 | 
			
		||||
 *  24             |  PA15  |
 | 
			
		||||
 *  25             |  PD0   |
 | 
			
		||||
 *  26             |  PD1   |
 | 
			
		||||
 *  27             |  PD2   |
 | 
			
		||||
 *  28             |  PD3   |
 | 
			
		||||
 *  29             |  PD6   |
 | 
			
		||||
 *  30             |  PD9   |
 | 
			
		||||
 *  31             |  PA7   |
 | 
			
		||||
 *  32             |  PD10  |
 | 
			
		||||
 *  33             |  PC1   |
 | 
			
		||||
 *  34             |  PC2   |
 | 
			
		||||
 *  35             |  PC3   |
 | 
			
		||||
 *  36             |  PC4   |
 | 
			
		||||
 *  37             |  PC5   |
 | 
			
		||||
 *  38             |  PC6   |
 | 
			
		||||
 *  39             |  PC7   |
 | 
			
		||||
 *  40             |  PC8   |
 | 
			
		||||
 *  41             |  PC9   |
 | 
			
		||||
 *  42             |  PA19  |
 | 
			
		||||
 *  43             |  PA20  |
 | 
			
		||||
 *  44             |  PC19  |
 | 
			
		||||
 *  45             |  PC18  |
 | 
			
		||||
 *  46             |  PC17  |
 | 
			
		||||
 *  47             |  PC16  |
 | 
			
		||||
 *  48             |  PC15  |
 | 
			
		||||
 *  49             |  PC14  |
 | 
			
		||||
 *  50             |  PC13  |
 | 
			
		||||
 *  51             |  PC12  |
 | 
			
		||||
 *  52       NPCS2 |  PB21  |
 | 
			
		||||
 *  53             |  PB14  |
 | 
			
		||||
 *  54             |  PA16  | "A0"
 | 
			
		||||
 *  55             |  PA24  | "A1"
 | 
			
		||||
 *  56             |  PA23  | "A2"
 | 
			
		||||
 *  57             |  PA22  | "A3"
 | 
			
		||||
 *  58       TIOB2 |  PA6   | "A4"
 | 
			
		||||
 *  69             |  PA4   | "A5"
 | 
			
		||||
 *  60       TIOB1 |  PA3   | "A6"
 | 
			
		||||
 *  61       TIOA1 |  PA2   | "A7"
 | 
			
		||||
 *  62             |  PB17  | "A8"
 | 
			
		||||
 *  63             |  PB18  | "A9"
 | 
			
		||||
 *  64             |  PB19  | "A10"
 | 
			
		||||
 *  65             |  PB20  | "A11"
 | 
			
		||||
 *  66             |  PB15  | "DAC0"
 | 
			
		||||
 *  67             |  PB16  | "DAC1"
 | 
			
		||||
 *  68             |  PA1   | "CANRX"
 | 
			
		||||
 *  69             |  PA0   | "CANTX"
 | 
			
		||||
 *  70             |  PA17  | "SDA1"
 | 
			
		||||
 *  71             |  PA18  | "SCL1"
 | 
			
		||||
 *  72             |  PC30  | LED AMBER "RX"
 | 
			
		||||
 *  73             |  PA21  | LED AMBER "TX"
 | 
			
		||||
 *  74       MISO  |  PA25  |
 | 
			
		||||
 *  75       MOSI  |  PA26  |
 | 
			
		||||
 *  76       SCLK  |  PA27  |
 | 
			
		||||
 *  77       NPCS0 |  PA28  |
 | 
			
		||||
 *  78       NPCS3 |  PB23  | unconnected!
 | 
			
		||||
 *
 | 
			
		||||
 * USB pin         |  PORT
 | 
			
		||||
 * ----------------+--------
 | 
			
		||||
 *  ID             |  PB11
 | 
			
		||||
 *  VBOF           |  PB10
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Pins descriptions
 | 
			
		||||
 */
 | 
			
		||||
extern const PinDescription g_APinDescription[]=
 | 
			
		||||
{
 | 
			
		||||
  // 0 .. 53 - Digital pins
 | 
			
		||||
  // ----------------------
 | 
			
		||||
  // 0/1 - UART (Serial)
 | 
			
		||||
  { PIOA, PIO_PA8A_URXD,     ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT,  PIN_ATTR_DIGITAL,                 NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // URXD
 | 
			
		||||
  { PIOA, PIO_PA9A_UTXD,     ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT,  PIN_ATTR_DIGITAL,                 NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // UTXD
 | 
			
		||||
 | 
			
		||||
  // 2
 | 
			
		||||
  { PIOB, PIO_PB25B_TIOA0,   ID_PIOB, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM,  TC0_CHA0     }, // TIOA0
 | 
			
		||||
  { PIOC, PIO_PC28B_TIOA7,   ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM,  TC2_CHA7     }, // TIOA7
 | 
			
		||||
  { PIOC, PIO_PC26B_TIOB6,   ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM,  TC2_CHB6     }, // TIOB6
 | 
			
		||||
 | 
			
		||||
  // 5
 | 
			
		||||
  { PIOC, PIO_PC25B_TIOA6,   ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM,  TC2_CHA6     }, // TIOA6
 | 
			
		||||
  { PIOC, PIO_PC24B_PWML7,   ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM),   NO_ADC, NO_ADC, PWM_CH7,     NOT_ON_TIMER }, // PWML7
 | 
			
		||||
  { PIOC, PIO_PC23B_PWML6,   ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM),   NO_ADC, NO_ADC, PWM_CH6,     NOT_ON_TIMER }, // PWML6
 | 
			
		||||
  { PIOC, PIO_PC22B_PWML5,   ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM),   NO_ADC, NO_ADC, PWM_CH5,     NOT_ON_TIMER }, // PWML5
 | 
			
		||||
  { PIOC, PIO_PC21B_PWML4,   ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM),   NO_ADC, NO_ADC, PWM_CH4,     NOT_ON_TIMER }, // PWML4
 | 
			
		||||
  // 10
 | 
			
		||||
  { PIOC, PIO_PC29B_TIOB7,   ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM,  TC2_CHB7     }, // TIOB7
 | 
			
		||||
  { PIOD, PIO_PD7B_TIOA8,    ID_PIOD, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM,  TC2_CHA8     }, // TIOA8
 | 
			
		||||
  { PIOD, PIO_PD8B_TIOB8,    ID_PIOD, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM,  TC2_CHB8     }, // TIOB8
 | 
			
		||||
 | 
			
		||||
  // 13 - AMBER LED
 | 
			
		||||
  { PIOB, PIO_PB27B_TIOB0,   ID_PIOB, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM,  TC0_CHB0     }, // TIOB0
 | 
			
		||||
 | 
			
		||||
  // 14/15 - USART3 (Serial3)
 | 
			
		||||
  { PIOD, PIO_PD4B_TXD3,     ID_PIOD, PIO_PERIPH_B, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // TXD3
 | 
			
		||||
  { PIOD, PIO_PD5B_RXD3,     ID_PIOD, PIO_PERIPH_B, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // RXD3
 | 
			
		||||
 | 
			
		||||
  // 16/17 - USART1 (Serial2)
 | 
			
		||||
  { PIOA, PIO_PA13A_TXD1,    ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // TXD1
 | 
			
		||||
  { PIOA, PIO_PA12A_RXD1,    ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // RXD1
 | 
			
		||||
 | 
			
		||||
  // 18/19 - USART0 (Serial1)
 | 
			
		||||
  { PIOA, PIO_PA11A_TXD0,    ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // TXD0
 | 
			
		||||
  { PIOA, PIO_PA10A_RXD0,    ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // RXD0
 | 
			
		||||
 | 
			
		||||
  // 20/21 - TWI1
 | 
			
		||||
  { PIOB, PIO_PB12A_TWD1,    ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // TWD1 - SDA0
 | 
			
		||||
  { PIOB, PIO_PB13A_TWCK1,   ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // TWCK1 - SCL0
 | 
			
		||||
 | 
			
		||||
  // 22
 | 
			
		||||
  { PIOB, PIO_PB26,          ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 22
 | 
			
		||||
  { PIOA, PIO_PA14,          ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 23
 | 
			
		||||
  { PIOA, PIO_PA15,          ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 24
 | 
			
		||||
  { PIOD, PIO_PD0,           ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 25
 | 
			
		||||
 | 
			
		||||
  // 26
 | 
			
		||||
  { PIOD, PIO_PD1,           ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 26
 | 
			
		||||
  { PIOD, PIO_PD2,           ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 27
 | 
			
		||||
  { PIOD, PIO_PD3,           ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 28
 | 
			
		||||
  { PIOD, PIO_PD6,           ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 29
 | 
			
		||||
 | 
			
		||||
  // 30
 | 
			
		||||
  { PIOD, PIO_PD9,           ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 30
 | 
			
		||||
  { PIOA, PIO_PA7,           ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 31
 | 
			
		||||
  { PIOD, PIO_PD10,          ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 32
 | 
			
		||||
  { PIOC, PIO_PC1,           ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 33
 | 
			
		||||
 | 
			
		||||
  // 34
 | 
			
		||||
  { PIOC, PIO_PC2,           ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 34
 | 
			
		||||
  { PIOC, PIO_PC3,           ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 35
 | 
			
		||||
//{ PIOC, PIO_PC3B_PWMH0,    ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM),   NO_ADC, NO_ADC, PWM_CH0,     NOT_ON_TIMER }, // PWMH0 PIN 35
 | 
			
		||||
  { PIOC, PIO_PC4,           ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 36
 | 
			
		||||
  { PIOC, PIO_PC5,           ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 37
 | 
			
		||||
//{ PIOC, PIO_PC5B_PWMH1,    ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM),   NO_ADC, NO_ADC, PWM_CH1,     NOT_ON_TIMER }, // PWMH1 PIN 37
 | 
			
		||||
 | 
			
		||||
  // 38
 | 
			
		||||
  { PIOC, PIO_PC6,           ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 38
 | 
			
		||||
  { PIOC, PIO_PC7,           ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 39
 | 
			
		||||
//{ PIOC, PIO_PC7B_PWMH2,    ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM),   NO_ADC, NO_ADC, PWM_CH2,     NOT_ON_TIMER }, // PWMH2 PIN 39
 | 
			
		||||
  { PIOC, PIO_PC8,           ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 40
 | 
			
		||||
//{ PIOC, PIO_PC8B_PWML3,    ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM),   NO_ADC, NO_ADC, PWM_CH3,     NOT_ON_TIMER }, // PWML3 PIN 40
 | 
			
		||||
  { PIOC, PIO_PC9,           ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 41
 | 
			
		||||
 | 
			
		||||
  // 42
 | 
			
		||||
  { PIOA, PIO_PA19,          ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 42
 | 
			
		||||
  { PIOA, PIO_PA20,          ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 43
 | 
			
		||||
  { PIOC, PIO_PC19,          ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 44
 | 
			
		||||
//{ PIOC, PIO_PC19B_PWMH5,    ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM),   NO_ADC, NO_ADC, PWM_CH5,     NOT_ON_TIMER }, // PWMH5 PIN 44
 | 
			
		||||
  { PIOC, PIO_PC18,          ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 45
 | 
			
		||||
 | 
			
		||||
  // 46
 | 
			
		||||
  { PIOC, PIO_PC17,          ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 46
 | 
			
		||||
  { PIOC, PIO_PC16,          ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 47
 | 
			
		||||
  { PIOC, PIO_PC15,          ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 48
 | 
			
		||||
  { PIOC, PIO_PC14,          ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 49
 | 
			
		||||
 | 
			
		||||
  // 50
 | 
			
		||||
  { PIOC, PIO_PC13,          ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 50
 | 
			
		||||
  { PIOC, PIO_PC12,          ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 51
 | 
			
		||||
  { PIOB, PIO_PB21,          ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 52
 | 
			
		||||
  { PIOB, PIO_PB14,          ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // PIN 53
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  // 54 .. 65 - Analog pins
 | 
			
		||||
  // ----------------------
 | 
			
		||||
  { PIOA, PIO_PA16X1_AD7,    ID_PIOA, PIO_INPUT,    PIO_DEFAULT, PIN_ATTR_ANALOG,                   ADC0,   ADC7,   NOT_ON_PWM,  NOT_ON_TIMER }, // AD0
 | 
			
		||||
  { PIOA, PIO_PA24X1_AD6,    ID_PIOA, PIO_INPUT,    PIO_DEFAULT, PIN_ATTR_ANALOG,                   ADC1,   ADC6,   NOT_ON_PWM,  NOT_ON_TIMER }, // AD1
 | 
			
		||||
  { PIOA, PIO_PA23X1_AD5,    ID_PIOA, PIO_INPUT,    PIO_DEFAULT, PIN_ATTR_ANALOG,                   ADC2,   ADC5,   NOT_ON_PWM,  NOT_ON_TIMER }, // AD2
 | 
			
		||||
  { PIOA, PIO_PA22X1_AD4,    ID_PIOA, PIO_INPUT,    PIO_DEFAULT, PIN_ATTR_ANALOG,                   ADC3,   ADC4,   NOT_ON_PWM,  NOT_ON_TIMER }, // AD3
 | 
			
		||||
  // 58
 | 
			
		||||
//{ PIOA, PIO_PA6X1_AD3,     ID_PIOA, PIO_INPUT,    PIO_DEFAULT, PIN_ATTR_ANALOG,                   ADC4,   ADC3,   NOT_ON_PWM,  TC0_CHB2     }, // AD4
 | 
			
		||||
  { PIOA, PIO_PA6A_TIOB2,    ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_TIMER|PIN_ATTR_DIGITAL), ADC4,   ADC3,   NOT_ON_PWM,  TC0_CHB2     }, // TIOB2
 | 
			
		||||
  { PIOA, PIO_PA4X1_AD2,     ID_PIOA, PIO_INPUT,    PIO_DEFAULT, PIN_ATTR_ANALOG,                   ADC5,   ADC2,   NOT_ON_PWM,  NOT_ON_TIMER }, // AD5
 | 
			
		||||
  { PIOA, PIO_PA3X1_AD1,     ID_PIOA, PIO_INPUT,    PIO_DEFAULT, PIN_ATTR_ANALOG,                   ADC6,   ADC1,   NOT_ON_PWM,  TC0_CHB1     }, // AD6
 | 
			
		||||
  { PIOA, PIO_PA2X1_AD0,     ID_PIOA, PIO_INPUT,    PIO_DEFAULT, PIN_ATTR_ANALOG,                   ADC7,   ADC0,   NOT_ON_PWM,  TC0_CHA1     }, // AD7
 | 
			
		||||
  // 62
 | 
			
		||||
  { PIOB, PIO_PB17X1_AD10,   ID_PIOB, PIO_INPUT,    PIO_DEFAULT, PIN_ATTR_ANALOG,                   ADC8,   ADC10,  NOT_ON_PWM,  NOT_ON_TIMER }, // AD8
 | 
			
		||||
  { PIOB, PIO_PB18X1_AD11,   ID_PIOB, PIO_INPUT,    PIO_DEFAULT, PIN_ATTR_ANALOG,                   ADC9,   ADC11,  NOT_ON_PWM,  NOT_ON_TIMER }, // AD9
 | 
			
		||||
  { PIOB, PIO_PB19X1_AD12,   ID_PIOB, PIO_INPUT,    PIO_DEFAULT, PIN_ATTR_ANALOG,                   ADC10,  ADC12,  NOT_ON_PWM,  NOT_ON_TIMER }, // AD10
 | 
			
		||||
  { PIOB, PIO_PB20X1_AD13,   ID_PIOB, PIO_INPUT,    PIO_DEFAULT, PIN_ATTR_ANALOG,                   ADC11,  ADC13,  NOT_ON_PWM,  NOT_ON_TIMER }, // AD11
 | 
			
		||||
 | 
			
		||||
  // 66/67 - DAC0/DAC1
 | 
			
		||||
  { PIOB, PIO_PB15X1_DAC0,   ID_PIOB, PIO_INPUT,    PIO_DEFAULT, PIN_ATTR_ANALOG,                   ADC12,  DA0,    NOT_ON_PWM,  NOT_ON_TIMER }, // DAC0
 | 
			
		||||
  { PIOB, PIO_PB16X1_DAC1,   ID_PIOB, PIO_INPUT,    PIO_DEFAULT, PIN_ATTR_ANALOG,                   ADC13,  DA1,    NOT_ON_PWM,  NOT_ON_TIMER }, // DAC1
 | 
			
		||||
 | 
			
		||||
  // 68/69 - CANRX0/CANTX0
 | 
			
		||||
  { PIOA, PIO_PA1A_CANRX0,   ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  ADC14,  NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // CANRX
 | 
			
		||||
  { PIOA, PIO_PA0A_CANTX0,   ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  ADC15,  NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // CANTX
 | 
			
		||||
 | 
			
		||||
  // 70/71 - TWI0
 | 
			
		||||
  { PIOA, PIO_PA17A_TWD0,    ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // TWD0 - SDA1
 | 
			
		||||
  { PIOA, PIO_PA18A_TWCK0,   ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // TWCK0 - SCL1
 | 
			
		||||
 | 
			
		||||
  // 72/73 - LEDs
 | 
			
		||||
  { PIOC, PIO_PC30,          ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // LED AMBER RXL
 | 
			
		||||
  { PIOA, PIO_PA21,          ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // LED AMBER TXL
 | 
			
		||||
 | 
			
		||||
  // 74/75/76 - SPI
 | 
			
		||||
  { PIOA, PIO_PA25A_SPI0_MISO,ID_PIOA,PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // MISO
 | 
			
		||||
  { PIOA, PIO_PA26A_SPI0_MOSI,ID_PIOA,PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // MOSI
 | 
			
		||||
  { PIOA, PIO_PA27A_SPI0_SPCK,ID_PIOA,PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // SPCK
 | 
			
		||||
 | 
			
		||||
  // 77 - SPI CS0
 | 
			
		||||
  { PIOA, PIO_PA28A_SPI0_NPCS0,ID_PIOA,PIO_PERIPH_A,PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // NPCS0
 | 
			
		||||
 | 
			
		||||
  // 78 - SPI CS3 (unconnected)
 | 
			
		||||
  { PIOB, PIO_PB23B_SPI0_NPCS3,ID_PIOB,PIO_PERIPH_B,PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // NPCS3
 | 
			
		||||
 | 
			
		||||
  // 79 .. 84 - "All pins" masks
 | 
			
		||||
 | 
			
		||||
  // 79 - TWI0 all pins
 | 
			
		||||
  { PIOA, PIO_PA17A_TWD0|PIO_PA18A_TWCK0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER },
 | 
			
		||||
  // 80 - TWI1 all pins
 | 
			
		||||
  { PIOB, PIO_PB12A_TWD1|PIO_PB13A_TWCK1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER },
 | 
			
		||||
  // 81 - UART (Serial) all pins
 | 
			
		||||
  { PIOA, PIO_PA8A_URXD|PIO_PA9A_UTXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER },
 | 
			
		||||
  // 82 - USART0 (Serial1) all pins
 | 
			
		||||
  { PIOA, PIO_PA11A_TXD0|PIO_PA10A_RXD0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER },
 | 
			
		||||
  // 83 - USART1 (Serial2) all pins
 | 
			
		||||
  { PIOA, PIO_PA13A_TXD1|PIO_PA12A_RXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER },
 | 
			
		||||
  // 84 - USART3 (Serial3) all pins
 | 
			
		||||
  { PIOD, PIO_PD4B_TXD3|PIO_PD5B_RXD3, ID_PIOD, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER },
 | 
			
		||||
 | 
			
		||||
  // 85 - USB
 | 
			
		||||
//{ PIOB, PIO_PB11A_UOTGID|PIO_PB10A_UOTGVBOF, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // ID - VBOF
 | 
			
		||||
  // 85 - PB11 only
 | 
			
		||||
  { PIOB, PIO_PB11A_UOTGID, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // ID - VBOF
 | 
			
		||||
 | 
			
		||||
  // 86 - SPI CS2
 | 
			
		||||
  { PIOB, PIO_PB21B_SPI0_NPCS2, ID_PIOB, PIO_PERIPH_B, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // NPCS2
 | 
			
		||||
 | 
			
		||||
  // 87 - SPI CS1
 | 
			
		||||
  { PIOA, PIO_PA29A_SPI0_NPCS1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // NPCS1
 | 
			
		||||
 | 
			
		||||
  // 88/89 - CANRX1/CANTX1 (same physical pin for 66/53)
 | 
			
		||||
  { PIOB, PIO_PB15A_CANRX1,     ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // CANRX1
 | 
			
		||||
  { PIOB, PIO_PB14A_CANTX1,     ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // CANTX1
 | 
			
		||||
 | 
			
		||||
  // 90 .. 91 - "All CAN pins" masks
 | 
			
		||||
  // 90 - CAN0 all pins
 | 
			
		||||
  { PIOA, PIO_PA1A_CANRX0|PIO_PA0A_CANTX0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC,  NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER },
 | 
			
		||||
  // 91 - CAN1 all pins
 | 
			
		||||
  { PIOB, PIO_PB15A_CANRX1|PIO_PB14A_CANTX1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER },
 | 
			
		||||
 | 
			
		||||
  // 92 - Extra AMBIT Pins
 | 
			
		||||
  { PIOC, PIO_PC11,           ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 92
 | 
			
		||||
  { PIOB, PIO_PB2,            ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 93
 | 
			
		||||
  { PIOB, PIO_PB1,            ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 94
 | 
			
		||||
  { PIOB, PIO_PB0,            ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 95
 | 
			
		||||
  { PIOC, PIO_PC10,           ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 96
 | 
			
		||||
  { PIOB, PIO_PB24,           ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 97
 | 
			
		||||
  { PIOB, PIO_PB7,            ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 98
 | 
			
		||||
  { PIOB, PIO_PB6,            ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 99
 | 
			
		||||
  { PIOB, PIO_PB8,            ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 100
 | 
			
		||||
  { PIOB, PIO_PB5,            ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 101
 | 
			
		||||
  { PIOB, PIO_PB4,            ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 102
 | 
			
		||||
  { PIOB, PIO_PB3,            ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 103
 | 
			
		||||
  { PIOC, PIO_PC20,           ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 104
 | 
			
		||||
  { PIOB, PIO_PB22,           ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 105
 | 
			
		||||
  { PIOC, PIO_PC27,           ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 106
 | 
			
		||||
  { PIOB, PIO_PB10B_A18,      ID_PIOB, PIO_PERIPH_B, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 107
 | 
			
		||||
  { PIOB, PIO_PB9,            ID_PIOB, PIO_PERIPH_B, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 108
 | 
			
		||||
  { PIOA, PIO_PA5,            ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL,                  NO_ADC, NO_ADC, NOT_ON_PWM,  NOT_ON_TIMER }, // DIO PIN 109
 | 
			
		||||
 | 
			
		||||
  // END
 | 
			
		||||
  { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }
 | 
			
		||||
} ;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
uint8_t g_pinStatus[PINS_COUNT] = {0};
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * UART objects
 | 
			
		||||
 */
 | 
			
		||||
RingBuffer rx_buffer1;
 | 
			
		||||
RingBuffer tx_buffer1;
 | 
			
		||||
 | 
			
		||||
UARTClass Serial(UART, UART_IRQn, ID_UART, &rx_buffer1, &tx_buffer1);
 | 
			
		||||
void serialEvent() __attribute__((weak));
 | 
			
		||||
void serialEvent() { }
 | 
			
		||||
 | 
			
		||||
// IT handlers
 | 
			
		||||
void UART_Handler(void)
 | 
			
		||||
{
 | 
			
		||||
  Serial.IrqHandler();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
/*
 | 
			
		||||
 * USART objects
 | 
			
		||||
 */
 | 
			
		||||
RingBuffer rx_buffer2;
 | 
			
		||||
RingBuffer rx_buffer3;
 | 
			
		||||
RingBuffer rx_buffer4;
 | 
			
		||||
RingBuffer tx_buffer2;
 | 
			
		||||
RingBuffer tx_buffer3;
 | 
			
		||||
RingBuffer tx_buffer4;
 | 
			
		||||
 | 
			
		||||
USARTClass Serial1(USART0, USART0_IRQn, ID_USART0, &rx_buffer2, &tx_buffer2);
 | 
			
		||||
void serialEvent1() __attribute__((weak));
 | 
			
		||||
void serialEvent1() { }
 | 
			
		||||
USARTClass Serial2(USART1, USART1_IRQn, ID_USART1, &rx_buffer3, &tx_buffer3);
 | 
			
		||||
void serialEvent2() __attribute__((weak));
 | 
			
		||||
void serialEvent2() { }
 | 
			
		||||
USARTClass Serial3(USART3, USART3_IRQn, ID_USART3, &rx_buffer4, &tx_buffer4);
 | 
			
		||||
void serialEvent3() __attribute__((weak));
 | 
			
		||||
void serialEvent3() { }
 | 
			
		||||
 | 
			
		||||
// IT handlers
 | 
			
		||||
void USART0_Handler(void)
 | 
			
		||||
{
 | 
			
		||||
  Serial1.IrqHandler();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void USART1_Handler(void)
 | 
			
		||||
{
 | 
			
		||||
  Serial2.IrqHandler();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void USART3_Handler(void)
 | 
			
		||||
{
 | 
			
		||||
  Serial3.IrqHandler();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
void serialEventRun(void)
 | 
			
		||||
{
 | 
			
		||||
  if (Serial.available()) serialEvent();
 | 
			
		||||
  if (Serial1.available()) serialEvent1();
 | 
			
		||||
  if (Serial2.available()) serialEvent2();
 | 
			
		||||
  if (Serial3.available()) serialEvent3();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void __libc_init_array(void);
 | 
			
		||||
 | 
			
		||||
void init( void )
 | 
			
		||||
{
 | 
			
		||||
  SystemInit();
 | 
			
		||||
 | 
			
		||||
  // Set Systick to 1ms interval, common to all SAM3 variants
 | 
			
		||||
  if (SysTick_Config(SystemCoreClock / 1000))
 | 
			
		||||
  {
 | 
			
		||||
    // Capture error
 | 
			
		||||
    while (true);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Initialize C library
 | 
			
		||||
  __libc_init_array();
 | 
			
		||||
 | 
			
		||||
  // Disable pull-up on every pin
 | 
			
		||||
  for (unsigned i = 0; i < PINS_COUNT; i++)
 | 
			
		||||
	  digitalWrite(i, LOW);
 | 
			
		||||
 | 
			
		||||
  // Enable parallel access on PIO output data registers
 | 
			
		||||
  PIOA->PIO_OWER = 0xFFFFFFFF;
 | 
			
		||||
  PIOB->PIO_OWER = 0xFFFFFFFF;
 | 
			
		||||
  PIOC->PIO_OWER = 0xFFFFFFFF;
 | 
			
		||||
  PIOD->PIO_OWER = 0xFFFFFFFF;
 | 
			
		||||
 | 
			
		||||
  // Set USB Full Speed for Archim
 | 
			
		||||
  udd_low_speed_disable();
 | 
			
		||||
  udd_high_speed_disable();
 | 
			
		||||
 | 
			
		||||
  // Initialize Serial port U(S)ART pins
 | 
			
		||||
  PIO_Configure(
 | 
			
		||||
    g_APinDescription[PINS_UART].pPort,
 | 
			
		||||
    g_APinDescription[PINS_UART].ulPinType,
 | 
			
		||||
    g_APinDescription[PINS_UART].ulPin,
 | 
			
		||||
    g_APinDescription[PINS_UART].ulPinConfiguration);
 | 
			
		||||
  digitalWrite(0, HIGH); // Enable pullup for RX0
 | 
			
		||||
  PIO_Configure(
 | 
			
		||||
    g_APinDescription[PINS_USART0].pPort,
 | 
			
		||||
    g_APinDescription[PINS_USART0].ulPinType,
 | 
			
		||||
    g_APinDescription[PINS_USART0].ulPin,
 | 
			
		||||
    g_APinDescription[PINS_USART0].ulPinConfiguration);
 | 
			
		||||
  PIO_Configure(
 | 
			
		||||
    g_APinDescription[PINS_USART1].pPort,
 | 
			
		||||
    g_APinDescription[PINS_USART1].ulPinType,
 | 
			
		||||
    g_APinDescription[PINS_USART1].ulPin,
 | 
			
		||||
    g_APinDescription[PINS_USART1].ulPinConfiguration);
 | 
			
		||||
  PIO_Configure(
 | 
			
		||||
    g_APinDescription[PINS_USART3].pPort,
 | 
			
		||||
    g_APinDescription[PINS_USART3].ulPinType,
 | 
			
		||||
    g_APinDescription[PINS_USART3].ulPin,
 | 
			
		||||
    g_APinDescription[PINS_USART3].ulPinConfiguration);
 | 
			
		||||
 | 
			
		||||
  // Initialize USB pins
 | 
			
		||||
  PIO_Configure(
 | 
			
		||||
    g_APinDescription[PINS_USB].pPort,
 | 
			
		||||
    g_APinDescription[PINS_USB].ulPinType,
 | 
			
		||||
    g_APinDescription[PINS_USB].ulPin,
 | 
			
		||||
    g_APinDescription[PINS_USB].ulPinConfiguration);
 | 
			
		||||
 | 
			
		||||
  // Initialize CAN pins
 | 
			
		||||
  PIO_Configure(
 | 
			
		||||
    g_APinDescription[PINS_CAN0].pPort,
 | 
			
		||||
    g_APinDescription[PINS_CAN0].ulPinType,
 | 
			
		||||
    g_APinDescription[PINS_CAN0].ulPin,
 | 
			
		||||
    g_APinDescription[PINS_CAN0].ulPinConfiguration);
 | 
			
		||||
  PIO_Configure(
 | 
			
		||||
    g_APinDescription[PINS_CAN1].pPort,
 | 
			
		||||
    g_APinDescription[PINS_CAN1].ulPinType,
 | 
			
		||||
    g_APinDescription[PINS_CAN1].ulPin,
 | 
			
		||||
    g_APinDescription[PINS_CAN1].ulPinConfiguration);
 | 
			
		||||
 | 
			
		||||
  // Initialize Analog Controller
 | 
			
		||||
  pmc_enable_periph_clk(ID_ADC);
 | 
			
		||||
  adc_init(ADC, SystemCoreClock, ADC_FREQ_MAX, ADC_STARTUP_FAST);
 | 
			
		||||
  adc_configure_timing(ADC, 0, ADC_SETTLING_TIME_3, 1);
 | 
			
		||||
  adc_configure_trigger(ADC, ADC_TRIG_SW, 0); // Disable hardware trigger.
 | 
			
		||||
  adc_disable_interrupt(ADC, 0xFFFFFFFF); // Disable all ADC interrupts.
 | 
			
		||||
  adc_disable_all_channel(ADC);
 | 
			
		||||
 | 
			
		||||
  // Initialize analogOutput module
 | 
			
		||||
  analogOutputInit();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										284
									
								
								buildroot/share/PlatformIO/variants/archim/variant.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										284
									
								
								buildroot/share/PlatformIO/variants/archim/variant.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,284 @@
 | 
			
		||||
/*
 | 
			
		||||
  Copyright (c) 2011 Arduino.  All right reserved.
 | 
			
		||||
 | 
			
		||||
  This library is free software; you can redistribute it and/or
 | 
			
		||||
  modify it under the terms of the GNU Lesser General Public
 | 
			
		||||
  License as published by the Free Software Foundation; either
 | 
			
		||||
  version 2.1 of the License, or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
  This library is distributed in the hope that it will be useful,
 | 
			
		||||
  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
  See the GNU Lesser General Public License for more details.
 | 
			
		||||
 | 
			
		||||
  You should have received a copy of the GNU Lesser General Public
 | 
			
		||||
  License along with this library; if not, write to the Free Software
 | 
			
		||||
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _VARIANT_ARDUINO_DUE_X_
 | 
			
		||||
#define _VARIANT_ARDUINO_DUE_X_
 | 
			
		||||
 | 
			
		||||
/*----------------------------------------------------------------------------
 | 
			
		||||
 *        Definitions
 | 
			
		||||
 *----------------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
/** Frequency of the board main oscillator */
 | 
			
		||||
#define VARIANT_MAINOSC		12000000
 | 
			
		||||
 | 
			
		||||
/** Master clock frequency */
 | 
			
		||||
#define VARIANT_MCK			84000000
 | 
			
		||||
 | 
			
		||||
/*----------------------------------------------------------------------------
 | 
			
		||||
 *        Headers
 | 
			
		||||
 *----------------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
#include "Arduino.h"
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#include "UARTClass.h"
 | 
			
		||||
#include "USARTClass.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C"{
 | 
			
		||||
#endif // __cplusplus
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Libc porting layers
 | 
			
		||||
 */
 | 
			
		||||
#if defined (  __GNUC__  ) /* GCC CS3 */
 | 
			
		||||
#    include <syscalls.h> /** RedHat Newlib minimal stub */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*----------------------------------------------------------------------------
 | 
			
		||||
 *        Pins
 | 
			
		||||
 *----------------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
// Number of pins defined in PinDescription array
 | 
			
		||||
#define PINS_COUNT           (79u)
 | 
			
		||||
#define NUM_DIGITAL_PINS     (66u)
 | 
			
		||||
#define NUM_ANALOG_INPUTS    (12u)
 | 
			
		||||
#define analogInputToDigitalPin(p)  ((p < 12u) ? (p) + 54u : -1)
 | 
			
		||||
 | 
			
		||||
#define digitalPinToPort(P)        ( g_APinDescription[P].pPort )
 | 
			
		||||
#define digitalPinToBitMask(P)     ( g_APinDescription[P].ulPin )
 | 
			
		||||
//#define analogInPinToBit(P)        ( )
 | 
			
		||||
#define portOutputRegister(port)   ( &(port->PIO_ODSR) )
 | 
			
		||||
#define portInputRegister(port)    ( &(port->PIO_PDSR) )
 | 
			
		||||
#define digitalPinHasPWM(P)        ( g_APinDescription[P].ulPWMChannel != NOT_ON_PWM || g_APinDescription[P].ulTCChannel != NOT_ON_TIMER )
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * portModeRegister(..) should return a register to set pin mode
 | 
			
		||||
 * INPUT or OUTPUT by setting the corresponding bit to 0 or 1.
 | 
			
		||||
 * Unfortunately on SAM architecture the PIO_OSR register is
 | 
			
		||||
 * read-only and can be set only through the enable/disable registers
 | 
			
		||||
 * pair PIO_OER/PIO_ODR.
 | 
			
		||||
 */
 | 
			
		||||
// #define portModeRegister(port)   ( &(port->PIO_OSR) )
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * digitalPinToTimer(..) is AVR-specific and is not defined for SAM
 | 
			
		||||
 * architecture. If you need to check if a pin supports PWM you must
 | 
			
		||||
 * use digitalPinHasPWM(..).
 | 
			
		||||
 *
 | 
			
		||||
 * https://github.com/arduino/Arduino/issues/1833
 | 
			
		||||
 */
 | 
			
		||||
// #define digitalPinToTimer(P)
 | 
			
		||||
 | 
			
		||||
// Interrupts
 | 
			
		||||
#define digitalPinToInterrupt(p)  ((p) < NUM_DIGITAL_PINS ? (p) : -1)
 | 
			
		||||
 | 
			
		||||
// LEDs
 | 
			
		||||
#define PIN_LED_13           (13u)
 | 
			
		||||
#define PIN_LED_RXL          (72u)
 | 
			
		||||
#define PIN_LED_TXL          (73u)
 | 
			
		||||
#define PIN_LED              PIN_LED_13
 | 
			
		||||
#define PIN_LED2             PIN_LED_RXL
 | 
			
		||||
#define PIN_LED3             PIN_LED_TXL
 | 
			
		||||
#define LED_BUILTIN          13
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SPI Interfaces
 | 
			
		||||
 */
 | 
			
		||||
#define SPI_INTERFACES_COUNT 1
 | 
			
		||||
 | 
			
		||||
#define SPI_INTERFACE        SPI0
 | 
			
		||||
#define SPI_INTERFACE_ID     ID_SPI0
 | 
			
		||||
#define SPI_CHANNELS_NUM 4
 | 
			
		||||
#define PIN_SPI_SS0          (77u)
 | 
			
		||||
#define PIN_SPI_SS1          (87u)
 | 
			
		||||
#define PIN_SPI_SS2          (86u)
 | 
			
		||||
#define PIN_SPI_SS3          (78u)
 | 
			
		||||
#define PIN_SPI_MOSI         (75u)
 | 
			
		||||
#define PIN_SPI_MISO         (74u)
 | 
			
		||||
#define PIN_SPI_SCK          (76u)
 | 
			
		||||
#define BOARD_SPI_SS0        (77u) //(10u)
 | 
			
		||||
#define BOARD_SPI_SS1        (4u)
 | 
			
		||||
#define BOARD_SPI_SS2        (52u)
 | 
			
		||||
#define BOARD_SPI_SS3        PIN_SPI_SS3
 | 
			
		||||
#define BOARD_SPI_DEFAULT_SS BOARD_SPI_SS3
 | 
			
		||||
 | 
			
		||||
#define BOARD_PIN_TO_SPI_PIN(x) \
 | 
			
		||||
	(x==BOARD_SPI_SS0 ? PIN_SPI_SS0 : \
 | 
			
		||||
	(x==BOARD_SPI_SS1 ? PIN_SPI_SS1 : \
 | 
			
		||||
	(x==BOARD_SPI_SS2 ? PIN_SPI_SS2 : PIN_SPI_SS3 )))
 | 
			
		||||
#define BOARD_PIN_TO_SPI_CHANNEL(x) \
 | 
			
		||||
	(x==BOARD_SPI_SS0 ? 0 : \
 | 
			
		||||
	(x==BOARD_SPI_SS1 ? 1 : \
 | 
			
		||||
	(x==BOARD_SPI_SS2 ? 2 : 3)))
 | 
			
		||||
 | 
			
		||||
static const uint8_t SS   = BOARD_SPI_SS0;
 | 
			
		||||
static const uint8_t SS1  = BOARD_SPI_SS1;
 | 
			
		||||
static const uint8_t SS2  = BOARD_SPI_SS2;
 | 
			
		||||
static const uint8_t SS3  = BOARD_SPI_SS3;
 | 
			
		||||
static const uint8_t MOSI = PIN_SPI_MOSI;
 | 
			
		||||
static const uint8_t MISO = PIN_SPI_MISO;
 | 
			
		||||
static const uint8_t SCK  = PIN_SPI_SCK;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Wire Interfaces
 | 
			
		||||
 */
 | 
			
		||||
#define WIRE_INTERFACES_COUNT 2
 | 
			
		||||
 | 
			
		||||
#define PIN_WIRE_SDA         (20u)
 | 
			
		||||
#define PIN_WIRE_SCL         (21u)
 | 
			
		||||
#define WIRE_INTERFACE       TWI1
 | 
			
		||||
#define WIRE_INTERFACE_ID    ID_TWI1
 | 
			
		||||
#define WIRE_ISR_HANDLER     TWI1_Handler
 | 
			
		||||
#define WIRE_ISR_ID          TWI1_IRQn
 | 
			
		||||
 | 
			
		||||
#define PIN_WIRE1_SDA        (70u)
 | 
			
		||||
#define PIN_WIRE1_SCL        (71u)
 | 
			
		||||
#define WIRE1_INTERFACE      TWI0
 | 
			
		||||
#define WIRE1_INTERFACE_ID   ID_TWI0
 | 
			
		||||
#define WIRE1_ISR_HANDLER    TWI0_Handler
 | 
			
		||||
#define WIRE1_ISR_ID         TWI0_IRQn
 | 
			
		||||
 | 
			
		||||
static const uint8_t SDA  = PIN_WIRE_SDA;
 | 
			
		||||
static const uint8_t SCL  = PIN_WIRE_SCL;
 | 
			
		||||
static const uint8_t SDA1 = PIN_WIRE1_SDA;
 | 
			
		||||
static const uint8_t SCL1 = PIN_WIRE1_SCL;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * UART/USART Interfaces
 | 
			
		||||
 */
 | 
			
		||||
// Serial
 | 
			
		||||
#define PINS_UART            (81u)
 | 
			
		||||
// Serial1
 | 
			
		||||
#define PINS_USART0          (82u)
 | 
			
		||||
// Serial2
 | 
			
		||||
#define PINS_USART1          (83u)
 | 
			
		||||
// Serial3
 | 
			
		||||
#define PINS_USART3          (84u)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * USB Interfaces
 | 
			
		||||
 */
 | 
			
		||||
#define PINS_USB             (85u)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Analog pins
 | 
			
		||||
 */
 | 
			
		||||
static const uint8_t A0  = 54;
 | 
			
		||||
static const uint8_t A1  = 55;
 | 
			
		||||
static const uint8_t A2  = 56;
 | 
			
		||||
static const uint8_t A3  = 57;
 | 
			
		||||
static const uint8_t A4  = 58;
 | 
			
		||||
static const uint8_t A5  = 59;
 | 
			
		||||
static const uint8_t A6  = 60;
 | 
			
		||||
static const uint8_t A7  = 61;
 | 
			
		||||
static const uint8_t A8  = 62;
 | 
			
		||||
static const uint8_t A9  = 63;
 | 
			
		||||
static const uint8_t A10 = 64;
 | 
			
		||||
static const uint8_t A11 = 65;
 | 
			
		||||
static const uint8_t DAC0 = 66;
 | 
			
		||||
static const uint8_t DAC1 = 67;
 | 
			
		||||
static const uint8_t CANRX = 68;
 | 
			
		||||
static const uint8_t CANTX = 69;
 | 
			
		||||
#define ADC_RESOLUTION		12
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Complementary CAN pins
 | 
			
		||||
 */
 | 
			
		||||
static const uint8_t CAN1RX = 88;
 | 
			
		||||
static const uint8_t CAN1TX = 89;
 | 
			
		||||
 | 
			
		||||
// CAN0
 | 
			
		||||
#define PINS_CAN0            (90u)
 | 
			
		||||
// CAN1
 | 
			
		||||
#define PINS_CAN1            (91u)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * DACC
 | 
			
		||||
 */
 | 
			
		||||
#define DACC_INTERFACE		DACC
 | 
			
		||||
#define DACC_INTERFACE_ID	ID_DACC
 | 
			
		||||
#define DACC_RESOLUTION		12
 | 
			
		||||
#define DACC_ISR_HANDLER    DACC_Handler
 | 
			
		||||
#define DACC_ISR_ID         DACC_IRQn
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * PWM
 | 
			
		||||
 */
 | 
			
		||||
#define PWM_INTERFACE		PWM
 | 
			
		||||
#define PWM_INTERFACE_ID	ID_PWM
 | 
			
		||||
#define PWM_FREQUENCY		31000
 | 
			
		||||
#define PWM_MAX_DUTY_CYCLE	255
 | 
			
		||||
#define PWM_MIN_DUTY_CYCLE	0
 | 
			
		||||
#define PWM_RESOLUTION		8
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * TC
 | 
			
		||||
 */
 | 
			
		||||
#define TC_INTERFACE        TC0
 | 
			
		||||
#define TC_INTERFACE_ID     ID_TC0
 | 
			
		||||
#define TC_FREQUENCY        100000
 | 
			
		||||
#define TC_MAX_DUTY_CYCLE   255
 | 
			
		||||
#define TC_MIN_DUTY_CYCLE   0
 | 
			
		||||
#define TC_RESOLUTION		8
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*----------------------------------------------------------------------------
 | 
			
		||||
 *        Arduino objects - C++ only
 | 
			
		||||
 *----------------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 | 
			
		||||
extern UARTClass Serial;
 | 
			
		||||
extern USARTClass Serial1;
 | 
			
		||||
extern USARTClass Serial2;
 | 
			
		||||
extern USARTClass Serial3;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// These serial port names are intended to allow libraries and architecture-neutral
 | 
			
		||||
// sketches to automatically default to the correct port name for a particular type
 | 
			
		||||
// of use.  For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
 | 
			
		||||
// the first hardware serial port whose RX/TX pins are not dedicated to another use.
 | 
			
		||||
//
 | 
			
		||||
// SERIAL_PORT_MONITOR        Port which normally prints to the Arduino Serial Monitor
 | 
			
		||||
//
 | 
			
		||||
// SERIAL_PORT_USBVIRTUAL     Port which is USB virtual serial
 | 
			
		||||
//
 | 
			
		||||
// SERIAL_PORT_LINUXBRIDGE    Port which connects to a Linux system via Bridge library
 | 
			
		||||
//
 | 
			
		||||
// SERIAL_PORT_HARDWARE       Hardware serial port, physical RX & TX pins.
 | 
			
		||||
//
 | 
			
		||||
// SERIAL_PORT_HARDWARE_OPEN  Hardware serial ports which are open for use.  Their RX & TX
 | 
			
		||||
//                            pins are NOT connected to anything by default.
 | 
			
		||||
#define SERIAL_PORT_MONITOR         Serial
 | 
			
		||||
#define SERIAL_PORT_USBVIRTUAL      SerialUSB
 | 
			
		||||
#define SERIAL_PORT_HARDWARE_OPEN   Serial1
 | 
			
		||||
#define SERIAL_PORT_HARDWARE_OPEN1  Serial2
 | 
			
		||||
#define SERIAL_PORT_HARDWARE_OPEN2  Serial3
 | 
			
		||||
#define SERIAL_PORT_HARDWARE        Serial
 | 
			
		||||
#define SERIAL_PORT_HARDWARE1       Serial1
 | 
			
		||||
#define SERIAL_PORT_HARDWARE2       Serial2
 | 
			
		||||
#define SERIAL_PORT_HARDWARE3       Serial3
 | 
			
		||||
 | 
			
		||||
#endif /* _VARIANT_ARDUINO_DUE_X_ */
 | 
			
		||||
 | 
			
		||||
@@ -576,8 +576,10 @@ build_flags   = ${common.build_flags}
 | 
			
		||||
[common_DUE_archim]
 | 
			
		||||
platform      = atmelsam
 | 
			
		||||
extends       = env:DUE
 | 
			
		||||
board         = archim
 | 
			
		||||
build_flags   = ${common.build_flags}
 | 
			
		||||
  -DARDUINO_SAM_ARCHIM -DARDUINO_ARCH_SAM -D__SAM3X8E__ -DUSBCON
 | 
			
		||||
board_build.variants_dir = buildroot/share/PlatformIO/variants/
 | 
			
		||||
extra_scripts = ${common.extra_scripts}
 | 
			
		||||
  Marlin/src/HAL/DUE/upload_extra_script.py
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user