diff --git a/lib/README b/lib/README index 38eaadb2..5976b7cc 100644 --- a/lib/README +++ b/lib/README @@ -21,7 +21,9 @@ compile with gcc's LTO feature. See sam3x.patch for the modifications. The samd21 directory contains code from the Atmel.SAMD21_DFP.1.3.304.atpack zip file found at: http://packs.download.atmel.com/ -version 1.3.304 (extracted on 20180725). +version 1.3.304 (extracted on 20180725). It has been modified to +compile with gcc's LTO feature and to work with chips that have a +bootloader. See samd21.patch for the modifications. The lpc176x directory contains code from the mbed project: https://github.com/ARMmbed/mbed-os diff --git a/lib/samd21/samd21.patch b/lib/samd21/samd21.patch new file mode 100644 index 00000000..ae7d7670 --- /dev/null +++ b/lib/samd21/samd21.patch @@ -0,0 +1,26 @@ +diff --git a/lib/samd21/samd21a/gcc/gcc/samd21g18a_flash.ld b/lib/samd21/samd21a/gcc/gcc/samd21g18a_flash.ld +index c6f289e7..34dfb6ba 100644 +--- a/lib/samd21/samd21a/gcc/gcc/samd21g18a_flash.ld ++++ b/lib/samd21/samd21a/gcc/gcc/samd21g18a_flash.ld +@@ -35,7 +35,7 @@ SEARCH_DIR(.) + /* Memory Spaces Definitions */ + MEMORY + { +- rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00040000 ++ rom (rx) : ORIGIN = 0x00000000 + FLASH_START , LENGTH = 0x00040000 - FLASH_START + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000 + } + +diff --git a/lib/samd21/samd21a/gcc/gcc/startup_samd21.c b/lib/samd21/samd21a/gcc/gcc/startup_samd21.c +index 3dce0edd..a480077f 100644 +--- a/lib/samd21/samd21a/gcc/gcc/startup_samd21.c ++++ b/lib/samd21/samd21a/gcc/gcc/startup_samd21.c +@@ -105,7 +105,7 @@ void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler + void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + + /* Exception Table */ +-__attribute__ ((section(".vectors"))) ++__attribute__ ((section(".vectors"))) __attribute__((externally_visible)) + const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ diff --git a/lib/samd21/samd21a/gcc/gcc/samd21g18a_flash.ld b/lib/samd21/samd21a/gcc/gcc/samd21g18a_flash.ld index c6f289e7..34dfb6ba 100644 --- a/lib/samd21/samd21a/gcc/gcc/samd21g18a_flash.ld +++ b/lib/samd21/samd21a/gcc/gcc/samd21g18a_flash.ld @@ -35,7 +35,7 @@ SEARCH_DIR(.) /* Memory Spaces Definitions */ MEMORY { - rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00040000 + rom (rx) : ORIGIN = 0x00000000 + FLASH_START , LENGTH = 0x00040000 - FLASH_START ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000 } diff --git a/lib/samd21/samd21a/gcc/gcc/startup_samd21.c b/lib/samd21/samd21a/gcc/gcc/startup_samd21.c index 3dce0edd..a480077f 100644 --- a/lib/samd21/samd21a/gcc/gcc/startup_samd21.c +++ b/lib/samd21/samd21a/gcc/gcc/startup_samd21.c @@ -105,7 +105,7 @@ void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); /* Exception Table */ -__attribute__ ((section(".vectors"))) +__attribute__ ((section(".vectors"))) __attribute__((externally_visible)) const DeviceVectors exception_table = { /* Configure Initial Stack Pointer, using linker-generated symbols */