diff --git a/hardware/arduino/sam/boards.txt b/hardware/arduino/sam/boards.txt index f66b4fa5b..1e3a5b985 100644 --- a/hardware/arduino/sam/boards.txt +++ b/hardware/arduino/sam/boards.txt @@ -1,39 +1,13 @@ ############################################################## -sam3s_ek.name=Atmel SAM3S-EK -sam3s_ek.upload.protocol=sam-ba -sam3s_ek.upload.maximum_size=49152 -sam3s_ek.upload.speed=115200 -sam3s_ek.bootloader.path=sam3s_boot -sam3s_ek.bootloader.file=sam3s_boot.bin -sam3s_ek.build.mcu=cortex-m3 -sam3s_ek.build.f_cpu=64000000L -sam3s_ek.build.core=sam -sam3s_ek.build.pins=sam3s_ek - -############################################################## - -sam3u_ek.name=Atmel SAM3U-EK -sam3u_ek.upload.protocol=sam-ba -sam3u_ek.upload.maximum_size=49152 -sam3u_ek.upload.speed=115200 -sam3u_ek.bootloader.path=sam3u_boot -sam3u_ek.bootloader.file=sam3u_boot.bin -sam3u_ek.build.mcu=cortex-m3 -sam3u_ek.build.f_cpu=96000000L -sam3u_ek.build.core=sam -sam3u_ek.build.pins=sam3u_ek - -############################################################## - arduino_due_u.name=Arduino DueU Dev. Ed. arduino_due_u.upload.tool=bossac arduino_due_u.upload.protocol=sam-ba arduino_due_u.upload.maximum_size=49152 arduino_due_u.build.mcu=cortex-m3 -arduino_due_u.build.f_cpu=96000000L +arduino_due_u.build.f_cpu=84000000L arduino_due_u.build.core=sam -arduino_due_u.build.extra_flags=-D__SAM3U4E__ +arduino_due_u.build.extra_flags=-D__SAM3U4E__ -mthumb arduino_due_u.build.ldscript=linker_scripts/gcc/flash.ld arduino_due_u.build.variant=arduino_due_u arduino_due_u.build.variant_system_lib=libsam_sam3u4e_gcc_rel.a @@ -47,7 +21,7 @@ arduino_due_x.upload.maximum_size=49152 arduino_due_x.build.mcu=cortex-m3 arduino_due_x.build.f_cpu=96000000L arduino_due_x.build.core=sam -arduino_due_x.build.extra_flags=-D__SAM3X8E__ +arduino_due_x.build.extra_flags=-D__SAM3X8E__ -mthumb arduino_due_x.build.ldscript=linker_scripts/gcc/flash.ld arduino_due_x.build.variant=arduino_due_x arduino_due_x.build.variant_system_lib=libsam_sam3x8e_gcc_rel.a diff --git a/hardware/arduino/sam/platform.txt b/hardware/arduino/sam/platform.txt index 67be7739d..6f72ada2d 100644 --- a/hardware/arduino/sam/platform.txt +++ b/hardware/arduino/sam/platform.txt @@ -5,12 +5,12 @@ name=Atmel SAM3 compiler.path={runtime.ide.path}/hardware/tools/g++_arm_none_eabi/bin/ compiler.c.cmd=arm-none-eabi-gcc -compiler.c.flags=-c -g -Os -w -mthumb -mlong-calls -ffunction-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf +compiler.c.flags=-c -g -Os -w -mlong-calls -ffunction-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf compiler.c.elf.cmd=arm-none-eabi-gcc compiler.c.elf.flags=-Os -Wl,--gc-sections compiler.S.flags=-c -g -assembler-with-cpp compiler.cpp.cmd=arm-none-eabi-g++ -compiler.cpp.flags=-c -g -Os -w -mthumb -mlong-calls -ffunction-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf +compiler.cpp.flags=-c -g -Os -w -mlong-calls -ffunction-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf compiler.ar.cmd=arm-none-eabi-ar compiler.ar.flags=rcs compiler.objcopy.cmd=arm-none-eabi-objcopy diff --git a/hardware/arduino/sam/sam.bat b/hardware/arduino/sam/sam.bat index 89cb2f661..dce7ca12c 100644 --- a/hardware/arduino/sam/sam.bat +++ b/hardware/arduino/sam/sam.bat @@ -3,9 +3,6 @@ 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 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/variants/sam3u_ek/variant.cpp b/hardware/arduino/sam/variants/sam3u_ek/variant.cpp deleted file mode 100644 index 74e4683b4..000000000 --- a/hardware/arduino/sam/variants/sam3u_ek/variant.cpp +++ /dev/null @@ -1,201 +0,0 @@ -/* - 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" - -/* - * 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, NO_PWM, NO_TC }, // URXD - { PIOA, PIO_PA9A_UTXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // UTXD - // LEDS, 0..2 - { PIOB, PIO_PB0, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT }, // LED BLUE - { PIOB, PIO_PB1, ID_PIOB, PIO_OUTPUT_1, PIO_DEFAULT }, // LED GREEN - { PIOB, PIO_PB2, ID_PIOB, PIO_OUTPUT_1, PIO_DEFAULT }, // LED RED - - // USB, 3..3 - { PIOA, PIO_PA0, ID_PIOA, PIO_INPUT, PIO_PULLUP }, // USB_VBUS - - // UART (Serial), 4..6 - { PIOA, PIO_PA11A_URXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // URXD - { PIOA, PIO_PA12A_UTXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // UTXD - { PIOA, PIO_PA11A_URXD|PIO_PA12A_UTXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // All UART pins - - // Push buttons, 7..8 - { PIOA, PIO_PA18, ID_PIOA, PIO_INPUT, PIO_PULLUP | PIO_DEGLITCH }, // PB_LEFT - { PIOA, PIO_PA19, ID_PIOA, PIO_INPUT, PIO_PULLUP | PIO_DEGLITCH }, // PB_RIGHT - - // MCI (SDCARD), 9..19 - { PIOA, PIO_PA25, ID_PIOA, PIO_INPUT, PIO_PULLUP }, // MCI Card Detect - { PIOA, PIO_PA5A_MCDA0, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP }, // MCDA0 - { PIOA, PIO_PA6A_MCDA1, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP }, // MCDA1 - { PIOA, PIO_PA7A_MCDA2, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP }, // MCDA2 - { PIOA, PIO_PA8A_MCDA3, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP }, // MCDA3 - { PIOC, PIO_PC28B_MCDA4, ID_PIOC, PIO_PERIPH_B, PIO_PULLUP }, // MCDA4 - { PIOC, PIO_PC29B_MCDA5, ID_PIOC, PIO_PERIPH_B, PIO_PULLUP }, // MCDA5 - { PIOC, PIO_PC30B_MCDA6, ID_PIOC, PIO_PERIPH_B, PIO_PULLUP }, // MCDA6 - { PIOC, PIO_PC31B_MCDA7, ID_PIOC, PIO_PERIPH_B, PIO_PULLUP }, // MCDA7 - { PIOA, PIO_PA4A_MCCDA, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP }, // MCCDA - { PIOA, PIO_PA3A_MCCK, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP }, // MCCK - - // SPI, 20..23 - { PIOA, PIO_PA13A_MISO, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // MISO - { PIOA, PIO_PA14A_MOSI, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // MOSI - { PIOA, PIO_PA15A_SPCK, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // SPCK - { PIOC, PIO_PC14B_NPCS2, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT }, // NPCS2 - - // TouchScreen, 24..25 - { PIOA, PIO_PA24, ID_PIOA, PIO_INPUT, PIO_PULLUP }, // IRQ_TSC - { PIOA, PIO_PA2, ID_PIOA, PIO_INPUT, PIO_PULLUP }, // BUSY_TSC - - // USART1, 26..29 - { PIOA, PIO_PA21A_RXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // RXD1 - { PIOA, PIO_PA20A_TXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // TXD1 - { PIOA, PIO_PA22B_RTS1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // RTS1 - { PIOA, PIO_PA23B_CTS1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // CTS1 - - // LCD, 30..47 - { PIOB, 0xFE01FE00, ID_PIOB, PIO_PERIPH_A, PIO_PULLUP }, // EBI Data bus PB9-16 PB25-31 - { PIOB, PIO_PB23A_NWE, ID_PIOB, PIO_PERIPH_A, PIO_PULLUP }, // EBI_NWE - { PIOB, PIO_PB19A_NRD, ID_PIOB, PIO_PERIPH_A, PIO_PULLUP }, // EBI_NRD - { PIOC, PIO_PC16A_NCS2, ID_PIOC, PIO_PERIPH_A, PIO_PULLUP }, // LCD CS - { PIOB, PIO_PB8, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT }, // LCD RS - { PIOC, PIO_PC19, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT }, // LCD BackLight - - // 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, NO_PWM, NO_TC }, - // 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, NO_PWM, NO_TC }, - // 82 - USART0 (Serial2) 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, NO_PWM, NO_TC }, - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT } // END -} ; - -/* - * UART objects - */ -RingBuffer rx_buffer1 ; - -UARTClass Serial( UART, UART_IRQn, ID_UART, &rx_buffer1 ) ; - -// IT handlers -void UART_Handler(void) -{ - Serial.IrqHandler() ; -} - -// ---------------------------------------------------------------------------- -/* - * USART objects - */ -RingBuffer rx_buffer2 ; -RingBuffer rx_buffer3 ; - -USARTClass Serial2( USART0, USART0_IRQn, ID_USART0, &rx_buffer2 ) ; -USARTClass Serial3( USART1, USART1_IRQn, ID_USART1, &rx_buffer3 ) ; - -// IT handlers -void USART0_Handler( void ) -{ - Serial2.IrqHandler() ; -} - -void USART1_Handler( void ) -{ - Serial3.IrqHandler() ; -} - -// ---------------------------------------------------------------------------- - -#ifdef __cplusplus -extern "C" { -#endif - -// Should be made in a better way... -extern void analogOutputInit(void); - -/** - * - */ -extern void init( void ) -{ - SystemInit() ; - - // Set Systick to 1ms interval, common to all SAM3 variants - if ( SysTick_Config( SystemCoreClock / 1000 ) ) - { - // Capture error - while ( 1 ) ; - } - - // Disable watchdog, common to all SAM variants - WDT_Disable( WDT ) ; - - // Initialize Serial port UART, common to all SAM3 variants - PIO_Configure( - g_APinDescription[PINS_UART].pPort, - g_APinDescription[PINS_UART].ulPinType, - g_APinDescription[PINS_UART].ulPin, - g_APinDescription[PINS_UART].ulPinConfiguration); - - // Initialize Serial ports USART - 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); - - // Switch off Power LED - PIO_Configure( g_APinDescription[PIN_LED_RED].pPort, g_APinDescription[PIN_LED_RED].ulPinType, - g_APinDescription[PIN_LED_RED].ulPin, g_APinDescription[PIN_LED_RED].ulPinConfiguration ) ; - PIO_Clear( g_APinDescription[PIN_LED_RED].pPort, g_APinDescription[PIN_LED_RED].ulPin ) ; - - // Initialize 10bit Analog Controller - PMC_EnablePeripheral( ID_ADC ) ; - adc_init( ADC, SystemCoreClock, ADC_FREQ_MAX, ADC_STARTUP ) ; - adc_configure_timing( ADC, 15 ) ; - adc_configure_trigger( ADC, ADC_TRIG_SW ) ; - adc_disable_interrupt( ADC, 0xFFFFFFFF ) ; /* Disable all adc interrupt. */ - adc_disable_channel( ADC, ADC_ALL_CHANNEL ) ; - - // Initialize 12bit Analog Controller - PMC_EnablePeripheral( ID_ADC12B ) ; - adc12_init( ADC12B, SystemCoreClock, ADC12_FREQ_MAX, ADC12_STARTUP_FAST, 1 ) ; - adc12_configure_timing( ADC12B, 15 ) ; - adc12_configure_trigger( ADC12B, ADC_TRIG_SW ) ; - adc12_disable_interrupt( ADC12B, 0xFFFFFFFF ) ; /* Disable all adc interrupt. */ - adc12_disable_channel( ADC12B, ADC_ALL_CHANNEL ) ; - - // Initialize analogOutput module - analogOutputInit(); -} -#ifdef __cplusplus -} -#endif - diff --git a/hardware/arduino/sam/variants/sam3s_ek/SAM3S-EK_REVB.pdf b/hardware/atmel/sam/variants/sam3s_ek/SAM3S-EK_REVB.pdf similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/SAM3S-EK_REVB.pdf rename to hardware/atmel/sam/variants/sam3s_ek/SAM3S-EK_REVB.pdf diff --git a/hardware/arduino/sam/variants/sam3s_ek/build_gcc/Makefile b/hardware/atmel/sam/variants/sam3s_ek/build_gcc/Makefile similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/build_gcc/Makefile rename to hardware/atmel/sam/variants/sam3s_ek/build_gcc/Makefile diff --git a/hardware/arduino/sam/variants/sam3s_ek/build_gcc/debug.mk b/hardware/atmel/sam/variants/sam3s_ek/build_gcc/debug.mk similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/build_gcc/debug.mk rename to hardware/atmel/sam/variants/sam3s_ek/build_gcc/debug.mk diff --git a/hardware/arduino/sam/variants/sam3s_ek/build_gcc/gcc.mk b/hardware/atmel/sam/variants/sam3s_ek/build_gcc/gcc.mk similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/build_gcc/gcc.mk rename to hardware/atmel/sam/variants/sam3s_ek/build_gcc/gcc.mk diff --git a/hardware/arduino/sam/variants/sam3s_ek/build_gcc/libvariant_sam3s_ek.mk b/hardware/atmel/sam/variants/sam3s_ek/build_gcc/libvariant_sam3s_ek.mk similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/build_gcc/libvariant_sam3s_ek.mk rename to hardware/atmel/sam/variants/sam3s_ek/build_gcc/libvariant_sam3s_ek.mk diff --git a/hardware/arduino/sam/variants/sam3s_ek/build_gcc/release.mk b/hardware/atmel/sam/variants/sam3s_ek/build_gcc/release.mk similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/build_gcc/release.mk rename to hardware/atmel/sam/variants/sam3s_ek/build_gcc/release.mk diff --git a/hardware/arduino/sam/variants/sam3s_ek/build_iar/libvariant_sam3s_ek.ewd b/hardware/atmel/sam/variants/sam3s_ek/build_iar/libvariant_sam3s_ek.ewd similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/build_iar/libvariant_sam3s_ek.ewd rename to hardware/atmel/sam/variants/sam3s_ek/build_iar/libvariant_sam3s_ek.ewd diff --git a/hardware/arduino/sam/variants/sam3s_ek/build_iar/libvariant_sam3s_ek.ewp b/hardware/atmel/sam/variants/sam3s_ek/build_iar/libvariant_sam3s_ek.ewp similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/build_iar/libvariant_sam3s_ek.ewp rename to hardware/atmel/sam/variants/sam3s_ek/build_iar/libvariant_sam3s_ek.ewp diff --git a/hardware/arduino/sam/variants/sam3s_ek/debug_scripts/gcc/sam3s_ek_flash.gdb b/hardware/atmel/sam/variants/sam3s_ek/debug_scripts/gcc/sam3s_ek_flash.gdb similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/debug_scripts/gcc/sam3s_ek_flash.gdb rename to hardware/atmel/sam/variants/sam3s_ek/debug_scripts/gcc/sam3s_ek_flash.gdb diff --git a/hardware/arduino/sam/variants/sam3s_ek/debug_scripts/gcc/sam3s_ek_sram.gdb b/hardware/atmel/sam/variants/sam3s_ek/debug_scripts/gcc/sam3s_ek_sram.gdb similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/debug_scripts/gcc/sam3s_ek_sram.gdb rename to hardware/atmel/sam/variants/sam3s_ek/debug_scripts/gcc/sam3s_ek_sram.gdb diff --git a/hardware/arduino/sam/variants/sam3s_ek/debug_scripts/iar/sam3s_ek_flash.mac b/hardware/atmel/sam/variants/sam3s_ek/debug_scripts/iar/sam3s_ek_flash.mac similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/debug_scripts/iar/sam3s_ek_flash.mac rename to hardware/atmel/sam/variants/sam3s_ek/debug_scripts/iar/sam3s_ek_flash.mac diff --git a/hardware/arduino/sam/variants/sam3s_ek/debug_scripts/iar/sam3s_ek_sram.mac b/hardware/atmel/sam/variants/sam3s_ek/debug_scripts/iar/sam3s_ek_sram.mac similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/debug_scripts/iar/sam3s_ek_sram.mac rename to hardware/atmel/sam/variants/sam3s_ek/debug_scripts/iar/sam3s_ek_sram.mac diff --git a/hardware/arduino/sam/variants/sam3s_ek/linker_scripts/README.txt b/hardware/atmel/sam/variants/sam3s_ek/linker_scripts/README.txt similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/linker_scripts/README.txt rename to hardware/atmel/sam/variants/sam3s_ek/linker_scripts/README.txt diff --git a/hardware/arduino/sam/variants/sam3s_ek/linker_scripts/gcc/flash.ld b/hardware/atmel/sam/variants/sam3s_ek/linker_scripts/gcc/flash.ld similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/linker_scripts/gcc/flash.ld rename to hardware/atmel/sam/variants/sam3s_ek/linker_scripts/gcc/flash.ld diff --git a/hardware/arduino/sam/variants/sam3s_ek/linker_scripts/gcc/flash_arduino.ld b/hardware/atmel/sam/variants/sam3s_ek/linker_scripts/gcc/flash_arduino.ld similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/linker_scripts/gcc/flash_arduino.ld rename to hardware/atmel/sam/variants/sam3s_ek/linker_scripts/gcc/flash_arduino.ld diff --git a/hardware/arduino/sam/variants/sam3s_ek/linker_scripts/gcc/flash_arduino_bootloader.ld b/hardware/atmel/sam/variants/sam3s_ek/linker_scripts/gcc/flash_arduino_bootloader.ld similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/linker_scripts/gcc/flash_arduino_bootloader.ld rename to hardware/atmel/sam/variants/sam3s_ek/linker_scripts/gcc/flash_arduino_bootloader.ld diff --git a/hardware/arduino/sam/variants/sam3s_ek/linker_scripts/gcc/sram.ld b/hardware/atmel/sam/variants/sam3s_ek/linker_scripts/gcc/sram.ld similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/linker_scripts/gcc/sram.ld rename to hardware/atmel/sam/variants/sam3s_ek/linker_scripts/gcc/sram.ld diff --git a/hardware/arduino/sam/variants/sam3s_ek/linker_scripts/iar/sam3s_ek_flash.icf b/hardware/atmel/sam/variants/sam3s_ek/linker_scripts/iar/sam3s_ek_flash.icf similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/linker_scripts/iar/sam3s_ek_flash.icf rename to hardware/atmel/sam/variants/sam3s_ek/linker_scripts/iar/sam3s_ek_flash.icf diff --git a/hardware/arduino/sam/variants/sam3s_ek/linker_scripts/iar/sam3s_ek_sram.icf b/hardware/atmel/sam/variants/sam3s_ek/linker_scripts/iar/sam3s_ek_sram.icf similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/linker_scripts/iar/sam3s_ek_sram.icf rename to hardware/atmel/sam/variants/sam3s_ek/linker_scripts/iar/sam3s_ek_sram.icf diff --git a/hardware/arduino/sam/variants/sam3s_ek/variant.cpp b/hardware/atmel/sam/variants/sam3s_ek/variant.cpp similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/variant.cpp rename to hardware/atmel/sam/variants/sam3s_ek/variant.cpp diff --git a/hardware/arduino/sam/variants/sam3s_ek/variant.h b/hardware/atmel/sam/variants/sam3s_ek/variant.h similarity index 100% rename from hardware/arduino/sam/variants/sam3s_ek/variant.h rename to hardware/atmel/sam/variants/sam3s_ek/variant.h diff --git a/hardware/arduino/sam/variants/sam3u_ek/SAM3U-EK_REVC.pdf b/hardware/atmel/sam/variants/sam3u_ek/SAM3U-EK_REVC.pdf similarity index 100% rename from hardware/arduino/sam/variants/sam3u_ek/SAM3U-EK_REVC.pdf rename to hardware/atmel/sam/variants/sam3u_ek/SAM3U-EK_REVC.pdf diff --git a/hardware/arduino/sam/variants/sam3u_ek/build_gcc/Makefile b/hardware/atmel/sam/variants/sam3u_ek/build_gcc/Makefile similarity index 100% rename from hardware/arduino/sam/variants/sam3u_ek/build_gcc/Makefile rename to hardware/atmel/sam/variants/sam3u_ek/build_gcc/Makefile diff --git a/hardware/arduino/sam/variants/sam3u_ek/build_gcc/debug.mk b/hardware/atmel/sam/variants/sam3u_ek/build_gcc/debug.mk similarity index 100% rename from hardware/arduino/sam/variants/sam3u_ek/build_gcc/debug.mk rename to hardware/atmel/sam/variants/sam3u_ek/build_gcc/debug.mk diff --git a/hardware/atmel/sam/variants/sam3u_ek/build_gcc/debug_sam3u_ek/variant.o b/hardware/atmel/sam/variants/sam3u_ek/build_gcc/debug_sam3u_ek/variant.o new file mode 100644 index 000000000..e44ae2dd1 Binary files /dev/null and b/hardware/atmel/sam/variants/sam3u_ek/build_gcc/debug_sam3u_ek/variant.o differ diff --git a/hardware/arduino/sam/variants/sam3u_ek/build_gcc/gcc.mk b/hardware/atmel/sam/variants/sam3u_ek/build_gcc/gcc.mk similarity index 100% rename from hardware/arduino/sam/variants/sam3u_ek/build_gcc/gcc.mk rename to hardware/atmel/sam/variants/sam3u_ek/build_gcc/gcc.mk diff --git a/hardware/arduino/sam/variants/sam3u_ek/build_gcc/libvariant_sam3u_ek.mk b/hardware/atmel/sam/variants/sam3u_ek/build_gcc/libvariant_sam3u_ek.mk similarity index 100% rename from hardware/arduino/sam/variants/sam3u_ek/build_gcc/libvariant_sam3u_ek.mk rename to hardware/atmel/sam/variants/sam3u_ek/build_gcc/libvariant_sam3u_ek.mk diff --git a/hardware/arduino/sam/variants/sam3u_ek/build_gcc/release.mk b/hardware/atmel/sam/variants/sam3u_ek/build_gcc/release.mk similarity index 100% rename from hardware/arduino/sam/variants/sam3u_ek/build_gcc/release.mk rename to hardware/atmel/sam/variants/sam3u_ek/build_gcc/release.mk diff --git a/hardware/arduino/sam/variants/sam3u_ek/debug_scripts/gcc/sam3u_ek_flash.gdb b/hardware/atmel/sam/variants/sam3u_ek/debug_scripts/gcc/sam3u_ek_flash.gdb similarity index 100% rename from hardware/arduino/sam/variants/sam3u_ek/debug_scripts/gcc/sam3u_ek_flash.gdb rename to hardware/atmel/sam/variants/sam3u_ek/debug_scripts/gcc/sam3u_ek_flash.gdb diff --git a/hardware/arduino/sam/variants/sam3u_ek/debug_scripts/gcc/sam3u_ek_sram.gdb b/hardware/atmel/sam/variants/sam3u_ek/debug_scripts/gcc/sam3u_ek_sram.gdb similarity index 100% rename from hardware/arduino/sam/variants/sam3u_ek/debug_scripts/gcc/sam3u_ek_sram.gdb rename to hardware/atmel/sam/variants/sam3u_ek/debug_scripts/gcc/sam3u_ek_sram.gdb diff --git a/hardware/arduino/sam/variants/sam3u_ek/debug_scripts/iar/sam3u_ek_flash.mac b/hardware/atmel/sam/variants/sam3u_ek/debug_scripts/iar/sam3u_ek_flash.mac similarity index 100% rename from hardware/arduino/sam/variants/sam3u_ek/debug_scripts/iar/sam3u_ek_flash.mac rename to hardware/atmel/sam/variants/sam3u_ek/debug_scripts/iar/sam3u_ek_flash.mac diff --git a/hardware/arduino/sam/variants/sam3u_ek/debug_scripts/iar/sam3u_ek_sram.mac b/hardware/atmel/sam/variants/sam3u_ek/debug_scripts/iar/sam3u_ek_sram.mac similarity index 100% rename from hardware/arduino/sam/variants/sam3u_ek/debug_scripts/iar/sam3u_ek_sram.mac rename to hardware/atmel/sam/variants/sam3u_ek/debug_scripts/iar/sam3u_ek_sram.mac diff --git a/hardware/arduino/sam/variants/sam3u_ek/linker_scripts/gcc/flash.ld b/hardware/atmel/sam/variants/sam3u_ek/linker_scripts/gcc/flash.ld similarity index 100% rename from hardware/arduino/sam/variants/sam3u_ek/linker_scripts/gcc/flash.ld rename to hardware/atmel/sam/variants/sam3u_ek/linker_scripts/gcc/flash.ld diff --git a/hardware/arduino/sam/variants/sam3u_ek/linker_scripts/gcc/sram.ld b/hardware/atmel/sam/variants/sam3u_ek/linker_scripts/gcc/sram.ld similarity index 100% rename from hardware/arduino/sam/variants/sam3u_ek/linker_scripts/gcc/sram.ld rename to hardware/atmel/sam/variants/sam3u_ek/linker_scripts/gcc/sram.ld diff --git a/hardware/arduino/sam/variants/sam3u_ek/linker_scripts/iar/flash.icf b/hardware/atmel/sam/variants/sam3u_ek/linker_scripts/iar/flash.icf similarity index 100% rename from hardware/arduino/sam/variants/sam3u_ek/linker_scripts/iar/flash.icf rename to hardware/atmel/sam/variants/sam3u_ek/linker_scripts/iar/flash.icf diff --git a/hardware/arduino/sam/variants/sam3u_ek/linker_scripts/iar/sram.icf b/hardware/atmel/sam/variants/sam3u_ek/linker_scripts/iar/sram.icf similarity index 100% rename from hardware/arduino/sam/variants/sam3u_ek/linker_scripts/iar/sram.icf rename to hardware/atmel/sam/variants/sam3u_ek/linker_scripts/iar/sram.icf diff --git a/hardware/arduino/sam/variants/sam3u_ek/pins.xls b/hardware/atmel/sam/variants/sam3u_ek/pins.xls similarity index 100% rename from hardware/arduino/sam/variants/sam3u_ek/pins.xls rename to hardware/atmel/sam/variants/sam3u_ek/pins.xls diff --git a/hardware/atmel/sam/variants/sam3u_ek/variant.cpp b/hardware/atmel/sam/variants/sam3u_ek/variant.cpp new file mode 100644 index 000000000..f045f597c --- /dev/null +++ b/hardware/atmel/sam/variants/sam3u_ek/variant.cpp @@ -0,0 +1,189 @@ +/* + 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" + +/* + * Pins descriptions + */ +extern const PinDescription g_APinDescription[]= +{ + // LEDS, 0..2 + { PIOB, PIO_PB0, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // LED BLUE + { PIOB, PIO_PB1, ID_PIOB, PIO_OUTPUT_1, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // LED GREEN + { PIOB, PIO_PB2, ID_PIOB, PIO_OUTPUT_1, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // LED RED + + // USB, 3..3 + { PIOA, PIO_PA0, ID_PIOA, PIO_INPUT, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // USB_VBUS + + // UART (Serial), 4..6 + { PIOA, PIO_PA11A_URXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // URXD + { PIOA, PIO_PA12A_UTXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // UTXD + { PIOA, PIO_PA11A_URXD|PIO_PA12A_UTXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // All UART pins + + // Push buttons, 7..8 + { PIOA, PIO_PA18, ID_PIOA, PIO_INPUT, PIO_PULLUP | PIO_DEGLITCH, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PB_LEFT + { PIOA, PIO_PA19, ID_PIOA, PIO_INPUT, PIO_PULLUP | PIO_DEGLITCH, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PB_RIGHT + + // MCI (SDCARD), 9..19 + { PIOA, PIO_PA25, ID_PIOA, PIO_INPUT, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // MCI Card Detect + { PIOA, PIO_PA5A_MCDA0, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // MCDA0 + { PIOA, PIO_PA6A_MCDA1, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // MCDA1 + { PIOA, PIO_PA7A_MCDA2, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // MCDA2 + { PIOA, PIO_PA8A_MCDA3, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // MCDA3 + { PIOC, PIO_PC28B_MCDA4, ID_PIOC, PIO_PERIPH_B, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // MCDA4 + { PIOC, PIO_PC29B_MCDA5, ID_PIOC, PIO_PERIPH_B, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // MCDA5 + { PIOC, PIO_PC30B_MCDA6, ID_PIOC, PIO_PERIPH_B, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // MCDA6 + { PIOC, PIO_PC31B_MCDA7, ID_PIOC, PIO_PERIPH_B, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // MCDA7 + { PIOA, PIO_PA4A_MCCDA, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // MCCDA + { PIOA, PIO_PA3A_MCCK, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // MCCK + + // SPI, 20..23 + { PIOA, PIO_PA13A_MISO, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // MISO + { PIOA, PIO_PA14A_MOSI, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // MOSI + { PIOA, PIO_PA15A_SPCK, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // SPCK + { PIOC, PIO_PC14B_NPCS2, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // NPCS2 + + // TouchScreen, 24..25 + { PIOA, PIO_PA24, ID_PIOA, PIO_INPUT, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // IRQ_TSC + { PIOA, PIO_PA2, ID_PIOA, PIO_INPUT, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // BUSY_TSC + + // USART1, 26..29 + { PIOA, PIO_PA21A_RXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // RXD1 + { PIOA, PIO_PA20A_TXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // TXD1 + { PIOA, PIO_PA22B_RTS1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // RTS1 + { PIOA, PIO_PA23B_CTS1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // CTS1 + + // LCD, 30..47 + { PIOB, 0xFE01FE00, ID_PIOB, PIO_PERIPH_A, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // EBI Data bus PB9-16 PB25-31 + { PIOB, PIO_PB23A_NWE, ID_PIOB, PIO_PERIPH_A, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // EBI_NWE + { PIOB, PIO_PB19A_NRD, ID_PIOB, PIO_PERIPH_A, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // EBI_NRD + { PIOC, PIO_PC16A_NCS2, ID_PIOC, PIO_PERIPH_A, PIO_PULLUP, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // LCD CS + { PIOB, PIO_PB8, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // LCD RS + { PIOC, PIO_PC19, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // LCD BackLight + + { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NO_PWM, NO_TC } // END +} ; + +/* + * UART objects + */ +RingBuffer rx_buffer1 ; + +UARTClass Serial( UART, UART_IRQn, ID_UART, &rx_buffer1 ) ; + +// IT handlers +void UART_Handler(void) +{ + Serial.IrqHandler() ; +} + +// ---------------------------------------------------------------------------- +/* + * USART objects + */ +RingBuffer rx_buffer2 ; +RingBuffer rx_buffer3 ; + +USARTClass Serial2( USART0, USART0_IRQn, ID_USART0, &rx_buffer2 ) ; +USARTClass Serial3( USART1, USART1_IRQn, ID_USART1, &rx_buffer3 ) ; + +// IT handlers +void USART0_Handler( void ) +{ + Serial2.IrqHandler() ; +} + +void USART1_Handler( void ) +{ + Serial3.IrqHandler() ; +} + +// ---------------------------------------------------------------------------- + +#ifdef __cplusplus +extern "C" { +#endif + +// Should be made in a better way... +extern void analogOutputInit(void); + +/** + * + */ +extern void init( void ) +{ + SystemInit() ; + + // Set Systick to 1ms interval, common to all SAM3 variants + if ( SysTick_Config( SystemCoreClock / 1000 ) ) + { + // Capture error + while ( 1 ) ; + } + + // Disable watchdog, common to all SAM variants + WDT_Disable( WDT ) ; + + // Initialize Serial port UART, common to all SAM3 variants + PIO_Configure( + g_APinDescription[PINS_UART].pPort, + g_APinDescription[PINS_UART].ulPinType, + g_APinDescription[PINS_UART].ulPin, + g_APinDescription[PINS_UART].ulPinConfiguration); + + // Initialize Serial ports USART + 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); + + // Switch off Power LED + PIO_Configure( g_APinDescription[PIN_LED_RED].pPort, g_APinDescription[PIN_LED_RED].ulPinType, + g_APinDescription[PIN_LED_RED].ulPin, g_APinDescription[PIN_LED_RED].ulPinConfiguration ) ; + PIO_Clear( g_APinDescription[PIN_LED_RED].pPort, g_APinDescription[PIN_LED_RED].ulPin ) ; + + // Initialize 10bit Analog Controller + PMC_EnablePeripheral( ID_ADC ) ; + adc_init( ADC, SystemCoreClock, ADC_FREQ_MAX, ADC_STARTUP ) ; + adc_configure_timing( ADC, 15 ) ; + adc_configure_trigger( ADC, ADC_TRIG_SW ) ; + adc_disable_interrupt( ADC, 0xFFFFFFFF ) ; /* Disable all adc interrupt. */ + adc_disable_channel( ADC, ADC_ALL_CHANNEL ) ; + + // Initialize 12bit Analog Controller + PMC_EnablePeripheral( ID_ADC12B ) ; + adc12_init( ADC12B, SystemCoreClock, ADC12_FREQ_MAX, ADC12_STARTUP_FAST, 1 ) ; + adc12_configure_timing( ADC12B, 15 ) ; + adc12_configure_trigger( ADC12B, ADC_TRIG_SW ) ; + adc12_disable_interrupt( ADC12B, 0xFFFFFFFF ) ; /* Disable all adc interrupt. */ + adc12_disable_channel( ADC12B, ADC_ALL_CHANNEL ) ; + + // Initialize analogOutput module + analogOutputInit(); +} +#ifdef __cplusplus +} +#endif + diff --git a/hardware/arduino/sam/variants/sam3u_ek/variant.h b/hardware/atmel/sam/variants/sam3u_ek/variant.h similarity index 100% rename from hardware/arduino/sam/variants/sam3u_ek/variant.h rename to hardware/atmel/sam/variants/sam3u_ek/variant.h diff --git a/hardware/atmel/sam/variants/sam3x_ek/build_gcc/Makefile b/hardware/atmel/sam/variants/sam3x_ek/build_gcc/Makefile new file mode 100644 index 000000000..a2679d31b --- /dev/null +++ b/hardware/atmel/sam/variants/sam3x_ek/build_gcc/Makefile @@ -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 +# + +# Makefile for compiling libboard +BOARD = + +SUBMAKE_OPTIONS=--no-builtin-rules --no-builtin-variables + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- + +all: sam3x_ek + +.PHONY: sam3x_ek +sam3x_ek: + @echo --- Making sam3x_ek + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f libvariant_sam3x_ek.mk +# @$(MAKE) $(SUBMAKE_OPTIONS) -f libvariant_sam3x_ek.mk + +.PHONY: clean +clean: + @echo --- Cleaning sam3x_ek + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f libvariant_sam3x_ek.mk $@ +# @$(MAKE) $(SUBMAKE_OPTIONS) -f libvariant_sam3x_ek.mk $@ + + diff --git a/hardware/atmel/sam/variants/sam3x_ek/build_gcc/debug.mk b/hardware/atmel/sam/variants/sam3x_ek/build_gcc/debug.mk new file mode 100644 index 000000000..d0716744a --- /dev/null +++ b/hardware/atmel/sam/variants/sam3x_ek/build_gcc/debug.mk @@ -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 diff --git a/hardware/atmel/sam/variants/sam3x_ek/build_gcc/debug_sam3x_ek/variant.o b/hardware/atmel/sam/variants/sam3x_ek/build_gcc/debug_sam3x_ek/variant.o new file mode 100644 index 000000000..53f0a7531 Binary files /dev/null and b/hardware/atmel/sam/variants/sam3x_ek/build_gcc/debug_sam3x_ek/variant.o differ diff --git a/hardware/atmel/sam/variants/sam3x_ek/build_gcc/gcc.mk b/hardware/atmel/sam/variants/sam3x_ek/build_gcc/gcc.mk new file mode 100644 index 000000000..99d8969be --- /dev/null +++ b/hardware/atmel/sam/variants/sam3x_ek/build_gcc/gcc.mk @@ -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 -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 -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) diff --git a/hardware/atmel/sam/variants/sam3x_ek/build_gcc/libvariant_sam3x_ek.mk b/hardware/atmel/sam/variants/sam3x_ek/build_gcc/libvariant_sam3x_ek.mk new file mode 100644 index 000000000..0e30577fe --- /dev/null +++ b/hardware/atmel/sam/variants/sam3x_ek/build_gcc/libvariant_sam3x_ek.mk @@ -0,0 +1,176 @@ +# +# 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=__SAM3X8H__ +VARIANT=sam3x_ek +LIBNAME=libvariant_$(VARIANT) +TOOLCHAIN=gcc + +#------------------------------------------------------------------------------- +# Path +#------------------------------------------------------------------------------- + +# Output directories +OUTPUT_BIN = ../../../cores/sam + +# 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/sam +VARIANT_BASE_PATH = ../../../variants +VARIANT_PATH = ../../../variants/$(VARIANT) + +#------------------------------------------------------------------------------- +# Files +#------------------------------------------------------------------------------- + +vpath %.h $(PROJECT_BASE_PATH) $(SYSTEM_PATH) $(VARIANT_PATH) +vpath %.cpp $(PROJECT_BASE_PATH) $(PROJECT_BASE_PATH) + +VPATH+=$(PROJECT_BASE_PATH) + +INCLUDES = +#INCLUDES += -I$(PROJECT_BASE_PATH) +INCLUDES += -I$(ARDUINO_PATH) +INCLUDES += -I$(SYSTEM_PATH) +INCLUDES += -I$(SYSTEM_PATH)/libsam +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 --- Preparing $(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 + +$(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 --- Cleaning $(VARIANT) files [$(OUTPUT_PATH)$(SEP)*.o] + -@$(RM) $(OUTPUT_PATH) 1>NUL 2>&1 + -@$(RM) $(OUTPUT_BIN)/$(OUTPUT_LIB) 1>NUL 2>&1 diff --git a/hardware/atmel/sam/variants/sam3x_ek/build_gcc/release.mk b/hardware/atmel/sam/variants/sam3x_ek/build_gcc/release.mk new file mode 100644 index 000000000..0d15157f4 --- /dev/null +++ b/hardware/atmel/sam/variants/sam3x_ek/build_gcc/release.mk @@ -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 diff --git a/hardware/atmel/sam/variants/sam3x_ek/debug_scripts/gcc/sam3u_ek_flash.gdb b/hardware/atmel/sam/variants/sam3x_ek/debug_scripts/gcc/sam3u_ek_flash.gdb new file mode 100644 index 000000000..a0fb3fd20 --- /dev/null +++ b/hardware/atmel/sam/variants/sam3x_ek/debug_scripts/gcc/sam3u_ek_flash.gdb @@ -0,0 +1,33 @@ +#******************************************************* +# +# Connect to J-Link and debug application in flash. +# + +# 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 = AT91SAM3U4E +# Enable flash download and flash breakpoints +monitor flash download = 1 +# Load the program +load + +# Reset peripheral (RSTC_CR) +set *0x400e1200 = 0xA5000004 + +# Initializing 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 diff --git a/hardware/atmel/sam/variants/sam3x_ek/debug_scripts/gcc/sam3u_ek_sram.gdb b/hardware/atmel/sam/variants/sam3x_ek/debug_scripts/gcc/sam3u_ek_sram.gdb new file mode 100644 index 000000000..5fa44e23c --- /dev/null +++ b/hardware/atmel/sam/variants/sam3x_ek/debug_scripts/gcc/sam3u_ek_sram.gdb @@ -0,0 +1,29 @@ +#******************************************************* +# +# Connect to J-Link and debug application in flash. +# + +# 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 + +# Load the program +load + +# Reset peripheral (RSTC_CR) +set *0x400e1200 = 0xA5000004 + +# Initializing 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 diff --git a/hardware/atmel/sam/variants/sam3x_ek/debug_scripts/iar/sam3u_ek_flash.mac b/hardware/atmel/sam/variants/sam3x_ek/debug_scripts/iar/sam3u_ek_flash.mac new file mode 100644 index 000000000..959583582 --- /dev/null +++ b/hardware/atmel/sam/variants/sam3x_ek/debug_scripts/iar/sam3u_ek_flash.mac @@ -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"); +} diff --git a/hardware/atmel/sam/variants/sam3x_ek/debug_scripts/iar/sam3u_ek_sram.mac b/hardware/atmel/sam/variants/sam3x_ek/debug_scripts/iar/sam3u_ek_sram.mac new file mode 100644 index 000000000..ba86029d3 --- /dev/null +++ b/hardware/atmel/sam/variants/sam3x_ek/debug_scripts/iar/sam3u_ek_sram.mac @@ -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"); +} diff --git a/hardware/atmel/sam/variants/sam3x_ek/linker_scripts/gcc/flash.ld b/hardware/atmel/sam/variants/sam3x_ek/linker_scripts/gcc/flash.ld new file mode 100644 index 000000000..c79e630a5 --- /dev/null +++ b/hardware/atmel/sam/variants/sam3x_ek/linker_scripts/gcc/flash.ld @@ -0,0 +1,150 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are 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. + * ---------------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------------ + * Linker script for running in internal FLASH on the SAM3U4 + *----------------------------------------------------------------------------*/ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + flash0 (W!RX) : ORIGIN = 0x00080000, LENGTH = 0x00020000 /* Flash0, 128K */ + flash1 (W!RX) : ORIGIN = 0x00100000, LENGTH = 0x00020000 /* Flash1, 128K */ + sram0 (W!RX) : ORIGIN = 0x20000000, LENGTH = 0x00008000 /* Sram0, 32K */ + sram1 (W!RX) : ORIGIN = 0x20080000, LENGTH = 0x00004000 /* Sram1, 16K */ + rom (rx) : ORIGIN = ORIGIN(flash1)-LENGTH(flash0), LENGTH = LENGTH(flash0)+LENGTH(flash1) /* Flash, 256K */ + ram (rwx) : ORIGIN = ORIGIN( sram1)-LENGTH( sram0), LENGTH = LENGTH( sram0)+LENGTH( sram1) /* sram, 48K */ +} + +/* The stack size used by the application. NOTE: you need to adjust */ +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 */ + } > flash0 + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > flash0 + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > sram0 + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > sram0 + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > sram1 + + . = ALIGN(4); + _end = . ; +} diff --git a/hardware/atmel/sam/variants/sam3x_ek/linker_scripts/gcc/sram.ld b/hardware/atmel/sam/variants/sam3x_ek/linker_scripts/gcc/sram.ld new file mode 100644 index 000000000..c8e21ad30 --- /dev/null +++ b/hardware/atmel/sam/variants/sam3x_ek/linker_scripts/gcc/sram.ld @@ -0,0 +1,150 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are 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. + * ---------------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------------ + * Linker script for running in internal SRAM on the SAM3U4 + *----------------------------------------------------------------------------*/ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + flash0 (W!RX) : ORIGIN = 0x00080000, LENGTH = 0x00020000 /* Flash0, 128K */ + flash1 (W!RX) : ORIGIN = 0x00100000, LENGTH = 0x00020000 /* Flash1, 128K */ + sram0 (W!RX) : ORIGIN = 0x20000000, LENGTH = 0x00008000 /* Sram0, 32K */ + sram1 (W!RX) : ORIGIN = 0x20080000, LENGTH = 0x00004000 /* Sram1, 16K */ + rom (rx) : ORIGIN = ORIGIN(flash1)-LENGTH(flash0), LENGTH = LENGTH(flash0)+LENGTH(flash1) /* Flash, 256K */ + ram (rwx) : ORIGIN = ORIGIN( sram1)-LENGTH( sram0), LENGTH = LENGTH( sram0)+LENGTH( sram1) /* sram, 48K */ +} + +/* The stack size used by the application. NOTE: you need to adjust */ +STACK_SIZE = 0x800; + +/* 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 */ + } > sram0 + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > sram1 + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > sram1 + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > sram1 + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > sram1 + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _end = . ; +} diff --git a/hardware/atmel/sam/variants/sam3x_ek/linker_scripts/iar/flash.icf b/hardware/atmel/sam/variants/sam3x_ek/linker_scripts/iar/flash.icf new file mode 100644 index 000000000..956230fbd --- /dev/null +++ b/hardware/atmel/sam/variants/sam3x_ek/linker_scripts/iar/flash.icf @@ -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*/ \ No newline at end of file diff --git a/hardware/atmel/sam/variants/sam3x_ek/linker_scripts/iar/sram.icf b/hardware/atmel/sam/variants/sam3x_ek/linker_scripts/iar/sram.icf new file mode 100644 index 000000000..d7d33537a --- /dev/null +++ b/hardware/atmel/sam/variants/sam3x_ek/linker_scripts/iar/sram.icf @@ -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 }; diff --git a/hardware/atmel/sam/variants/sam3x_ek/pins.xls b/hardware/atmel/sam/variants/sam3x_ek/pins.xls new file mode 100644 index 000000000..488f62f0b Binary files /dev/null and b/hardware/atmel/sam/variants/sam3x_ek/pins.xls differ diff --git a/hardware/atmel/sam/variants/sam3x_ek/sam3x-ek_revb.pdf b/hardware/atmel/sam/variants/sam3x_ek/sam3x-ek_revb.pdf new file mode 100644 index 000000000..42566bafe Binary files /dev/null and b/hardware/atmel/sam/variants/sam3x_ek/sam3x-ek_revb.pdf differ diff --git a/hardware/atmel/sam/variants/sam3x_ek/variant.cpp b/hardware/atmel/sam/variants/sam3x_ek/variant.cpp new file mode 100644 index 000000000..c1fc7ef63 --- /dev/null +++ b/hardware/atmel/sam/variants/sam3x_ek/variant.cpp @@ -0,0 +1,150 @@ +/* + 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 + * ----------------+-------- + * 0 RX0 | PA8 + * 1 TX0 | PA9 + * 13 TIOB0 | PB27 + * + * AT24C512BN pin | PORT + * ----------------+-------- + * SO | PA25 + * SI | PA26 + * SCK | PA27 + * #CS SS3 | PB23 + * + * + * LEDs | PORT + * ----------------+-------- + * "TX" | PA21 + * "RX" | PC30 + * "L" | PB27 + */ + + +/* + * Pins descriptions + */ +extern const PinDescription g_APinDescription[]= +{ + // 0 .. x - Digital pins + // ---------------------- + // 0/1 - UART (Serial) + { PIOA, PIO_PA8A_URXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // URXD + { PIOA, PIO_PA9A_UTXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // UTXD + + // 2/5 - LEDS + { PIOB, PIO_PB13, ID_PIOB, PIO_OUTPUT_1, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // USER_LED1 + { PIOB, PIO_PB12, ID_PIOB, PIO_OUTPUT_1, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // USER_LED2 + { PIOA, PIO_PA12, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // USER_LED3 + { PIOA, PIO_PA13, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // POWER_LED + + // USART0 (Serial2) + { PIOA, PIO_PA10A_RXD0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // URXD + { PIOA, PIO_PA11A_TXD0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // UTXD + + // x .. x - "All pins" masks + // x - 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, NO_PWM, NO_TC }, + // x - USART0 (Serial2) 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, NO_PWM, NO_TC }, + { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC } // END +} ; + +/* + * UART objects + */ +RingBuffer rx_buffer1 ; + +UARTClass Serial( UART, UART_IRQn, ID_UART, &rx_buffer1 ) ; + +// IT handlers +void UART_Handler(void) +{ + Serial.IrqHandler() ; +} + +// ---------------------------------------------------------------------------- +/* + * USART objects + */ +RingBuffer rx_buffer2 ; +RingBuffer rx_buffer3 ; + +USARTClass Serial2( USART0, USART0_IRQn, ID_USART0, &rx_buffer2 ) ; + +// IT handlers +void USART0_Handler( void ) +{ + Serial2.IrqHandler() ; +} + +// ---------------------------------------------------------------------------- + +#ifdef __cplusplus +extern "C" { +#endif + +// Should be made in a better way... +extern void analogOutputInit(void); + +/** + * + */ +extern void init( void ) +{ + SystemInit() ; + + // Set Systick to 1ms interval, common to all SAM3 variants + if ( SysTick_Config( SystemCoreClock / 1000 ) ) + { + // Capture error + while ( 1 ) ; + } + + // Disable watchdog, common to all SAM variants + WDT_Disable( WDT ) ; + + // Initialize Serial port UART, common to all SAM3 variants + PIO_Configure( g_APinDescription[PINS_UART].pPort, + g_APinDescription[PINS_UART].ulPinType, + g_APinDescription[PINS_UART].ulPin, + g_APinDescription[PINS_UART].ulPinConfiguration ) ; + + // Initialize Serial ports USART + PIO_Configure( g_APinDescription[PINS_USART0].pPort, + g_APinDescription[PINS_USART0].ulPinType, + g_APinDescription[PINS_USART0].ulPin, + g_APinDescription[PINS_USART0].ulPinConfiguration ) ; + + // Switch off Power LED + PIO_Configure( g_APinDescription[PIN_LED_RED].pPort, + g_APinDescription[PIN_LED_RED].ulPinType, + g_APinDescription[PIN_LED_RED].ulPin, + g_APinDescription[PIN_LED_RED].ulPinConfiguration ) ; + + PIO_Clear( g_APinDescription[PIN_LED_RED].pPort, g_APinDescription[PIN_LED_RED].ulPin ) ; +} +#ifdef __cplusplus +} +#endif + diff --git a/hardware/atmel/sam/variants/sam3x_ek/variant.h b/hardware/atmel/sam/variants/sam3x_ek/variant.h new file mode 100644 index 000000000..baae7d174 --- /dev/null +++ b/hardware/atmel/sam/variants/sam3x_ek/variant.h @@ -0,0 +1,103 @@ +/* + 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_SAM3U_EK_ +#define _VARIANT_SAM3U_EK_ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "Arduino.h" +#ifdef __cplusplus +#include "UARTClass.h" +#include "USARTClass.h" +#endif + +/** + * Libc porting layers + */ +#if defined ( __GNUC__ ) /* GCC CS3 */ +# include /** RedHat Newlib minimal stub */ +#endif + +/*---------------------------------------------------------------------------- + * Definitions + *----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------*/ + +#ifndef sam3x_ek +#define sam3x_ek +#endif + +/** Name of the board */ +#define VARIANT_NAME "SAM3X-EK" + +/* +#define VARIANT_REV_A +#define VARIANT_REV_B +#define VARIANT_REV_C +#define VARIANT_REV_D +*/ + +/** Frequency of the board main oscillator */ +#define VARIANT_MAINOSC 12000000 + +/** Master clock frequency */ +#define VARIANT_MCK 84000000 + +/*---------------------------------------------------------------------------- + * Pins + *----------------------------------------------------------------------------*/ + +// Number of pins defined in PinDescription array +#define PINS_COUNT (10u) + +// LEDs +#define PIN_LED_BLUE (2u) +#define PIN_LED_AMBER (3u) +#define PIN_LED_GREEN (4u) +#define PIN_LED_RED (5u) +#define PIN_LED PIN_LED_AMBER +#define PIN_LED2 PIN_LED_BLUE +#define PIN_LED3 PIN_LED_GREEN + +/* + * UART/USART Interfaces + */ +#define PINS_UART (8u) + +#define PINS_USART0 (9u) + + + +/*---------------------------------------------------------------------------- + * Arduino objects - C++ only + *----------------------------------------------------------------------------*/ + +#ifdef __cplusplus + +extern UARTClass Serial ; + +extern USARTClass Serial2 ; + +#endif + +#endif /* _VARIANT_SAM3U_EK_ */ +