diff --git a/hardware/arduino/sam/sam.bat b/hardware/arduino/sam/sam.bat index 550f9a642..89cb2f661 100644 --- a/hardware/arduino/sam/sam.bat +++ b/hardware/arduino/sam/sam.bat @@ -1,6 +1,11 @@ +set Path=%ARM_GCC_TOOLCHAIN% +export Path + start "libsam" /d"system\libsam\build_gcc" /max "cd" start "libarduino" /d"cores\sam\build_gcc" /max "cd" start "libvariant sam3s-ek" /d"variants\sam3s_ek\build_gcc" /max "cd" start "libvariant sam3u-ek" /d"variants\sam3u_ek\build_gcc" /max "cd" -start "libvariant Arduino Due" /d"variants\arduino_due\build_gcc" /max "cd" +start "libvariant sam3x-ek" /d"variants\sam3x_ek\build_gcc" /max "cd" +start "libvariant Arduino Due U" /d"variants\arduino_due_u\build_gcc" /max "cd" +start "libvariant Arduino Due X" /d"variants\arduino_due_x\build_gcc" /max "cd" start "test" /d"cores\sam\validation\build_gcc" /max "cd" \ No newline at end of file diff --git a/hardware/arduino/sam/system/libsam/build_gcc/Makefile b/hardware/arduino/sam/system/libsam/build_gcc/Makefile index 2ed7da22b..0ff2be2a8 100644 --- a/hardware/arduino/sam/system/libsam/build_gcc/Makefile +++ b/hardware/arduino/sam/system/libsam/build_gcc/Makefile @@ -8,7 +8,7 @@ # # 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. +# 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 @@ -24,48 +24,87 @@ SUBMAKE_OPTIONS=--no-builtin-rules --no-builtin-variables # Rules #------------------------------------------------------------------------------- -# libsam_sam3s4c_gcc_rel.a libsam_sam3u4e_gcc_rel.a -all: libsam_sam3s4c_gcc_dbg.a libsam_sam3u4e_gcc_dbg.a +# libsam_sam3s4c_gcc_rel.a libsam_sam3u4e_gcc_rel.a libsam_sam3x8e_gcc_rel.a libsam_sam3x8h_gcc_rel.a +all: libsam_sam3s4c_gcc_dbg.a libsam_sam3u4e_gcc_dbg.a libsam_sam3x8e_gcc_dbg.a libsam_sam3x8h_gcc_dbg.a -arduino_due: - @echo --- - @echo --- +arduino_due_u: + @echo --- + @echo --- @echo --- Making $@ - @echo --- + @echo --- @$(MAKE) CHIP=__SAM3U4E__ $(SUBMAKE_OPTIONS) OUTPUT_BIN=../../../variants/arduino_due -f sam3.mk +arduino_due_x: + @echo --- + @echo --- + @echo --- Making $@ + @echo --- + @$(MAKE) CHIP=__SAM3X8E__ $(SUBMAKE_OPTIONS) OUTPUT_BIN=../../../variants/arduino_due -f sam3.mk + .PHONY: libsam_sam3s4c_gcc_dbg.a libsam_sam3s4c_gcc_dbg.a: - @echo --- - @echo --- + @echo --- + @echo --- @echo --- Making $@ - @echo --- + @echo --- @$(MAKE) CHIP=__SAM3S4C__ DEBUG=1 $(SUBMAKE_OPTIONS) -f sam3.mk .PHONY: libsam_sam3s4c_gcc_rel.a libsam_sam3s4c_gcc_rel.a: - @echo --- - @echo --- + @echo --- + @echo --- @echo --- Making $@ - @echo --- + @echo --- @$(MAKE) CHIP=__SAM3S4C__ $(SUBMAKE_OPTIONS) -f sam3.mk .PHONY: libsam_sam3u4e_gcc_dbg.a libsam_sam3u4e_gcc_dbg.a: - @echo --- - @echo --- + @echo --- + @echo --- @echo --- Making $@ - @echo --- + @echo --- @$(MAKE) CHIP=__SAM3U4E__ DEBUG=1 $(SUBMAKE_OPTIONS) -f sam3.mk .PHONY: libsam_sam3u4e_gcc_rel.a libsam_sam3u4e_gcc_rel.a: - @echo --- - @echo --- + @echo --- + @echo --- @echo --- Making $@ - @echo --- + @echo --- @$(MAKE) CHIP=__SAM3U4E__ $(SUBMAKE_OPTIONS) -f sam3.mk +.PHONY: libsam_sam3x8e_gcc_dbg.a +libsam_sam3x8e_gcc_dbg.a: + @echo --- + @echo --- + @echo --- Making $@ + @echo --- + @$(MAKE) CHIP=__SAM3X8E__ DEBUG=1 $(SUBMAKE_OPTIONS) -f sam3.mk + +.PHONY: libsam_sam3x8e_gcc_rel.a +libsam_sam3x8e_gcc_rel.a: + @echo --- + @echo --- + @echo --- Making $@ + @echo --- + @$(MAKE) CHIP=__SAM3X8E__ $(SUBMAKE_OPTIONS) -f sam3.mk + +.PHONY: libsam_sam3x8h_gcc_dbg.a +libsam_sam3x8h_gcc_dbg.a: + @echo --- + @echo --- + @echo --- Making $@ + @echo --- + @$(MAKE) CHIP=__SAM3X8H__ DEBUG=1 $(SUBMAKE_OPTIONS) -f sam3.mk + +.PHONY: libsam_sam3x8h_gcc_rel.a +libsam_sam3x8h_gcc_rel.a: + @echo --- + @echo --- + @echo --- Making $@ + @echo --- + @$(MAKE) CHIP=__SAM3X8H__ $(SUBMAKE_OPTIONS) -f sam3.mk + .PHONY: clean clean: @echo --- Cleaning sam3s4c release and debug @@ -76,4 +115,12 @@ clean: @$(MAKE) CHIP=__SAM3U4E__ $(SUBMAKE_OPTIONS) -f sam3.mk $@ @$(MAKE) CHIP=__SAM3U4E__ DEBUG=1 $(SUBMAKE_OPTIONS) -f sam3.mk $@ + @echo --- Cleaning sam3x8e release and debug + @$(MAKE) CHIP=__SAM3X8E__ $(SUBMAKE_OPTIONS) -f sam3.mk $@ + @$(MAKE) CHIP=__SAM3X8E__ DEBUG=1 $(SUBMAKE_OPTIONS) -f sam3.mk $@ + + @echo --- Cleaning sam3x8h release and debug + @$(MAKE) CHIP=__SAM3X8H__ $(SUBMAKE_OPTIONS) -f sam3.mk $@ + @$(MAKE) CHIP=__SAM3X8H__ DEBUG=1 $(SUBMAKE_OPTIONS) -f sam3.mk $@ + diff --git a/hardware/arduino/sam/system/libsam/build_gcc/sam3.mk b/hardware/arduino/sam/system/libsam/build_gcc/sam3.mk index 6e9c4fb51..39fee6916 100644 --- a/hardware/arduino/sam/system/libsam/build_gcc/sam3.mk +++ b/hardware/arduino/sam/system/libsam/build_gcc/sam3.mk @@ -8,7 +8,7 @@ # # 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. +# 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 @@ -51,6 +51,9 @@ CHIP_SERIE=sam3u else ifeq ($(CHIP), __SAM3N4C__) CHIP_NAME=sam3n4c CHIP_SERIE=sam3n +else ifeq ($(CHIP), __SAM3X8E__) +CHIP_NAME=sam3x8e +CHIP_SERIE=sam3xa else ifeq ($(CHIP), __SAM3X8H__) CHIP_NAME=sam3x8h CHIP_SERIE=sam3xa @@ -112,7 +115,7 @@ C_SRC+=$(wildcard $(CMSIS_CHIP_PATH)/source/templates/gcc/*.c) C_OBJ_TEMP=$(patsubst %.c, %.o, $(notdir $(C_SRC))) # during development, remove some files -C_OBJ_FILTER=pio_it.o adc.o +C_OBJ_FILTER= C_OBJ=$(filter-out $(C_OBJ_FILTER), $(C_OBJ_TEMP)) diff --git a/hardware/arduino/sam/system/libsam/include/pwmc.h b/hardware/arduino/sam/system/libsam/include/pwmc.h index 4ec6b7883..b33568b9d 100644 --- a/hardware/arduino/sam/system/libsam/include/pwmc.h +++ b/hardware/arduino/sam/system/libsam/include/pwmc.h @@ -1,5 +1,5 @@ /* ---------------------------------------------------------------------------- - * SAM Software Package License + * SAM Software Package License * ---------------------------------------------------------------------------- * Copyright (c) 2011, Atmel Corporation * @@ -73,51 +73,33 @@ * Exported functions *----------------------------------------------------------------------------*/ -extern void PWMC_ConfigureChannel( - Pwm* pPwm, - uint8_t channel, - uint32_t prescaler, - uint32_t alignment, - uint32_t polarity); -extern void PWMC_ConfigureChannelExt( - Pwm* pPwm, - uint8_t channel, - uint32_t prescaler, - uint32_t alignment, - uint32_t polarity, - uint32_t countEventSelect, - uint32_t DTEnable, - uint32_t DTHInverte, - uint32_t DTLInverte); -extern void PWMC_ConfigureClocks(uint32_t clka, uint32_t clkb, uint32_t mck); -extern void PWMC_SetPeriod( Pwm* pPwm, uint8_t channel, uint16_t period); -extern void PWMC_SetDutyCycle( Pwm* pPwm, uint8_t channel, uint16_t duty); -extern void PWMC_SetDeadTime( Pwm* pPwm, uint8_t channel, uint16_t timeH, uint16_t timeL); -extern void PWMC_ConfigureSyncChannel( Pwm* pPwm, - uint32_t channels, - uint32_t updateMode, - uint32_t requestMode, - uint32_t requestComparisonSelect); -extern void PWMC_SetSyncChannelUpdatePeriod( Pwm* pPwm, uint8_t period); -extern void PWMC_SetSyncChannelUpdateUnlock( Pwm* pPwm ); -extern void PWMC_EnableChannel( Pwm* pPwm, uint8_t channel); -extern void PWMC_DisableChannel( Pwm* pPwm, uint8_t channel); -extern void PWMC_EnableChannelIt( Pwm* pPwm, uint8_t channel); -extern void PWMC_DisableChannelIt( Pwm* pPwm, uint8_t channel); -extern void PWMC_EnableIt( Pwm* pPwm, uint32_t sources1, uint32_t sources2); -extern void PWMC_DisableIt( Pwm* pPwm, uint32_t sources1, uint32_t sources2); -extern uint8_t PWMC_WriteBuffer(Pwm *pwmc, - void *buffer, - uint32_t length); -extern void PWMC_SetOverrideValue( Pwm* pPwm, uint32_t value); -extern void PWMC_EnableOverrideOutput( Pwm* pPwm, uint32_t value, uint32_t sync); -extern void PWMC_DisableOverrideOutput( Pwm* pPwm, uint32_t value, uint32_t sync); -extern void PWMC_SetFaultMode( Pwm* pPwm, uint32_t mode); -extern void PWMC_FaultClear( Pwm* pPwm, uint32_t fault); -extern void PWMC_SetFaultProtectionValue( Pwm* pPwm, uint32_t value); -extern void PWMC_EnableFaultProtection( Pwm* pPwm, uint32_t value); -extern void PWMC_ConfigureComparisonUnit( Pwm* pPwm, uint32_t x, uint32_t value, uint32_t mode); -extern void PWMC_ConfigureEventLineMode( Pwm* pPwm, uint32_t x, uint32_t mode); +extern void PWMC_ConfigureChannel( Pwm* pPwm, uint32_t ul_channel, uint32_t prescaler, uint32_t alignment, uint32_t polarity ) ; +extern void PWMC_ConfigureChannelExt( Pwm* pPwm, uint32_t ul_channel, uint32_t prescaler, uint32_t alignment, uint32_t polarity, + uint32_t countEventSelect, uint32_t DTEnable, uint32_t DTHInverte, uint32_t DTLInverte ) ; + +extern void PWMC_ConfigureClocks(uint32_t clka, uint32_t clkb, uint32_t mck ) ; +extern void PWMC_SetPeriod( Pwm* pPwm, uint32_t ul_channel, uint16_t period ) ; +extern void PWMC_SetDutyCycle( Pwm* pPwm, uint32_t ul_channel, uint16_t duty ) ; +extern void PWMC_SetDeadTime( Pwm* pPwm, uint32_t ul_channel, uint16_t timeH, uint16_t timeL ) ; +extern void PWMC_ConfigureSyncChannel( Pwm* pPwm, uint32_t ul_channels, uint32_t updateMode, uint32_t requestMode, uint32_t requestComparisonSelect ) ; +extern void PWMC_SetSyncChannelUpdatePeriod( Pwm* pPwm, uint8_t period ) ; +extern void PWMC_SetSyncChannelUpdateUnlock( Pwm* pPwm ) ; +extern void PWMC_EnableChannel( Pwm* pPwm, uint32_t ul_channel ) ; +extern void PWMC_DisableChannel( Pwm* pPwm, uint32_t ul_channel ) ; +extern void PWMC_EnableChannelIt( Pwm* pPwm, uint32_t ul_channel ) ; +extern void PWMC_DisableChannelIt( Pwm* pPwm, uint32_t ul_channel ) ; +extern void PWMC_EnableIt( Pwm* pPwm, uint32_t sources1, uint32_t sources2 ) ; +extern void PWMC_DisableIt( Pwm* pPwm, uint32_t sources1, uint32_t sources2 ) ; +extern uint8_t PWMC_WriteBuffer(Pwm *pwmc, void *buffer, uint32_t length ) ; +extern void PWMC_SetOverrideValue( Pwm* pPwm, uint32_t value ) ; +extern void PWMC_EnableOverrideOutput( Pwm* pPwm, uint32_t value, uint32_t sync ) ; +extern void PWMC_DisableOverrideOutput( Pwm* pPwm, uint32_t value, uint32_t sync ) ; +extern void PWMC_SetFaultMode( Pwm* pPwm, uint32_t mode ) ; +extern void PWMC_FaultClear( Pwm* pPwm, uint32_t fault ) ; +extern void PWMC_SetFaultProtectionValue( Pwm* pPwm, uint32_t value ) ; +extern void PWMC_EnableFaultProtection( Pwm* pPwm, uint32_t ul_channel, uint32_t value ) ; +extern void PWMC_ConfigureComparisonUnit( Pwm* pPwm, uint32_t x, uint32_t value, uint32_t mode ) ; +extern void PWMC_ConfigureEventLineMode( Pwm* pPwm, uint32_t x, uint32_t mode ) ; #ifdef __cplusplus } diff --git a/hardware/arduino/sam/system/libsam/include/sam.h b/hardware/arduino/sam/system/libsam/include/sam.h index 429bb71b7..4ad9e4395 100644 --- a/hardware/arduino/sam/system/libsam/include/sam.h +++ b/hardware/arduino/sam/system/libsam/include/sam.h @@ -85,22 +85,13 @@ part_is_defined( SAM3N4B ) || \ part_is_defined( SAM3N4C ) ) -#define SAM3X2 ( \ - part_is_defined( SAM3X2C ) || \ - part_is_defined( SAM3X2E ) || \ - part_is_defined( SAM3X2G ) || \ - part_is_defined( SAM3X2H ) ) - #define SAM3X4 ( \ part_is_defined( SAM3X4C ) || \ - part_is_defined( SAM3X4E ) || \ - part_is_defined( SAM3X4G ) || \ - part_is_defined( SAM3X4H ) ) + part_is_defined( SAM3X4E ) ) #define SAM3X8 ( \ part_is_defined( SAM3X8C ) || \ - part_is_defined( SAM3X8E ) || \ - part_is_defined( SAM3X8G ) || \ + part_is_defined( SAM3X8E ) || \ part_is_defined( SAM3X8H ) ) #define SAM3A2 ( \ @@ -122,7 +113,7 @@ #define SAM3N (SAM3N1 || SAM3N2 || SAM3N4) /* Entire SAM3XA Family */ -#define SAM3XA (SAM3X2 || SAM3X4 || SAM3X8 || SAM3A2 || SAM3A4 || SAM3A8) +#define SAM3XA ( SAM3X4 || SAM3X8 || SAM3A2 || SAM3A4 || SAM3A8) /* SAM9 family */ diff --git a/hardware/arduino/sam/system/libsam/include/sam3.h b/hardware/arduino/sam/system/libsam/include/sam3.h index 4320a9abc..128e1f413 100644 --- a/hardware/arduino/sam/system/libsam/include/sam3.h +++ b/hardware/arduino/sam/system/libsam/include/sam3.h @@ -1,7 +1,7 @@ /* ---------------------------------------------------------------------------- * SAM Software Package License * ---------------------------------------------------------------------------- - * Copyright (c) 2011, Atmel Corporation + * Copyright (c) 2012, Atmel Corporation * * All rights reserved. * @@ -77,25 +77,32 @@ #include "cmsis/sam3n/include/sam3n.h" #include "cmsis/sam3n/source/templates/system_sam3n.h" #include "cmsis/sam3n/source/templates/exceptions.h" +#elif (defined __SAM3N0C__) || (defined __SAM3N0B__) || (defined __SAM3N0A__) /* SAM3N0 */ + #include "cmsis/sam3n/include/sam3n.h" + #include "cmsis/sam3n/source/templates/system_sam3n.h" + #include "cmsis/sam3n/source/templates/exceptions.h" +#elif (defined __SAM3N00B__) || (defined __SAM3N00A__) /* SAM3N00 */ + #include "cmsis/sam3n/include/sam3n.h" + #include "cmsis/sam3n/source/templates/system_sam3n.h" + #include "cmsis/sam3n/source/templates/exceptions.h" #elif (defined __SAM3A8C__) || (defined __SAM3A4C__) || (defined __SAM3A2C__) /* SAM3A */ #include "cmsis/sam3xa/include/sam3xa.h" #include "cmsis/sam3xa/source/templates/system_sam3xa.h" #include "cmsis/sam3xa/source/templates/exceptions.h" -#elif (defined __SAM3X8C__) || (defined __SAM3X8E__) || (defined __SAM3X8G__) || (defined __SAM3X8H__) /* SAM3X8 */ +#elif (defined __SAM3X8C__) || (defined __SAM3X8E__) || (defined __SAM3X8H__) /* SAM3X8 */ #include "cmsis/sam3xa/include/sam3xa.h" #include "cmsis/sam3xa/source/templates/system_sam3xa.h" #include "cmsis/sam3xa/source/templates/exceptions.h" -#elif (defined __SAM3X4C__) || (defined __SAM3X4E__) || (defined __SAM3X4G__) || (defined __SAM3X4H__) /* SAM3X4 */ +#elif (defined __SAM3X4C__) || (defined __SAM3X4E__) /* SAM3X4 */ #include "cmsis/sam3xa/include/sam3xa.h" #include "cmsis/sam3xa/source/templates/system_sam3xa.h" #include "cmsis/sam3xa/source/templates/exceptions.h" -#elif (defined __SAM3X2C__) || (defined __SAM3X2E__) || (defined __SAM3X2G__) || (defined __SAM3X2H__) /* SAM3X2 */ +#elif (defined __SAM3A4C__) || (defined __SAM3A8C__) /* SAM3A */ #include "cmsis/sam3xa/include/sam3xa.h" #include "cmsis/sam3xa/source/templates/system_sam3xa.h" #include "cmsis/sam3xa/source/templates/exceptions.h" - #else #error Library does not support the specified device. #endif diff --git a/hardware/arduino/sam/system/libsam/source/pwmc.c b/hardware/arduino/sam/system/libsam/source/pwmc.c index 6b6a3fc11..00adf90c1 100644 --- a/hardware/arduino/sam/system/libsam/source/pwmc.c +++ b/hardware/arduino/sam/system/libsam/source/pwmc.c @@ -1,5 +1,5 @@ /* ---------------------------------------------------------------------------- - * SAM Software Package License + * SAM Software Package License * ---------------------------------------------------------------------------- * Copyright (c) 2011, Atmel Corporation * @@ -34,14 +34,14 @@ * The PWM macrocell controls square output waveforms of 4 channels. * Characteristics of output waveforms such as period, duty-cycle, * dead-time can be configured.\n - * Some of PWM channels can be linked together as synchronous channel and + * Some of PWM channels can be linked together as synchronous ul_channel and * duty-cycle of synchronous channels can be updated by PDC automaticly. * * Before enabling the channels, they must have been configured first. * The main settings include: *