From b3f889c7ef24fd61be0b88e56b78fc59f5ceecab Mon Sep 17 00:00:00 2001 From: cladmi Date: Fri, 17 Aug 2018 11:08:15 +0200 Subject: [PATCH 01/24] examples: blacklist arduino boards based on ROM/RAM overflow --- examples/asymcute_mqttsn/Makefile | 14 ++++++++------ examples/default/Makefile | 2 ++ examples/filesystem/Makefile | 3 ++- examples/gcoap/Makefile | 10 ++++++---- examples/gnrc_border_router/Makefile | 15 +++++++++------ examples/gnrc_minimal/Makefile | 2 +- examples/gnrc_networking/Makefile | 13 ++++++++----- examples/gnrc_tftp/Makefile | 16 ++++++++++------ examples/nanocoap_server/Makefile | 8 +++++--- examples/ndn-ping/Makefile | 9 ++++++--- examples/posix_sockets/Makefile | 13 ++++++++----- examples/rdcli_simple/Makefile | 10 ++++++---- examples/saul/Makefile | 2 ++ 13 files changed, 73 insertions(+), 44 deletions(-) diff --git a/examples/asymcute_mqttsn/Makefile b/examples/asymcute_mqttsn/Makefile index 08f6156305..e89290e6ee 100644 --- a/examples/asymcute_mqttsn/Makefile +++ b/examples/asymcute_mqttsn/Makefile @@ -9,12 +9,14 @@ RIOTBASE ?= $(CURDIR)/../.. # Not all boards have enough memory to build the default configuration of this # example... -BOARD_INSUFFICIENT_MEMORY := airfy-beacon chronos hifive1 microbit msb-430 \ - msb-430h nrf51dongle nrf6310 nucleo-f030r8 \ - nucleo-f031k6 nucleo-f042k6 nucleo-f070rb \ - nucleo-f072rb nucleo-f303k8 nucleo-f334r8 \ - nucleo-l031k6 nucleo-l053r8 stm32f0discovery \ - telosb wsn430-v1_3b wsn430-v1_4 yunjia-nrf51822 z1 +BOARD_INSUFFICIENT_MEMORY := airfy-beacon arduino-duemilanove arduino-mega2560 \ + arduino-uno chronos hifive1 mega-xplained \ + microbit msb-430 msb-430h nrf51dongle nrf6310 \ + nucleo-f030r8 nucleo-f031k6 nucleo-f042k6 \ + nucleo-f070rb nucleo-f072rb nucleo-f303k8 \ + nucleo-f334r8 nucleo-l031k6 nucleo-l053r8 \ + stm32f0discovery telosb waspmote-pro \ + wsn430-v1_3b wsn430-v1_4 yunjia-nrf51822 z1 # Include packages that pull up and auto-init the link layer. # NOTE: 6LoWPAN will be included if IEEE802.15.4 devices are present diff --git a/examples/default/Makefile b/examples/default/Makefile index 664945b5df..7ca1175f66 100644 --- a/examples/default/Makefile +++ b/examples/default/Makefile @@ -7,6 +7,8 @@ BOARD ?= native # This has to be the absolute path to the RIOT base directory: RIOTBASE ?= $(CURDIR)/../.. +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + # Uncomment these lines if you want to use platform support from external # repositories: #RIOTCPU ?= $(CURDIR)/../../RIOT/thirdparty_cpu diff --git a/examples/filesystem/Makefile b/examples/filesystem/Makefile index 69034e3a60..85b2d44363 100644 --- a/examples/filesystem/Makefile +++ b/examples/filesystem/Makefile @@ -4,6 +4,7 @@ APPLICATION = filesystem # If no BOARD is found in the environment, use this default: BOARD ?= native + # Blacklisting msp430-based boards, as file syscalls are not supported BOARD_BLACKLIST := chronos \ msb-430 \ @@ -14,7 +15,7 @@ BOARD_BLACKLIST := chronos \ z1 \ # -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno nucleo-f031k6 # This has to be the absolute path to the RIOT base directory: RIOTBASE ?= $(CURDIR)/../.. diff --git a/examples/gcoap/Makefile b/examples/gcoap/Makefile index 14fdd7380e..8bc2659393 100644 --- a/examples/gcoap/Makefile +++ b/examples/gcoap/Makefile @@ -9,10 +9,12 @@ BOARD ?= native # This has to be the absolute path to the RIOT base directory: RIOTBASE ?= $(CURDIR)/../.. -BOARD_INSUFFICIENT_MEMORY := chronos msb-430 msb-430h nucleo-f031k6 nucleo-f042k6 \ - nucleo-l031k6 nucleo-f030r8 nucleo-f334r8 nucleo-l053r8 \ - stm32f0discovery telosb wsn430-v1_3b wsn430-v1_4 z1 \ - nucleo-f303k8 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + chronos mega-xplained msb-430 msb-430h \ + nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 \ + nucleo-f030r8 nucleo-f303k8 nucleo-f334r8 \ + nucleo-l053r8 stm32f0discovery telosb \ + waspmote-pro wsn430-v1_3b wsn430-v1_4 z1 ## Uncomment to redefine port, for example use 61616 for RFC 6282 UDP compression. #GCOAP_PORT = 5683 diff --git a/examples/gnrc_border_router/Makefile b/examples/gnrc_border_router/Makefile index 54177f6972..a8d8f0b841 100644 --- a/examples/gnrc_border_router/Makefile +++ b/examples/gnrc_border_router/Makefile @@ -7,13 +7,16 @@ BOARD ?= samr21-xpro # This has to be the absolute path to the RIOT base directory: RIOTBASE ?= $(CURDIR)/../.. -BOARD_INSUFFICIENT_MEMORY := airfy-beacon b-l072z-lrwan1 bluepill calliope-mini \ +BOARD_INSUFFICIENT_MEMORY := airfy-beacon arduino-duemilanove arduino-mega2560 \ + arduino-uno b-l072z-lrwan1 bluepill calliope-mini \ cc2650-launchpad cc2650stk hifive1 maple-mini \ - microbit msb-430 msb-430h nrf51dongle nrf6310 \ - nucleo-f031k6 nucleo-f042k6 nucleo-f303k8 nucleo-l031k6 \ - nucleo-f030r8 nucleo-f070rb nucleo-f072rb nucleo-f103rb nucleo-f302r8 \ - nucleo-f334r8 nucleo-l053r8 nucleo-l073rz opencm904 \ - spark-core stm32f0discovery stm32mindev telosb \ + mega-xplained microbit msb-430 msb-430h \ + nrf51dongle nrf6310 nucleo-f031k6 nucleo-f042k6 \ + nucleo-f303k8 nucleo-l031k6 nucleo-f030r8 \ + nucleo-f070rb nucleo-f072rb nucleo-f103rb \ + nucleo-f302r8 nucleo-f334r8 nucleo-l053r8 \ + nucleo-l073rz opencm904 spark-core \ + stm32f0discovery stm32mindev telosb waspmote-pro \ weio wsn430-v1_3b wsn430-v1_4 yunjia-nrf51822 z1 # The following boards do not have an available UART diff --git a/examples/gnrc_minimal/Makefile b/examples/gnrc_minimal/Makefile index 5a5b565153..bc63da397f 100644 --- a/examples/gnrc_minimal/Makefile +++ b/examples/gnrc_minimal/Makefile @@ -7,7 +7,7 @@ BOARD ?= native # This has to be the absolute path to the RIOT base directory: RIOTBASE ?= $(CURDIR)/../.. -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno nucleo-f031k6 # Comment this out to disable code in RIOT that does safety checking # which is not needed in a production environment but helps in the diff --git a/examples/gnrc_networking/Makefile b/examples/gnrc_networking/Makefile index 86b7a94c14..4d361f8250 100644 --- a/examples/gnrc_networking/Makefile +++ b/examples/gnrc_networking/Makefile @@ -7,11 +7,14 @@ BOARD ?= native # This has to be the absolute path to the RIOT base directory: RIOTBASE ?= $(CURDIR)/../.. -BOARD_INSUFFICIENT_MEMORY := calliope-mini chronos hifive1 microbit msb-430 msb-430h \ - nucleo-f031k6 nucleo-f042k6 nucleo-f303k8 nucleo-l031k6 \ - nucleo-f030r8 nucleo-f070rb nucleo-f072rb nucleo-f103rb nucleo-f302r8 \ - nucleo-f334r8 nucleo-l053r8 spark-core stm32f0discovery telosb \ - wsn430-v1_3b wsn430-v1_4 z1 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + calliope-mini chronos hifive1 mega-xplained \ + microbit msb-430 msb-430h nucleo-f031k6 \ + nucleo-f042k6 nucleo-f303k8 nucleo-l031k6 \ + nucleo-f030r8 nucleo-f070rb nucleo-f072rb \ + nucleo-f103rb nucleo-f302r8 nucleo-f334r8 \ + nucleo-l053r8 spark-core stm32f0discovery telosb \ + waspmote-pro wsn430-v1_3b wsn430-v1_4 z1 # Include packages that pull up and auto-init the link layer. # NOTE: 6LoWPAN will be included if IEEE802.15.4 devices are present diff --git a/examples/gnrc_tftp/Makefile b/examples/gnrc_tftp/Makefile index ae935f94e2..5f082253f9 100644 --- a/examples/gnrc_tftp/Makefile +++ b/examples/gnrc_tftp/Makefile @@ -7,12 +7,16 @@ BOARD ?= native # This has to be the absolute path to the RIOT base directory: RIOTBASE ?= $(CURDIR)/../.. -BOARD_INSUFFICIENT_MEMORY := airfy-beacon b-l072z-lrwan1 bluepill calliope-mini chronos \ - hifive1 microbit msb-430 msb-430h nrf51dongle nrf6310 nucleo-f031k6 \ - nucleo-f042k6 nucleo-f303k8 nucleo-l031k6 nucleo-f030r8 \ - nucleo-f070rb nucleo-f072rb nucleo-f103rb nucleo-f302r8 nucleo-f334r8 \ - nucleo-l053r8 spark-core stm32f0discovery stm32mindev \ - telosb wsn430-v1_3b wsn430-v1_4 yunjia-nrf51822 z1 +BOARD_INSUFFICIENT_MEMORY := airfy-beacon arduino-duemilanove arduino-mega2560 \ + arduino-uno b-l072z-lrwan1 bluepill calliope-mini \ + chronos hifive1 mega-xplained microbit \ + msb-430 msb-430h nrf51dongle nrf6310 nucleo-f031k6 \ + nucleo-f042k6 nucleo-f303k8 nucleo-l031k6 \ + nucleo-f030r8 nucleo-f070rb nucleo-f072rb \ + nucleo-f103rb nucleo-f302r8 nucleo-f334r8 \ + nucleo-l053r8 spark-core stm32f0discovery \ + stm32mindev telosb waspmote-pro \ + wsn430-v1_3b wsn430-v1_4 yunjia-nrf51822 z1 # Include packages that pull up and auto-init the link layer. # NOTE: 6LoWPAN will be included if IEEE802.15.4 devices are present diff --git a/examples/nanocoap_server/Makefile b/examples/nanocoap_server/Makefile index dc53067650..7b6e5fa1b9 100644 --- a/examples/nanocoap_server/Makefile +++ b/examples/nanocoap_server/Makefile @@ -7,9 +7,11 @@ BOARD ?= native # This has to be the absolute path to the RIOT base directory: RIOTBASE ?= $(CURDIR)/../.. -BOARD_INSUFFICIENT_MEMORY := chronos msb-430 msb-430h nucleo-f031k6 nucleo-f042k6 \ - nucleo-l031k6 nucleo-f030r8 nucleo-l053r8 stm32f0discovery \ - telosb z1 nucleo-f303k8 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + chronos msb-430 msb-430h nucleo-f031k6 \ + nucleo-f042k6 nucleo-l031k6 nucleo-f030r8 \ + nucleo-f303k8 nucleo-l053r8 stm32f0discovery \ + telosb waspmote-pro z1 # Include packages that pull up and auto-init the link layer. # NOTE: 6LoWPAN will be included if IEEE802.15.4 devices are present diff --git a/examples/ndn-ping/Makefile b/examples/ndn-ping/Makefile index 3ccf83aa24..8e33bc7ef4 100644 --- a/examples/ndn-ping/Makefile +++ b/examples/ndn-ping/Makefile @@ -7,9 +7,12 @@ BOARD ?= native # This has to be the absolute path to the RIOT base directory: RIOTBASE ?= $(CURDIR)/../../ -BOARD_INSUFFICIENT_MEMORY := chronos msb-430 msb-430h telosb weio wsn430-v1_3b wsn430-v1_4 z1 \ - nucleo-f042k6 nucleo-f031k6 nucleo-l031k6 nucleo-f030r8 nucleo-l053r8 \ - stm32f0discovery +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + chronos mega-xplained msb-430 msb-430h \ + nucleo-f042k6 nucleo-f031k6 nucleo-l031k6 \ + nucleo-f030r8 nucleo-l053r8 stm32f0discovery \ + telosb waspmote-pro weio wsn430-v1_3b wsn430-v1_4 \ + z1 # Include packages that pull up and auto-init the link layer. USEMODULE += gnrc_netdev_default diff --git a/examples/posix_sockets/Makefile b/examples/posix_sockets/Makefile index b1619169a4..1174267813 100644 --- a/examples/posix_sockets/Makefile +++ b/examples/posix_sockets/Makefile @@ -7,11 +7,14 @@ BOARD ?= native # This has to be the absolute path to the RIOT base directory: RIOTBASE ?= $(CURDIR)/../.. -BOARD_INSUFFICIENT_MEMORY := airfy-beacon chronos msb-430 msb-430h nrf51dongle \ - nrf6310 nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 \ - nucleo-f030r8 nucleo-f070rb nucleo-f072rb nucleo-f334r8 \ - nucleo-l053r8 stm32f0discovery telosb wsn430-v1_3b \ - wsn430-v1_4 yunjia-nrf51822 z1 nucleo-f303k8 +BOARD_INSUFFICIENT_MEMORY := airfy-beacon arduino-duemilanove arduino-mega2560 \ + arduino-uno chronos mega-xplained msb-430 \ + msb-430h nrf51dongle nrf6310 nucleo-f031k6 \ + nucleo-f042k6 nucleo-l031k6 nucleo-f030r8 \ + nucleo-f070rb nucleo-f072rb nucleo-f334r8 \ + nucleo-f303k8 nucleo-l053r8 stm32f0discovery \ + telosb wsn430-v1_3b wsn430-v1_4 yunjia-nrf51822 \ + waspmote-pro z1 # Include packages that pull up and auto-init the link layer. # NOTE: 6LoWPAN will be included if IEEE802.15.4 devices are present diff --git a/examples/rdcli_simple/Makefile b/examples/rdcli_simple/Makefile index e1800bafcc..d2d95afa10 100644 --- a/examples/rdcli_simple/Makefile +++ b/examples/rdcli_simple/Makefile @@ -7,10 +7,12 @@ BOARD ?= native # This has to be the absolute path to the RIOT base directory: RIOTBASE ?= $(CURDIR)/../.. -BOARD_INSUFFICIENT_MEMORY := chronos hifive1 msb-430 msb-430h nucleo-f030r8 nucleo-l053r8 \ - nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 \ - stm32f0discovery telosb wsn430-v1_3b wsn430-v1_4 \ - z1 nucleo-f303k8 nucleo-f334r8 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + chronos hifive1 msb-430 msb-430h nucleo-f030r8 \ + nucleo-l053r8 nucleo-f031k6 nucleo-f042k6 \ + nucleo-f303k8 nucleo-f334r8 nucleo-l031k6 \ + stm32f0discovery telosb waspmote-pro \ + wsn430-v1_3b wsn430-v1_4 z1 # Enable GNRC networking USEMODULE += gnrc_netdev_default diff --git a/examples/saul/Makefile b/examples/saul/Makefile index 7f2ca1e297..6884f03ca3 100644 --- a/examples/saul/Makefile +++ b/examples/saul/Makefile @@ -7,6 +7,8 @@ BOARD ?= native # This has to be the absolute path to the RIOT base directory: RIOTBASE ?= $(CURDIR)/../.. +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + # we want to use SAUL: USEMODULE += saul_default # include the shell: From 1bab7742c2ecc001d0b1451e5951a22073c1412a Mon Sep 17 00:00:00 2001 From: cladmi Date: Fri, 17 Aug 2018 11:21:40 +0200 Subject: [PATCH 02/24] tests/driver: blacklist arduino boards based on ROM/RAM overflow --- tests/driver_at/Makefile | 2 +- tests/driver_at30tse75x/Makefile | 2 ++ tests/driver_at86rf2xx/Makefile | 2 +- tests/driver_ata8520e/Makefile | 2 ++ tests/driver_dynamixel/Makefile | 2 ++ tests/driver_enc28j60/Makefile | 5 +++-- tests/driver_encx24j600/Makefile | 5 +++-- tests/driver_feetech/Makefile | 2 ++ tests/driver_kw2xrf/Makefile | 6 ++++-- tests/driver_nrf24l01p_lowlevel/Makefile | 2 +- tests/driver_pcd8544/Makefile | 2 ++ tests/driver_rn2xx3/Makefile | 2 ++ tests/driver_sdcard_spi/Makefile | 2 +- tests/driver_sht1x/Makefile | 2 ++ tests/driver_srf02/Makefile | 2 ++ tests/driver_sx127x/Makefile | 2 +- tests/driver_xbee/Makefile | 3 ++- 17 files changed, 33 insertions(+), 12 deletions(-) diff --git a/tests/driver_at/Makefile b/tests/driver_at/Makefile index f68ba06428..a22a778431 100644 --- a/tests/driver_at/Makefile +++ b/tests/driver_at/Makefile @@ -1,6 +1,6 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY += nucleo-f031k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno nucleo-f031k6 USEMODULE += shell USEMODULE += at diff --git a/tests/driver_at30tse75x/Makefile b/tests/driver_at30tse75x/Makefile index f759b09afd..760633eecd 100644 --- a/tests/driver_at30tse75x/Makefile +++ b/tests/driver_at30tse75x/Makefile @@ -1,5 +1,7 @@ include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + USEMODULE += at30tse75x USEMODULE += shell USEMODULE += shell_commands diff --git a/tests/driver_at86rf2xx/Makefile b/tests/driver_at86rf2xx/Makefile index 8b7669a52b..c901f654cd 100644 --- a/tests/driver_at86rf2xx/Makefile +++ b/tests/driver_at86rf2xx/Makefile @@ -1,7 +1,7 @@ include ../Makefile.tests_common # exclude boards with insufficient memory -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno nucleo-f031k6 DISABLE_MODULE += auto_init diff --git a/tests/driver_ata8520e/Makefile b/tests/driver_ata8520e/Makefile index 207c000bba..b1034cf29d 100644 --- a/tests/driver_ata8520e/Makefile +++ b/tests/driver_ata8520e/Makefile @@ -1,5 +1,7 @@ include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + USEMODULE += ata8520e USEMODULE += shell USEMODULE += shell_commands diff --git a/tests/driver_dynamixel/Makefile b/tests/driver_dynamixel/Makefile index 02a8bfaf4f..2f62c7eec7 100644 --- a/tests/driver_dynamixel/Makefile +++ b/tests/driver_dynamixel/Makefile @@ -1,5 +1,7 @@ include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + # chronos : USART_1 undeclared BOARD_BLACKLIST += chronos diff --git a/tests/driver_enc28j60/Makefile b/tests/driver_enc28j60/Makefile index c076504011..21e3a1f1ac 100644 --- a/tests/driver_enc28j60/Makefile +++ b/tests/driver_enc28j60/Makefile @@ -1,9 +1,10 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := msb-430 msb-430h nucleo-f334r8 nucleo-l053r8 \ +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + msb-430 msb-430h nucleo-f334r8 nucleo-l053r8 \ nucleo-f031k6 nucleo-f042k6 nucleo-f303k8 \ nucleo-l031k6 stm32f0discovery telosb \ - wsn430-v1_3b wsn430-v1_4 z1 + waspmote-pro wsn430-v1_3b wsn430-v1_4 z1 USEMODULE += auto_init_gnrc_netif USEMODULE += enc28j60 diff --git a/tests/driver_encx24j600/Makefile b/tests/driver_encx24j600/Makefile index ecc13d8027..9082707993 100644 --- a/tests/driver_encx24j600/Makefile +++ b/tests/driver_encx24j600/Makefile @@ -1,9 +1,10 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := msb-430 msb-430h \ +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + msb-430 msb-430h \ nucleo-l053r8 nucleo-f031k6 nucleo-f042k6 \ nucleo-l031k6 stm32f0discovery telosb \ - wsn430-v1_3b wsn430-v1_4 z1 + waspmote-pro wsn430-v1_3b wsn430-v1_4 z1 USEMODULE += auto_init_gnrc_netif USEMODULE += encx24j600 diff --git a/tests/driver_feetech/Makefile b/tests/driver_feetech/Makefile index cb6dc092d2..d2ff4c2daf 100644 --- a/tests/driver_feetech/Makefile +++ b/tests/driver_feetech/Makefile @@ -1,5 +1,7 @@ include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + # chronos : USART_1 undeclared BOARD_BLACKLIST += chronos diff --git a/tests/driver_kw2xrf/Makefile b/tests/driver_kw2xrf/Makefile index 30d73b498e..1d84f44c1f 100644 --- a/tests/driver_kw2xrf/Makefile +++ b/tests/driver_kw2xrf/Makefile @@ -1,7 +1,9 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 \ - nucleo-f334r8 nucleo-l053r8 stm32f0discovery +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 \ + nucleo-f334r8 nucleo-l053r8 stm32f0discovery \ + waspmote-pro USEMODULE += auto_init_gnrc_netif USEMODULE += gnrc_netdev_default diff --git a/tests/driver_nrf24l01p_lowlevel/Makefile b/tests/driver_nrf24l01p_lowlevel/Makefile index f92e752b5d..1d3d63d62c 100644 --- a/tests/driver_nrf24l01p_lowlevel/Makefile +++ b/tests/driver_nrf24l01p_lowlevel/Makefile @@ -1,7 +1,7 @@ include ../Makefile.tests_common # exclude boards with insufficient memory -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno nucleo-f031k6 USEMODULE += shell USEMODULE += shell_commands diff --git a/tests/driver_pcd8544/Makefile b/tests/driver_pcd8544/Makefile index 7ffddd13af..7ce87b96fb 100644 --- a/tests/driver_pcd8544/Makefile +++ b/tests/driver_pcd8544/Makefile @@ -1,5 +1,7 @@ include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + USEMODULE += shell USEMODULE += pcd8544 diff --git a/tests/driver_rn2xx3/Makefile b/tests/driver_rn2xx3/Makefile index 743e9be136..e7f53a4311 100644 --- a/tests/driver_rn2xx3/Makefile +++ b/tests/driver_rn2xx3/Makefile @@ -1,5 +1,7 @@ include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + DRIVER ?= rn2483 USEMODULE += $(DRIVER) diff --git a/tests/driver_sdcard_spi/Makefile b/tests/driver_sdcard_spi/Makefile index e1e25a67b3..4f434f2939 100644 --- a/tests/driver_sdcard_spi/Makefile +++ b/tests/driver_sdcard_spi/Makefile @@ -1,7 +1,7 @@ include ../Makefile.tests_common # exclude boards with insufficient memory -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno nucleo-f031k6 USEMODULE += sdcard_spi USEMODULE += auto_init_storage diff --git a/tests/driver_sht1x/Makefile b/tests/driver_sht1x/Makefile index 4c51663c52..0a8abefbb7 100644 --- a/tests/driver_sht1x/Makefile +++ b/tests/driver_sht1x/Makefile @@ -1,5 +1,7 @@ include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + DRIVER ?= sht11 BOARD ?= msba2 diff --git a/tests/driver_srf02/Makefile b/tests/driver_srf02/Makefile index 8eab7f2a2d..625345ec52 100644 --- a/tests/driver_srf02/Makefile +++ b/tests/driver_srf02/Makefile @@ -1,5 +1,7 @@ include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + USEMODULE += xtimer USEMODULE += srf02 USEMODULE += shell diff --git a/tests/driver_sx127x/Makefile b/tests/driver_sx127x/Makefile index b64a23ca2d..6c449570f8 100644 --- a/tests/driver_sx127x/Makefile +++ b/tests/driver_sx127x/Makefile @@ -1,6 +1,6 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno nucleo-f031k6 BOARD ?= nucleo-l152re diff --git a/tests/driver_xbee/Makefile b/tests/driver_xbee/Makefile index cd0128b011..84d09bfa1b 100644 --- a/tests/driver_xbee/Makefile +++ b/tests/driver_xbee/Makefile @@ -1,6 +1,7 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 nucleo-f042k6 nucleo-f030r8 nucleo-f334r8 \ +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno nucleo-f031k6 \ + nucleo-f042k6 nucleo-f030r8 nucleo-f334r8 \ stm32f0discovery USEMODULE += xbee From 4a9187f74c8f4ff41acb849a0df9fd01e682bf5a Mon Sep 17 00:00:00 2001 From: cladmi Date: Fri, 17 Aug 2018 11:28:32 +0200 Subject: [PATCH 03/24] tests/gnrc: blacklist arduino boards based on ROM/RAM overflow --- tests/gnrc_ipv6_ext/Makefile | 5 +++-- tests/gnrc_ipv6_nib/Makefile | 3 ++- tests/gnrc_ipv6_nib_6ln/Makefile | 5 +++-- tests/gnrc_ndp/Makefile | 5 +++-- tests/gnrc_netif/Makefile | 19 +++++++++++-------- tests/gnrc_sixlowpan/Makefile | 6 ++++-- tests/gnrc_sock_dns/Makefile | 5 +++-- tests/gnrc_sock_ip/Makefile | 3 ++- tests/gnrc_sock_udp/Makefile | 3 ++- tests/gnrc_tcp_client/Makefile | 2 +- tests/gnrc_tcp_server/Makefile | 2 +- tests/gnrc_udp/Makefile | 6 ++++-- 12 files changed, 39 insertions(+), 25 deletions(-) diff --git a/tests/gnrc_ipv6_ext/Makefile b/tests/gnrc_ipv6_ext/Makefile index 92821586f9..b33b1217fe 100644 --- a/tests/gnrc_ipv6_ext/Makefile +++ b/tests/gnrc_ipv6_ext/Makefile @@ -1,10 +1,11 @@ # name of your application include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := chronos msb-430 msb-430h nucleo-f030r8 \ +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + chronos msb-430 msb-430h nucleo-f030r8 \ nucleo-f031k6 nucleo-f042k6 nucleo-f303k8 \ nucleo-f334r8 nucleo-l031k6 nucleo-l053r8 \ - stm32f0discovery + stm32f0discovery waspmote-pro # use Ethernet as link-layer protocol USEMODULE += netdev_eth diff --git a/tests/gnrc_ipv6_nib/Makefile b/tests/gnrc_ipv6_nib/Makefile index c1a28d2ecd..784070b893 100644 --- a/tests/gnrc_ipv6_nib/Makefile +++ b/tests/gnrc_ipv6_nib/Makefile @@ -1,6 +1,7 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := chronos nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 \ +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno \ + chronos nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 \ telosb wsn430-v1_3b wsn430-v1_4 USEMODULE += gnrc_ipv6 diff --git a/tests/gnrc_ipv6_nib_6ln/Makefile b/tests/gnrc_ipv6_nib_6ln/Makefile index 01997982d5..e1730d8cca 100644 --- a/tests/gnrc_ipv6_nib_6ln/Makefile +++ b/tests/gnrc_ipv6_nib_6ln/Makefile @@ -1,8 +1,9 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := chronos nucleo-f030r8 nucleo-l053r8 nucleo-f031k6 \ +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + chronos nucleo-f030r8 nucleo-l053r8 nucleo-f031k6 \ nucleo-l031k6 nucleo-f042k6 stm32f0discovery \ - telosb wsn430-v1_3b wsn430-v1_4 + telosb waspmote-pro wsn430-v1_3b wsn430-v1_4 USEMODULE += gnrc_ipv6 USEMODULE += gnrc_sixlowpan diff --git a/tests/gnrc_ndp/Makefile b/tests/gnrc_ndp/Makefile index f4b72ea451..3420d0e98c 100644 --- a/tests/gnrc_ndp/Makefile +++ b/tests/gnrc_ndp/Makefile @@ -1,7 +1,8 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := chronos nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 \ - telosb wsn430-v1_3b wsn430-v1_4 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + chronos nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 \ + telosb waspmote-pro wsn430-v1_3b wsn430-v1_4 USEMODULE += gnrc_ipv6_nib_router USEMODULE += gnrc_ndp diff --git a/tests/gnrc_netif/Makefile b/tests/gnrc_netif/Makefile index 51a67dc715..78b4840958 100644 --- a/tests/gnrc_netif/Makefile +++ b/tests/gnrc_netif/Makefile @@ -1,13 +1,16 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := airfy-beacon b-l072z-lrwan1 bluepill calliope-mini \ - cc2650-launchpad cc2650stk chronos hifive1 maple-mini \ - microbit msb-430 msb-430h nrf51dongle nrf6310 \ - nucleo-f030r8 nucleo-f070rb nucleo-f072rb nucleo-f103rb \ - nucleo-f302r8 nucleo-f334r8 nucleo-l053r8 nucleo-l073rz \ - nucleo-f031k6 nucleo-f042k6 nucleo-f303k8 \ - nucleo-l031k6 opencm904 spark-core \ - stm32f0discovery stm32mindev telosb \ +BOARD_INSUFFICIENT_MEMORY := airfy-beacon arduino-duemilanove arduino-mega2560 \ + arduino-uno b-l072z-lrwan1 bluepill calliope-mini \ + cc2650-launchpad cc2650stk chronos hifive1 \ + maple-mini mega-xplained microbit \ + msb-430 msb-430h nrf51dongle nrf6310 \ + nucleo-f030r8 nucleo-f070rb nucleo-f072rb \ + nucleo-f103rb nucleo-f302r8 nucleo-f334r8 \ + nucleo-l053r8 nucleo-l073rz nucleo-f031k6 \ + nucleo-f042k6 nucleo-f303k8 nucleo-l031k6 \ + opencm904 spark-core stm32f0discovery stm32mindev \ + telosb waspmote-pro \ wsn430-v1_3b wsn430-v1_4 yunjia-nrf51822 z1 USEMODULE += embunit diff --git a/tests/gnrc_sixlowpan/Makefile b/tests/gnrc_sixlowpan/Makefile index 2aac2e8cf4..c46439ecff 100644 --- a/tests/gnrc_sixlowpan/Makefile +++ b/tests/gnrc_sixlowpan/Makefile @@ -1,11 +1,13 @@ # name of your application include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := chronos hifive1 msb-430 msb-430h nucleo-f030r8 \ +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + chronos hifive1 msb-430 msb-430h nucleo-f030r8 \ nucleo-f031k6 nucleo-f042k6 nucleo-f070rb \ nucleo-f070rb nucleo-f072rb nucleo-f303k8 \ nucleo-f334r8 nucleo-l031k6 nucleo-l053r8 \ - stm32f0discovery telosb wsn430-v1_3b wsn430-v1_4 z1 + stm32f0discovery telosb waspmote-pro \ + wsn430-v1_3b wsn430-v1_4 z1 # use IEEE 802.15.4 as link-layer protocol USEMODULE += netdev_ieee802154 diff --git a/tests/gnrc_sock_dns/Makefile b/tests/gnrc_sock_dns/Makefile index c207e1052f..4ef2c75de3 100644 --- a/tests/gnrc_sock_dns/Makefile +++ b/tests/gnrc_sock_dns/Makefile @@ -2,9 +2,10 @@ include ../Makefile.tests_common RIOTBASE ?= $(CURDIR)/../.. -BOARD_INSUFFICIENT_MEMORY := chronos telosb nucleo-f042k6 nucleo-f031k6 \ +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + chronos telosb nucleo-f042k6 nucleo-f031k6 \ nucleo-f030r8 nucleo-f303k8 nucleo-l053r8 \ - nucleo-l031k6 stm32f0discovery z1 + nucleo-l031k6 stm32f0discovery waspmote-pro z1 USEMODULE += sock_dns USEMODULE += gnrc_sock_udp diff --git a/tests/gnrc_sock_ip/Makefile b/tests/gnrc_sock_ip/Makefile index a437af7174..1d1b55fe14 100644 --- a/tests/gnrc_sock_ip/Makefile +++ b/tests/gnrc_sock_ip/Makefile @@ -1,6 +1,7 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := chronos nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno \ + chronos nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 USEMODULE += gnrc_sock_ip USEMODULE += gnrc_ipv6 diff --git a/tests/gnrc_sock_udp/Makefile b/tests/gnrc_sock_udp/Makefile index e4b922e6aa..7cb3e91142 100644 --- a/tests/gnrc_sock_udp/Makefile +++ b/tests/gnrc_sock_udp/Makefile @@ -1,6 +1,7 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := chronos nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno \ + chronos nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 USEMODULE += gnrc_sock_check_reuse USEMODULE += gnrc_sock_udp diff --git a/tests/gnrc_tcp_client/Makefile b/tests/gnrc_tcp_client/Makefile index 42f60f0911..70427a045b 100644 --- a/tests/gnrc_tcp_client/Makefile +++ b/tests/gnrc_tcp_client/Makefile @@ -15,7 +15,7 @@ BOARD_INSUFFICIENT_MEMORY := airfy-beacon arduino-duemilanove arduino-mega2560 \ nucleo-f042k6 nucleo-f303k8 nucleo-l031k6 nucleo-f030r8 \ nucleo-f070rb nucleo-f072rb nucleo-f302r8 nucleo-f334r8 nucleo-l053r8 \ sb-430 sb-430h stm32f0discovery telosb \ - wsn430-v1_3b wsn430-v1_4 yunjia-nrf51822 z1 + waspmote-pro wsn430-v1_3b wsn430-v1_4 yunjia-nrf51822 z1 # Target Address, Target Port and number of Test Cycles CFLAGS += -DTARGET_ADDR=\"$(TCP_TARGET_ADDR)\" diff --git a/tests/gnrc_tcp_server/Makefile b/tests/gnrc_tcp_server/Makefile index 0ea14225b2..fcbeb7ebcf 100644 --- a/tests/gnrc_tcp_server/Makefile +++ b/tests/gnrc_tcp_server/Makefile @@ -15,7 +15,7 @@ BOARD_INSUFFICIENT_MEMORY := airfy-beacon arduino-duemilanove arduino-mega2560 \ nucleo-f042k6 nucleo-f303k8 nucleo-l031k6 nucleo-f030r8 \ nucleo-f070rb nucleo-f072rb nucleo-f302r8 nucleo-f334r8 nucleo-l053r8 \ sb-430 sb-430h stm32f0discovery telosb \ - wsn430-v1_3b wsn430-v1_4 yunjia-nrf51822 z1 + waspmote-pro wsn430-v1_3b wsn430-v1_4 yunjia-nrf51822 z1 # This has to be the absolute path to the RIOT base directory: RIOTBASE ?= $(CURDIR)/../.. diff --git a/tests/gnrc_udp/Makefile b/tests/gnrc_udp/Makefile index 9496288ee7..f5bad0c7c8 100644 --- a/tests/gnrc_udp/Makefile +++ b/tests/gnrc_udp/Makefile @@ -1,10 +1,12 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := calliope-mini chronos hifive1 microbit msb-430 msb-430h \ +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + calliope-mini chronos hifive1 mega-xplained \ + microbit msb-430 msb-430h \ nucleo-f031k6 nucleo-f042k6 nucleo-f303k8 nucleo-l031k6 \ nucleo-f030r8 nucleo-f070rb nucleo-f072rb nucleo-f103rb nucleo-f302r8 \ nucleo-f334r8 nucleo-l053r8 spark-core stm32f0discovery telosb \ - wsn430-v1_3b wsn430-v1_4 z1 + waspmote-pro wsn430-v1_3b wsn430-v1_4 z1 USEMODULE += gnrc_netdev_default USEMODULE += auto_init_gnrc_netif From 661868cf4e1a020f26420eb3292d55a5cb6138c8 Mon Sep 17 00:00:00 2001 From: cladmi Date: Fri, 17 Aug 2018 11:35:54 +0200 Subject: [PATCH 04/24] tests/periph: blacklist arduino boards based on ROM/RAM overflow --- tests/periph_gpio/Makefile | 2 ++ tests/periph_i2c/Makefile | 2 ++ tests/periph_spi/Makefile | 2 ++ tests/periph_timer/Makefile | 2 ++ tests/periph_uart/Makefile | 2 +- 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/periph_gpio/Makefile b/tests/periph_gpio/Makefile index 0f7a94789c..d85c7857fa 100644 --- a/tests/periph_gpio/Makefile +++ b/tests/periph_gpio/Makefile @@ -1,5 +1,7 @@ include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + FEATURES_REQUIRED = periph_gpio FEATURES_REQUIRED = periph_gpio_irq diff --git a/tests/periph_i2c/Makefile b/tests/periph_i2c/Makefile index 1aa079ca54..1330f7d5e8 100644 --- a/tests/periph_i2c/Makefile +++ b/tests/periph_i2c/Makefile @@ -1,6 +1,8 @@ BOARD ?= samr21-xpro include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + FEATURES_REQUIRED = periph_i2c USEMODULE += shell diff --git a/tests/periph_spi/Makefile b/tests/periph_spi/Makefile index 08c878f652..41ddca047d 100644 --- a/tests/periph_spi/Makefile +++ b/tests/periph_spi/Makefile @@ -1,6 +1,8 @@ BOARD ?= samr21-xpro include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + FEATURES_REQUIRED = periph_spi USEMODULE += xtimer diff --git a/tests/periph_timer/Makefile b/tests/periph_timer/Makefile index 15a83f2b06..ed54ce0ab5 100644 --- a/tests/periph_timer/Makefile +++ b/tests/periph_timer/Makefile @@ -1,5 +1,7 @@ include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + FEATURES_REQUIRED = periph_timer TEST_ON_CI_WHITELIST += all diff --git a/tests/periph_uart/Makefile b/tests/periph_uart/Makefile index 5047bb56da..41a176e74d 100644 --- a/tests/periph_uart/Makefile +++ b/tests/periph_uart/Makefile @@ -1,6 +1,6 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno nucleo-f031k6 FEATURES_REQUIRED = periph_uart From 725d3d9bcd300d6c05d80e66674d69184593406f Mon Sep 17 00:00:00 2001 From: cladmi Date: Fri, 17 Aug 2018 11:42:28 +0200 Subject: [PATCH 05/24] tests/pkg: blacklist arduino boards based on ROM/RAM overflow --- tests/pkg_fatfs/Makefile | 2 ++ tests/pkg_fatfs_vfs/Makefile | 3 ++- tests/pkg_micro-ecc/Makefile | 2 ++ tests/pkg_microcoap/Makefile | 8 +++++--- tests/pkg_semtech-loramac/Makefile | 3 ++- tests/pkg_tiny-asn1/Makefile | 2 ++ tests/pkg_u8g2/Makefile | 3 ++- tests/pkg_ucglib/Makefile | 3 +++ 8 files changed, 20 insertions(+), 6 deletions(-) diff --git a/tests/pkg_fatfs/Makefile b/tests/pkg_fatfs/Makefile index b9e0e98398..ba471515e5 100644 --- a/tests/pkg_fatfs/Makefile +++ b/tests/pkg_fatfs/Makefile @@ -2,6 +2,8 @@ include ../Makefile.tests_common BOARD ?= native +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + FEATURES_OPTIONAL += periph_rtc # this list is composed of boards that support spi/gpio + native diff --git a/tests/pkg_fatfs_vfs/Makefile b/tests/pkg_fatfs_vfs/Makefile index 2df78d9ded..d04164ca8a 100644 --- a/tests/pkg_fatfs_vfs/Makefile +++ b/tests/pkg_fatfs_vfs/Makefile @@ -25,7 +25,8 @@ else USEMODULE += mtd_sdcard endif -BOARD_INSUFFICIENT_MEMORY := msb-430 msb-430h nucleo-f031k6 telosb \ +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno \ + msb-430 msb-430h nucleo-f031k6 telosb \ wsn430-v1_3b wsn430-v1_4 z1 # this list is composed of boards with sufficient memory and support spi/gpio + native diff --git a/tests/pkg_micro-ecc/Makefile b/tests/pkg_micro-ecc/Makefile index 2278cd1e91..a9d2935d72 100644 --- a/tests/pkg_micro-ecc/Makefile +++ b/tests/pkg_micro-ecc/Makefile @@ -1,5 +1,7 @@ include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + USEMODULE += hashes USEPKG += micro-ecc diff --git a/tests/pkg_microcoap/Makefile b/tests/pkg_microcoap/Makefile index b7b5479d0a..6f0a3fa187 100644 --- a/tests/pkg_microcoap/Makefile +++ b/tests/pkg_microcoap/Makefile @@ -1,8 +1,10 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := chronos msb-430 msb-430h nucleo-f031k6 nucleo-f042k6 \ - nucleo-f303k8 nucleo-l031k6 nucleo-f030r8 \ - nucleo-l053r8 stm32f0discovery telosb z1 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + chronos msb-430 msb-430h nucleo-f031k6 \ + nucleo-f042k6 nucleo-f303k8 nucleo-l031k6 \ + nucleo-f030r8 nucleo-l053r8 stm32f0discovery \ + telosb waspmote-pro z1 # Include packages that pull up and auto-init the link layer. # NOTE: 6LoWPAN will be included if IEEE802.15.4 devices are present diff --git a/tests/pkg_semtech-loramac/Makefile b/tests/pkg_semtech-loramac/Makefile index 2a08494661..2324bba50e 100644 --- a/tests/pkg_semtech-loramac/Makefile +++ b/tests/pkg_semtech-loramac/Makefile @@ -2,7 +2,8 @@ BOARD ?= b-l072z-lrwan1 include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno \ + nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 BOARD_BLACKLIST := msb-430 msb-430h telosb wsn430-v1_3b wsn430-v1_4 z1 diff --git a/tests/pkg_tiny-asn1/Makefile b/tests/pkg_tiny-asn1/Makefile index e47e3642ac..c3f90123bf 100644 --- a/tests/pkg_tiny-asn1/Makefile +++ b/tests/pkg_tiny-asn1/Makefile @@ -1,5 +1,7 @@ include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + BOARD_BLACKLIST := wsn430-v1_3b wsn430-v1_4 USEPKG += tiny-asn1 diff --git a/tests/pkg_u8g2/Makefile b/tests/pkg_u8g2/Makefile index b1bcc9660b..3fb3e40a7d 100644 --- a/tests/pkg_u8g2/Makefile +++ b/tests/pkg_u8g2/Makefile @@ -1,6 +1,7 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := chronos msb-430 msb-430h nucleo-f031k6 telosb \ +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno \ + chronos msb-430 msb-430h nucleo-f031k6 telosb \ wsn430-v1_3b wsn430-v1_4 z1 USEMODULE += xtimer diff --git a/tests/pkg_ucglib/Makefile b/tests/pkg_ucglib/Makefile index 8133b1d6a2..e8bc8a5e15 100644 --- a/tests/pkg_ucglib/Makefile +++ b/tests/pkg_ucglib/Makefile @@ -1,5 +1,8 @@ include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + waspmote-pro + USEMODULE += xtimer USEPKG += ucglib From fc6c06992f8dfe880be445a865bbca1c58683c25 Mon Sep 17 00:00:00 2001 From: cladmi Date: Fri, 17 Aug 2018 11:51:41 +0200 Subject: [PATCH 06/24] tests/thread: blacklist arduino boards based on ROM/RAM overflow --- tests/thread_cooperation/Makefile | 3 ++- tests/thread_msg/Makefile | 3 ++- tests/thread_msg_seq/Makefile | 3 ++- tests/thread_priority_inversion/Makefile | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/tests/thread_cooperation/Makefile b/tests/thread_cooperation/Makefile index 893d1c0c59..a237e853a8 100644 --- a/tests/thread_cooperation/Makefile +++ b/tests/thread_cooperation/Makefile @@ -1,6 +1,7 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := chronos msb-430 msb-430h nucleo-f031k6 \ +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno \ + chronos msb-430 msb-430h nucleo-f031k6 \ nucleo-f303k8 DISABLE_MODULE += auto_init diff --git a/tests/thread_msg/Makefile b/tests/thread_msg/Makefile index de021461e5..b8ecb27785 100644 --- a/tests/thread_msg/Makefile +++ b/tests/thread_msg/Makefile @@ -1,6 +1,7 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 nucleo-f042k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno \ + nucleo-f031k6 nucleo-f042k6 DISABLE_MODULE += auto_init diff --git a/tests/thread_msg_seq/Makefile b/tests/thread_msg_seq/Makefile index 6b90efb538..e84269ad9b 100644 --- a/tests/thread_msg_seq/Makefile +++ b/tests/thread_msg_seq/Makefile @@ -1,6 +1,7 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 nucleo-f042k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno \ + nucleo-f031k6 nucleo-f042k6 DISABLE_MODULE += auto_init diff --git a/tests/thread_priority_inversion/Makefile b/tests/thread_priority_inversion/Makefile index fb68091e21..19dbce64e1 100644 --- a/tests/thread_priority_inversion/Makefile +++ b/tests/thread_priority_inversion/Makefile @@ -1,7 +1,8 @@ include ../Makefile.tests_common + USEMODULE += xtimer -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno nucleo-f031k6 include $(RIOTBASE)/Makefile.include From ad6f6fcb0304fb61eafb14da1542f2bc8ebb79d4 Mon Sep 17 00:00:00 2001 From: cladmi Date: Fri, 17 Aug 2018 11:52:03 +0200 Subject: [PATCH 07/24] tests/xtimer: blacklist arduino boards based on ROM/RAM overflow --- tests/xtimer_drift/Makefile | 3 ++- tests/xtimer_longterm/Makefile | 3 ++- tests/xtimer_periodic_wakeup/Makefile | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/xtimer_drift/Makefile b/tests/xtimer_drift/Makefile index 0a59269b71..78cb3c36c9 100644 --- a/tests/xtimer_drift/Makefile +++ b/tests/xtimer_drift/Makefile @@ -1,6 +1,7 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 nucleo-f042k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno \ + nucleo-f031k6 nucleo-f042k6 USEMODULE += xtimer diff --git a/tests/xtimer_longterm/Makefile b/tests/xtimer_longterm/Makefile index 0a59269b71..78cb3c36c9 100644 --- a/tests/xtimer_longterm/Makefile +++ b/tests/xtimer_longterm/Makefile @@ -1,6 +1,7 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 nucleo-f042k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno \ + nucleo-f031k6 nucleo-f042k6 USEMODULE += xtimer diff --git a/tests/xtimer_periodic_wakeup/Makefile b/tests/xtimer_periodic_wakeup/Makefile index c5da8cf323..1789adbfdd 100644 --- a/tests/xtimer_periodic_wakeup/Makefile +++ b/tests/xtimer_periodic_wakeup/Makefile @@ -1,6 +1,6 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := chronos +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno chronos USEMODULE += xtimer From 6942c376df9eb7d8830368afaba4f178180e1f3b Mon Sep 17 00:00:00 2001 From: cladmi Date: Fri, 17 Aug 2018 11:52:38 +0200 Subject: [PATCH 08/24] tests/: blacklist arduino boards based on ROM/RAM overflow --- tests/bench_timers/Makefile | 2 ++ tests/bloom_bytes/Makefile | 4 ++-- tests/can_trx/Makefile | 2 ++ tests/conn_can/Makefile | 12 +++++++----- tests/emb6/Makefile | 7 ++++--- tests/mutex_order/Makefile | 5 +++-- tests/netdev_test/Makefile | 2 +- tests/posix_semaphore/Makefile | 10 ++++++---- tests/ps_schedstatistics/Makefile | 9 +++++---- tests/rmutex/Makefile | 5 +++-- tests/slip/Makefile | 6 ++++-- tests/sntp/Makefile | 6 ++++-- 12 files changed, 43 insertions(+), 27 deletions(-) diff --git a/tests/bench_timers/Makefile b/tests/bench_timers/Makefile index 11675236f5..700ffdbc90 100644 --- a/tests/bench_timers/Makefile +++ b/tests/bench_timers/Makefile @@ -1,5 +1,7 @@ include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + # These boards only have a single timer in their periph_conf.h, needs special # CFLAGS configuration to build properly SINGLE_TIMER_BOARDS = \ diff --git a/tests/bloom_bytes/Makefile b/tests/bloom_bytes/Makefile index 243a721da1..7e6e7aed9c 100644 --- a/tests/bloom_bytes/Makefile +++ b/tests/bloom_bytes/Makefile @@ -1,7 +1,7 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := chronos msb-430 msb-430h telosb wsn430-v1_3b \ - wsn430-v1_4 z1 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno chronos \ + msb-430 msb-430h telosb wsn430-v1_3b wsn430-v1_4 z1 USEMODULE += hashes USEMODULE += bloom diff --git a/tests/can_trx/Makefile b/tests/can_trx/Makefile index fab8275842..d887f961a3 100644 --- a/tests/can_trx/Makefile +++ b/tests/can_trx/Makefile @@ -1,6 +1,8 @@ export APPLICATION = can_trx include ../Makefile.tests_common +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno + USEMODULE += shell USEMODULE += shell_commands USEMODULE += ps diff --git a/tests/conn_can/Makefile b/tests/conn_can/Makefile index 35fde68429..959231f6d5 100644 --- a/tests/conn_can/Makefile +++ b/tests/conn_can/Makefile @@ -1,10 +1,12 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := chronos hifive1 msb-430 msb-430h nucleo-f031k6 nucleo-f042k6 \ - nucleo-f303k8 nucleo-l031k6 nucleo-f030r8 nucleo-f070rb \ - nucleo-f072rb nucleo-f302r8 nucleo-f303re nucleo-f334r8 \ - nucleo-l053r8 stm32f0discovery telosb wsn430-v1_3b \ - wsn430-v1_4 z1 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + chronos hifive1 msb-430 msb-430h nucleo-f031k6 \ + nucleo-f042k6 nucleo-f303k8 nucleo-l031k6 \ + nucleo-f030r8 nucleo-f070rb nucleo-f072rb \ + nucleo-f302r8 nucleo-f303re nucleo-f334r8 \ + nucleo-l053r8 stm32f0discovery telosb \ + waspmote-pro wsn430-v1_3b wsn430-v1_4 z1 CFLAGS += -DLOG_LEVEL=LOG_ALL diff --git a/tests/emb6/Makefile b/tests/emb6/Makefile index 3a5a979ab6..1063f65693 100644 --- a/tests/emb6/Makefile +++ b/tests/emb6/Makefile @@ -5,9 +5,10 @@ include ../Makefile.tests_common # MSP-430 doesn't support C11's atomic functionality yet BOARD_BLACKLIST := msb-430 msb-430h telosb wsn430-v1_3b wsn430-v1_4 z1 -BOARD_INSUFFICIENT_MEMORY := msb-430 msb-430h nucleo-l031k6 nucleo-f031k6 \ - nucleo-f042k6 nucleo-l053r8 stm32f0discovery telosb \ - wsn430-v1_3b wsn430-v1_4 z1 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno \ + msb-430 msb-430h nucleo-l031k6 nucleo-f031k6 \ + nucleo-f042k6 nucleo-l053r8 stm32f0discovery \ + telosb wsn430-v1_3b wsn430-v1_4 z1 USEPKG += emb6 diff --git a/tests/mutex_order/Makefile b/tests/mutex_order/Makefile index a27f69488a..50b19f2d4c 100644 --- a/tests/mutex_order/Makefile +++ b/tests/mutex_order/Makefile @@ -1,7 +1,8 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 nucleo-f030r8 \ - nucleo-l053r8 stm32f0discovery +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno \ + nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 \ + nucleo-f030r8 nucleo-l053r8 stm32f0discovery # list of boards to run CI tests on TEST_ON_CI_WHITELIST += all diff --git a/tests/netdev_test/Makefile b/tests/netdev_test/Makefile index eae854b252..c21964f7c7 100644 --- a/tests/netdev_test/Makefile +++ b/tests/netdev_test/Makefile @@ -4,7 +4,7 @@ CFLAGS += -DNDEBUG include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno nucleo-f031k6 DISABLE_MODULE = auto_init diff --git a/tests/posix_semaphore/Makefile b/tests/posix_semaphore/Makefile index a23002e7f6..d8020e8dce 100644 --- a/tests/posix_semaphore/Makefile +++ b/tests/posix_semaphore/Makefile @@ -1,9 +1,11 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := chronos mbed_lpc1768 msb-430 msb-430h nrf6310 \ - nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 nucleo-f030r8 \ - nucleo-f303k8 nucleo-f334r8 nucleo-l053r8 \ - spark-core stm32f0discovery yunjia-nrf51822 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno \ + chronos mbed_lpc1768 msb-430 msb-430h nrf6310 \ + nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 \ + nucleo-f030r8 nucleo-f303k8 nucleo-f334r8 \ + nucleo-l053r8 spark-core stm32f0discovery \ + yunjia-nrf51822 USEMODULE += fmt USEMODULE += posix_semaphore diff --git a/tests/ps_schedstatistics/Makefile b/tests/ps_schedstatistics/Makefile index 862dd8b714..da3c3cb200 100644 --- a/tests/ps_schedstatistics/Makefile +++ b/tests/ps_schedstatistics/Makefile @@ -1,9 +1,10 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := chronos msb-430 msb-430h nucleo-f030r8 nucleo-l053r8 \ - nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 \ - stm32f0discovery telosb wsn430-v1_3b \ - wsn430-v1_4 z1 +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno \ + chronos msb-430 msb-430h nucleo-f030r8 \ + nucleo-l053r8 nucleo-f031k6 nucleo-f042k6 \ + nucleo-l031k6 stm32f0discovery telosb \ + wsn430-v1_3b wsn430-v1_4 z1 USEMODULE += shell USEMODULE += shell_commands diff --git a/tests/rmutex/Makefile b/tests/rmutex/Makefile index aa662e3963..f094dbda49 100644 --- a/tests/rmutex/Makefile +++ b/tests/rmutex/Makefile @@ -1,7 +1,8 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 nucleo-f030r8 \ - nucleo-l053r8 stm32f0discovery +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-uno \ + nucleo-f031k6 nucleo-f042k6 nucleo-l031k6 \ + nucleo-f030r8 nucleo-l053r8 stm32f0discovery TEST_ON_CI_WHITELIST += all diff --git a/tests/slip/Makefile b/tests/slip/Makefile index d800f18d11..6ea1647fad 100644 --- a/tests/slip/Makefile +++ b/tests/slip/Makefile @@ -1,8 +1,10 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := msb-430 msb-430h nucleo-f031k6 nucleo-f042k6 \ +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + msb-430 msb-430h nucleo-f031k6 nucleo-f042k6 \ nucleo-l031k6 nucleo-f030r8 nucleo-f303k8 \ - nucleo-f334r8 nucleo-l053r8 stm32f0discovery + nucleo-f334r8 nucleo-l053r8 stm32f0discovery \ + waspmote-pro BOARD_BLACKLIST += mips-malta diff --git a/tests/sntp/Makefile b/tests/sntp/Makefile index 7621932b87..cd0a9f5bc1 100644 --- a/tests/sntp/Makefile +++ b/tests/sntp/Makefile @@ -1,9 +1,11 @@ include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := chronos msb-430 msb-430h nucleo-f031k6 \ +BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove arduino-mega2560 arduino-uno \ + chronos msb-430 msb-430h nucleo-f031k6 \ nucleo-f042k6 nucleo-l031k6 nucleo-f030r8 \ nucleo-f303k8 nucleo-f334r8 nucleo-l053r8 \ - stm32f0discovery telosb wsn430-v1_3b wsn430-v1_4 z1 + stm32f0discovery telosb waspmote-pro \ + wsn430-v1_3b wsn430-v1_4 z1 USEMODULE += sntp USEMODULE += gnrc_sock_udp From 6e148bcf1b0ab57bb5ddeb0412a7e1bb72d1f2ec Mon Sep 17 00:00:00 2001 From: cladmi Date: Wed, 15 Aug 2018 13:12:54 +0200 Subject: [PATCH 09/24] atmega_common: allow defining rom and ram length for link. Allow configuring __TEXT_REGION_LENGTH__ and __DATA_REGION_LENGTH__ linkerscript variables using ROM_LEN and RAM_LEN makefile variables. --- cpu/atmega_common/Makefile.include | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cpu/atmega_common/Makefile.include b/cpu/atmega_common/Makefile.include index 717ec08ab6..5afff062bb 100644 --- a/cpu/atmega_common/Makefile.include +++ b/cpu/atmega_common/Makefile.include @@ -26,3 +26,8 @@ ifeq ($(LTO),1) # See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59396 export LINKFLAGS += -Wno-error endif + +# Use ROM_LEN and RAM_LEN during link +# It is made optional until all boards are updated +LINKFLAGS += $(if $(ROM_LEN),$(LINKFLAGPREFIX)--defsym=__TEXT_REGION_LENGTH__=$(ROM_LEN)) +LINKFLAGS += $(if $(RAM_LEN),$(LINKFLAGPREFIX)--defsym=__DATA_REGION_LENGTH__=$(RAM_LEN)) From 56a1ac4f2b158cb6859d09a9e73754d76699e5cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Harter?= Date: Wed, 15 Aug 2018 14:18:01 +0200 Subject: [PATCH 10/24] cpu/atmega: add avr-binutils 2.26 linkerscripts Generated by extracting the output of avr-gcc -Wl,--verbose --mmcu=$(CPU) With avr-binutils 2.26 --- cpu/atmega1281/ldscripts_compat/README.md | 8 + cpu/atmega1281/ldscripts_compat/avr_2.26.ld | 262 ++++++++++++++++++ cpu/atmega1284p/ldscripts_compat/README.md | 8 + cpu/atmega1284p/ldscripts_compat/avr_2.26.ld | 262 ++++++++++++++++++ cpu/atmega2560/ldscripts_compat/README.md | 8 + cpu/atmega2560/ldscripts_compat/avr_2.26.ld | 262 ++++++++++++++++++ cpu/atmega256rfr2/ldscripts_compat/README.md | 8 + .../ldscripts_compat/avr_2.26.ld | 262 ++++++++++++++++++ cpu/atmega328p/ldscripts_compat/README.md | 8 + cpu/atmega328p/ldscripts_compat/avr_2.26.ld | 262 ++++++++++++++++++ 10 files changed, 1350 insertions(+) create mode 100644 cpu/atmega1281/ldscripts_compat/README.md create mode 100644 cpu/atmega1281/ldscripts_compat/avr_2.26.ld create mode 100644 cpu/atmega1284p/ldscripts_compat/README.md create mode 100644 cpu/atmega1284p/ldscripts_compat/avr_2.26.ld create mode 100644 cpu/atmega2560/ldscripts_compat/README.md create mode 100644 cpu/atmega2560/ldscripts_compat/avr_2.26.ld create mode 100644 cpu/atmega256rfr2/ldscripts_compat/README.md create mode 100644 cpu/atmega256rfr2/ldscripts_compat/avr_2.26.ld create mode 100644 cpu/atmega328p/ldscripts_compat/README.md create mode 100644 cpu/atmega328p/ldscripts_compat/avr_2.26.ld diff --git a/cpu/atmega1281/ldscripts_compat/README.md b/cpu/atmega1281/ldscripts_compat/README.md new file mode 100644 index 0000000000..1bc6babe5b --- /dev/null +++ b/cpu/atmega1281/ldscripts_compat/README.md @@ -0,0 +1,8 @@ +avr linkerscript +================ + +Starting from avr-binutils 2.26, the linker defines symbol that can be +overriden to configure ROM and RAM length. + +This ldscript is used for supporting older versions on avr-binutils like on +ubuntu xenial. diff --git a/cpu/atmega1281/ldscripts_compat/avr_2.26.ld b/cpu/atmega1281/ldscripts_compat/avr_2.26.ld new file mode 100644 index 0000000000..49266118f8 --- /dev/null +++ b/cpu/atmega1281/ldscripts_compat/avr_2.26.ld @@ -0,0 +1,262 @@ +/* Script for -n: mix text and data on same page */ +/* Copyright (C) 2014-2015 Free Software Foundation, Inc. + Copying and distribution of this script, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:51) +__TEXT_REGION_LENGTH__ = DEFINED(__TEXT_REGION_LENGTH__) ? __TEXT_REGION_LENGTH__ : 128K; +__DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : 0xff00; +__EEPROM_REGION_LENGTH__ = DEFINED(__EEPROM_REGION_LENGTH__) ? __EEPROM_REGION_LENGTH__ : 64K; +__FUSE_REGION_LENGTH__ = DEFINED(__FUSE_REGION_LENGTH__) ? __FUSE_REGION_LENGTH__ : 1K; +__LOCK_REGION_LENGTH__ = DEFINED(__LOCK_REGION_LENGTH__) ? __LOCK_REGION_LENGTH__ : 1K; +__SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE_REGION_LENGTH__ : 1K; +__USER_SIGNATURE_REGION_LENGTH__ = DEFINED(__USER_SIGNATURE_REGION_LENGTH__) ? __USER_SIGNATURE_REGION_LENGTH__ : 1K; +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = __TEXT_REGION_LENGTH__ + data (rw!x) : ORIGIN = 0x800100, LENGTH = __DATA_REGION_LENGTH__ + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__ + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__ + lock (rw!x) : ORIGIN = 0x830000, LENGTH = __LOCK_REGION_LENGTH__ + signature (rw!x) : ORIGIN = 0x840000, LENGTH = __SIGNATURE_REGION_LENGTH__ + user_signatures (rw!x) : ORIGIN = 0x850000, LENGTH = __USER_SIGNATURE_REGION_LENGTH__ +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + /* PR 13812: Placing the trampolines here gives a better chance + that they will be in range of the code that uses them. */ + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* avr-libc expects these data to reside in lower 64K. */ + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + . = ALIGN(2); + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data AT> text + .bss ADDR(.data) + SIZEOF (.data) : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit ADDR(.bss) + SIZEOF (.bss) : AT (ADDR (.noinit)) + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + /* See .data above... */ + KEEP(*(.eeprom*)) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + .user_signatures : + { + KEEP(*(.user_signatures*)) + } > user_signatures + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .note.gnu.build-id : { *(.note.gnu.build-id) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /* DWARF 3 */ + .debug_pubtypes 0 : { *(.debug_pubtypes) } + .debug_ranges 0 : { *(.debug_ranges) } + /* DWARF Extension. */ + .debug_macro 0 : { *(.debug_macro) } +} diff --git a/cpu/atmega1284p/ldscripts_compat/README.md b/cpu/atmega1284p/ldscripts_compat/README.md new file mode 100644 index 0000000000..1bc6babe5b --- /dev/null +++ b/cpu/atmega1284p/ldscripts_compat/README.md @@ -0,0 +1,8 @@ +avr linkerscript +================ + +Starting from avr-binutils 2.26, the linker defines symbol that can be +overriden to configure ROM and RAM length. + +This ldscript is used for supporting older versions on avr-binutils like on +ubuntu xenial. diff --git a/cpu/atmega1284p/ldscripts_compat/avr_2.26.ld b/cpu/atmega1284p/ldscripts_compat/avr_2.26.ld new file mode 100644 index 0000000000..49266118f8 --- /dev/null +++ b/cpu/atmega1284p/ldscripts_compat/avr_2.26.ld @@ -0,0 +1,262 @@ +/* Script for -n: mix text and data on same page */ +/* Copyright (C) 2014-2015 Free Software Foundation, Inc. + Copying and distribution of this script, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:51) +__TEXT_REGION_LENGTH__ = DEFINED(__TEXT_REGION_LENGTH__) ? __TEXT_REGION_LENGTH__ : 128K; +__DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : 0xff00; +__EEPROM_REGION_LENGTH__ = DEFINED(__EEPROM_REGION_LENGTH__) ? __EEPROM_REGION_LENGTH__ : 64K; +__FUSE_REGION_LENGTH__ = DEFINED(__FUSE_REGION_LENGTH__) ? __FUSE_REGION_LENGTH__ : 1K; +__LOCK_REGION_LENGTH__ = DEFINED(__LOCK_REGION_LENGTH__) ? __LOCK_REGION_LENGTH__ : 1K; +__SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE_REGION_LENGTH__ : 1K; +__USER_SIGNATURE_REGION_LENGTH__ = DEFINED(__USER_SIGNATURE_REGION_LENGTH__) ? __USER_SIGNATURE_REGION_LENGTH__ : 1K; +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = __TEXT_REGION_LENGTH__ + data (rw!x) : ORIGIN = 0x800100, LENGTH = __DATA_REGION_LENGTH__ + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__ + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__ + lock (rw!x) : ORIGIN = 0x830000, LENGTH = __LOCK_REGION_LENGTH__ + signature (rw!x) : ORIGIN = 0x840000, LENGTH = __SIGNATURE_REGION_LENGTH__ + user_signatures (rw!x) : ORIGIN = 0x850000, LENGTH = __USER_SIGNATURE_REGION_LENGTH__ +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + /* PR 13812: Placing the trampolines here gives a better chance + that they will be in range of the code that uses them. */ + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* avr-libc expects these data to reside in lower 64K. */ + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + . = ALIGN(2); + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data AT> text + .bss ADDR(.data) + SIZEOF (.data) : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit ADDR(.bss) + SIZEOF (.bss) : AT (ADDR (.noinit)) + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + /* See .data above... */ + KEEP(*(.eeprom*)) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + .user_signatures : + { + KEEP(*(.user_signatures*)) + } > user_signatures + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .note.gnu.build-id : { *(.note.gnu.build-id) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /* DWARF 3 */ + .debug_pubtypes 0 : { *(.debug_pubtypes) } + .debug_ranges 0 : { *(.debug_ranges) } + /* DWARF Extension. */ + .debug_macro 0 : { *(.debug_macro) } +} diff --git a/cpu/atmega2560/ldscripts_compat/README.md b/cpu/atmega2560/ldscripts_compat/README.md new file mode 100644 index 0000000000..1bc6babe5b --- /dev/null +++ b/cpu/atmega2560/ldscripts_compat/README.md @@ -0,0 +1,8 @@ +avr linkerscript +================ + +Starting from avr-binutils 2.26, the linker defines symbol that can be +overriden to configure ROM and RAM length. + +This ldscript is used for supporting older versions on avr-binutils like on +ubuntu xenial. diff --git a/cpu/atmega2560/ldscripts_compat/avr_2.26.ld b/cpu/atmega2560/ldscripts_compat/avr_2.26.ld new file mode 100644 index 0000000000..122be59261 --- /dev/null +++ b/cpu/atmega2560/ldscripts_compat/avr_2.26.ld @@ -0,0 +1,262 @@ +/* Script for -n: mix text and data on same page */ +/* Copyright (C) 2014-2015 Free Software Foundation, Inc. + Copying and distribution of this script, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:6) +__TEXT_REGION_LENGTH__ = DEFINED(__TEXT_REGION_LENGTH__) ? __TEXT_REGION_LENGTH__ : 1024K; +__DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : 0xfe00; +__EEPROM_REGION_LENGTH__ = DEFINED(__EEPROM_REGION_LENGTH__) ? __EEPROM_REGION_LENGTH__ : 64K; +__FUSE_REGION_LENGTH__ = DEFINED(__FUSE_REGION_LENGTH__) ? __FUSE_REGION_LENGTH__ : 1K; +__LOCK_REGION_LENGTH__ = DEFINED(__LOCK_REGION_LENGTH__) ? __LOCK_REGION_LENGTH__ : 1K; +__SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE_REGION_LENGTH__ : 1K; +__USER_SIGNATURE_REGION_LENGTH__ = DEFINED(__USER_SIGNATURE_REGION_LENGTH__) ? __USER_SIGNATURE_REGION_LENGTH__ : 1K; +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = __TEXT_REGION_LENGTH__ + data (rw!x) : ORIGIN = 0x800200, LENGTH = __DATA_REGION_LENGTH__ + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__ + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__ + lock (rw!x) : ORIGIN = 0x830000, LENGTH = __LOCK_REGION_LENGTH__ + signature (rw!x) : ORIGIN = 0x840000, LENGTH = __SIGNATURE_REGION_LENGTH__ + user_signatures (rw!x) : ORIGIN = 0x850000, LENGTH = __USER_SIGNATURE_REGION_LENGTH__ +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + /* PR 13812: Placing the trampolines here gives a better chance + that they will be in range of the code that uses them. */ + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* avr-libc expects these data to reside in lower 64K. */ + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + . = ALIGN(2); + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data AT> text + .bss ADDR(.data) + SIZEOF (.data) : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit ADDR(.bss) + SIZEOF (.bss) : AT (ADDR (.noinit)) + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + /* See .data above... */ + KEEP(*(.eeprom*)) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + .user_signatures : + { + KEEP(*(.user_signatures*)) + } > user_signatures + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .note.gnu.build-id : { *(.note.gnu.build-id) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /* DWARF 3 */ + .debug_pubtypes 0 : { *(.debug_pubtypes) } + .debug_ranges 0 : { *(.debug_ranges) } + /* DWARF Extension. */ + .debug_macro 0 : { *(.debug_macro) } +} diff --git a/cpu/atmega256rfr2/ldscripts_compat/README.md b/cpu/atmega256rfr2/ldscripts_compat/README.md new file mode 100644 index 0000000000..1bc6babe5b --- /dev/null +++ b/cpu/atmega256rfr2/ldscripts_compat/README.md @@ -0,0 +1,8 @@ +avr linkerscript +================ + +Starting from avr-binutils 2.26, the linker defines symbol that can be +overriden to configure ROM and RAM length. + +This ldscript is used for supporting older versions on avr-binutils like on +ubuntu xenial. diff --git a/cpu/atmega256rfr2/ldscripts_compat/avr_2.26.ld b/cpu/atmega256rfr2/ldscripts_compat/avr_2.26.ld new file mode 100644 index 0000000000..122be59261 --- /dev/null +++ b/cpu/atmega256rfr2/ldscripts_compat/avr_2.26.ld @@ -0,0 +1,262 @@ +/* Script for -n: mix text and data on same page */ +/* Copyright (C) 2014-2015 Free Software Foundation, Inc. + Copying and distribution of this script, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:6) +__TEXT_REGION_LENGTH__ = DEFINED(__TEXT_REGION_LENGTH__) ? __TEXT_REGION_LENGTH__ : 1024K; +__DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : 0xfe00; +__EEPROM_REGION_LENGTH__ = DEFINED(__EEPROM_REGION_LENGTH__) ? __EEPROM_REGION_LENGTH__ : 64K; +__FUSE_REGION_LENGTH__ = DEFINED(__FUSE_REGION_LENGTH__) ? __FUSE_REGION_LENGTH__ : 1K; +__LOCK_REGION_LENGTH__ = DEFINED(__LOCK_REGION_LENGTH__) ? __LOCK_REGION_LENGTH__ : 1K; +__SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE_REGION_LENGTH__ : 1K; +__USER_SIGNATURE_REGION_LENGTH__ = DEFINED(__USER_SIGNATURE_REGION_LENGTH__) ? __USER_SIGNATURE_REGION_LENGTH__ : 1K; +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = __TEXT_REGION_LENGTH__ + data (rw!x) : ORIGIN = 0x800200, LENGTH = __DATA_REGION_LENGTH__ + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__ + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__ + lock (rw!x) : ORIGIN = 0x830000, LENGTH = __LOCK_REGION_LENGTH__ + signature (rw!x) : ORIGIN = 0x840000, LENGTH = __SIGNATURE_REGION_LENGTH__ + user_signatures (rw!x) : ORIGIN = 0x850000, LENGTH = __USER_SIGNATURE_REGION_LENGTH__ +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + /* PR 13812: Placing the trampolines here gives a better chance + that they will be in range of the code that uses them. */ + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* avr-libc expects these data to reside in lower 64K. */ + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + . = ALIGN(2); + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data AT> text + .bss ADDR(.data) + SIZEOF (.data) : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit ADDR(.bss) + SIZEOF (.bss) : AT (ADDR (.noinit)) + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + /* See .data above... */ + KEEP(*(.eeprom*)) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + .user_signatures : + { + KEEP(*(.user_signatures*)) + } > user_signatures + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .note.gnu.build-id : { *(.note.gnu.build-id) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /* DWARF 3 */ + .debug_pubtypes 0 : { *(.debug_pubtypes) } + .debug_ranges 0 : { *(.debug_ranges) } + /* DWARF Extension. */ + .debug_macro 0 : { *(.debug_macro) } +} diff --git a/cpu/atmega328p/ldscripts_compat/README.md b/cpu/atmega328p/ldscripts_compat/README.md new file mode 100644 index 0000000000..1bc6babe5b --- /dev/null +++ b/cpu/atmega328p/ldscripts_compat/README.md @@ -0,0 +1,8 @@ +avr linkerscript +================ + +Starting from avr-binutils 2.26, the linker defines symbol that can be +overriden to configure ROM and RAM length. + +This ldscript is used for supporting older versions on avr-binutils like on +ubuntu xenial. diff --git a/cpu/atmega328p/ldscripts_compat/avr_2.26.ld b/cpu/atmega328p/ldscripts_compat/avr_2.26.ld new file mode 100644 index 0000000000..bb6af6bc0a --- /dev/null +++ b/cpu/atmega328p/ldscripts_compat/avr_2.26.ld @@ -0,0 +1,262 @@ +/* Script for -n: mix text and data on same page */ +/* Copyright (C) 2014-2015 Free Software Foundation, Inc. + Copying and distribution of this script, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:5) +__TEXT_REGION_LENGTH__ = DEFINED(__TEXT_REGION_LENGTH__) ? __TEXT_REGION_LENGTH__ : 128K; +__DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : 0xffa0; +__EEPROM_REGION_LENGTH__ = DEFINED(__EEPROM_REGION_LENGTH__) ? __EEPROM_REGION_LENGTH__ : 64K; +__FUSE_REGION_LENGTH__ = DEFINED(__FUSE_REGION_LENGTH__) ? __FUSE_REGION_LENGTH__ : 1K; +__LOCK_REGION_LENGTH__ = DEFINED(__LOCK_REGION_LENGTH__) ? __LOCK_REGION_LENGTH__ : 1K; +__SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE_REGION_LENGTH__ : 1K; +__USER_SIGNATURE_REGION_LENGTH__ = DEFINED(__USER_SIGNATURE_REGION_LENGTH__) ? __USER_SIGNATURE_REGION_LENGTH__ : 1K; +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = __TEXT_REGION_LENGTH__ + data (rw!x) : ORIGIN = 0x800060, LENGTH = __DATA_REGION_LENGTH__ + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__ + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__ + lock (rw!x) : ORIGIN = 0x830000, LENGTH = __LOCK_REGION_LENGTH__ + signature (rw!x) : ORIGIN = 0x840000, LENGTH = __SIGNATURE_REGION_LENGTH__ + user_signatures (rw!x) : ORIGIN = 0x850000, LENGTH = __USER_SIGNATURE_REGION_LENGTH__ +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + /* PR 13812: Placing the trampolines here gives a better chance + that they will be in range of the code that uses them. */ + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* avr-libc expects these data to reside in lower 64K. */ + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + . = ALIGN(2); + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data AT> text + .bss ADDR(.data) + SIZEOF (.data) : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit ADDR(.bss) + SIZEOF (.bss) : AT (ADDR (.noinit)) + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + /* See .data above... */ + KEEP(*(.eeprom*)) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + .user_signatures : + { + KEEP(*(.user_signatures*)) + } > user_signatures + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .note.gnu.build-id : { *(.note.gnu.build-id) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /* DWARF 3 */ + .debug_pubtypes 0 : { *(.debug_pubtypes) } + .debug_ranges 0 : { *(.debug_ranges) } + /* DWARF Extension. */ + .debug_macro 0 : { *(.debug_macro) } +} From 098770aeda5829f3eeab46467fdfec216a24c66c Mon Sep 17 00:00:00 2001 From: cladmi Date: Wed, 15 Aug 2018 12:26:35 +0200 Subject: [PATCH 11/24] atmega_common: use binutils 2.26 ldscript for older versions This allows configuring __TEXT_REGION_LENGTH__ and __DATA_REGION_LENGTH__ for previous versions (ubuntu xenial for example). --- cpu/atmega_common/Makefile.include | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cpu/atmega_common/Makefile.include b/cpu/atmega_common/Makefile.include index 5afff062bb..f6a58df971 100644 --- a/cpu/atmega_common/Makefile.include +++ b/cpu/atmega_common/Makefile.include @@ -31,3 +31,8 @@ endif # It is made optional until all boards are updated LINKFLAGS += $(if $(ROM_LEN),$(LINKFLAGPREFIX)--defsym=__TEXT_REGION_LENGTH__=$(ROM_LEN)) LINKFLAGS += $(if $(RAM_LEN),$(LINKFLAGPREFIX)--defsym=__DATA_REGION_LENGTH__=$(RAM_LEN)) + +# Use newer linker script to have ROM/RAM configuration symbols in binutils<2.26 +LDSCRIPT_COMPAT = $(if $(shell $(TARGET_ARCH)-ld --verbose | grep __TEXT_REGION_LENGTH__),,\ + -T$(RIOTCPU)/$(CPU)/ldscripts_compat/avr_2.26.ld) +LINKFLAGS += $(LDSCRIPT_COMPAT) From b22832b4cd7e73dbd6bc8f93ecd5f421e58a7d8c Mon Sep 17 00:00:00 2001 From: cladmi Date: Wed, 15 Aug 2018 13:20:44 +0200 Subject: [PATCH 12/24] cpu/atmega2560: configure RAM and ROM length Info taken from https://www.microchip.com/wwwproducts/en/atmega2560 TODO: update "board not enough memory". --- cpu/atmega2560/Makefile.include | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cpu/atmega2560/Makefile.include b/cpu/atmega2560/Makefile.include index 6647a8d437..18bfb9a454 100644 --- a/cpu/atmega2560/Makefile.include +++ b/cpu/atmega2560/Makefile.include @@ -8,5 +8,8 @@ export ATMEGA_COMMON = $(RIOTCPU)/atmega_common/ # Without this the interrupt vectors will not be linked correctly! export UNDEF += $(BINDIR)/cpu/startup.o +RAM_LEN = 8K +ROM_LEN = 256K + # CPU depends on the atmega common module, so include it include $(ATMEGA_COMMON)Makefile.include From ef20b035bd299d4bc9f509807be9e16c11699186 Mon Sep 17 00:00:00 2001 From: cladmi Date: Wed, 15 Aug 2018 13:20:44 +0200 Subject: [PATCH 13/24] cpu/atmega1281: configure RAM and ROM length Info taken from https://www.microchip.com/wwwproducts/en/atmega1281 TODO: update "board not enough memory". --- cpu/atmega1281/Makefile.include | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cpu/atmega1281/Makefile.include b/cpu/atmega1281/Makefile.include index 6647a8d437..093660e72e 100644 --- a/cpu/atmega1281/Makefile.include +++ b/cpu/atmega1281/Makefile.include @@ -8,5 +8,8 @@ export ATMEGA_COMMON = $(RIOTCPU)/atmega_common/ # Without this the interrupt vectors will not be linked correctly! export UNDEF += $(BINDIR)/cpu/startup.o +RAM_LEN = 8K +ROM_LEN = 128K + # CPU depends on the atmega common module, so include it include $(ATMEGA_COMMON)Makefile.include From c6a45e4082eb97e5115a54df7c3b0f06b916cd7a Mon Sep 17 00:00:00 2001 From: cladmi Date: Wed, 15 Aug 2018 13:20:44 +0200 Subject: [PATCH 14/24] cpu/atmega328p: configure RAM and ROM length Info taken from https://www.microchip.com/wwwproducts/en/atmega328p TODO: update "board not enough memory". --- cpu/atmega328p/Makefile.include | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cpu/atmega328p/Makefile.include b/cpu/atmega328p/Makefile.include index b46d4e871c..c014b254cc 100644 --- a/cpu/atmega328p/Makefile.include +++ b/cpu/atmega328p/Makefile.include @@ -4,5 +4,8 @@ USEMODULE += atmega_common # define path to atmega common module, which is needed for this CPU export ATMEGA_COMMON = $(RIOTCPU)/atmega_common/ +RAM_LEN = 2K +ROM_LEN = 32K + # CPU depends on the atmega common module, so include it include $(ATMEGA_COMMON)Makefile.include From 2ff713773329580ad9047a41e172539dc46c130f Mon Sep 17 00:00:00 2001 From: cladmi Date: Wed, 15 Aug 2018 13:20:44 +0200 Subject: [PATCH 15/24] cpu/atmega256rfr2: configure RAM and ROM length Info taken from https://www.microchip.com/wwwproducts/en/atmega256rfr2 TODO: update "board not enough memory". --- cpu/atmega256rfr2/Makefile.include | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cpu/atmega256rfr2/Makefile.include b/cpu/atmega256rfr2/Makefile.include index 4e3aa39e06..7d1eb48a2a 100644 --- a/cpu/atmega256rfr2/Makefile.include +++ b/cpu/atmega256rfr2/Makefile.include @@ -10,5 +10,8 @@ export UNDEF += $(BINDIR)/cpu/startup.o #include periph module USEMODULE += periph +RAM_LEN = 32K +ROM_LEN = 256K + # CPU depends on the atmega common module, so include it include $(ATMEGA_COMMON)Makefile.include From e4635004f7a84508786d80f31a38fc0f0100540d Mon Sep 17 00:00:00 2001 From: cladmi Date: Wed, 15 Aug 2018 13:20:44 +0200 Subject: [PATCH 16/24] cpu/atmega1284p: configure RAM and ROM length Info taken from https://www.microchip.com/wwwproducts/en/atmega1284p TODO: update "board not enough memory". --- cpu/atmega1284p/Makefile.include | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cpu/atmega1284p/Makefile.include b/cpu/atmega1284p/Makefile.include index b46d4e871c..7575f04ff9 100644 --- a/cpu/atmega1284p/Makefile.include +++ b/cpu/atmega1284p/Makefile.include @@ -4,5 +4,8 @@ USEMODULE += atmega_common # define path to atmega common module, which is needed for this CPU export ATMEGA_COMMON = $(RIOTCPU)/atmega_common/ +RAM_LEN = 16K +ROM_LEN = 128K + # CPU depends on the atmega common module, so include it include $(ATMEGA_COMMON)Makefile.include From 493cad03da8cf8ff19972fef6035e4edc31a59c1 Mon Sep 17 00:00:00 2001 From: cladmi Date: Wed, 15 Aug 2018 13:12:54 +0200 Subject: [PATCH 17/24] atmega_common: make rom and ram length definition mandatory Now all atmega cpu define them so use them by default. --- cpu/atmega_common/Makefile.include | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cpu/atmega_common/Makefile.include b/cpu/atmega_common/Makefile.include index f6a58df971..b7edf39398 100644 --- a/cpu/atmega_common/Makefile.include +++ b/cpu/atmega_common/Makefile.include @@ -28,9 +28,10 @@ ifeq ($(LTO),1) endif # Use ROM_LEN and RAM_LEN during link -# It is made optional until all boards are updated -LINKFLAGS += $(if $(ROM_LEN),$(LINKFLAGPREFIX)--defsym=__TEXT_REGION_LENGTH__=$(ROM_LEN)) -LINKFLAGS += $(if $(RAM_LEN),$(LINKFLAGPREFIX)--defsym=__DATA_REGION_LENGTH__=$(RAM_LEN)) +$(if $(ROM_LEN),,$(error ROM_LEN is not defined)) +$(if $(RAM_LEN),,$(error RAM_LEN is not defined)) +LINKFLAGS += $(LINKFLAGPREFIX)--defsym=__TEXT_REGION_LENGTH__=$(ROM_LEN) +LINKFLAGS += $(LINKFLAGPREFIX)--defsym=__DATA_REGION_LENGTH__=$(RAM_LEN) # Use newer linker script to have ROM/RAM configuration symbols in binutils<2.26 LDSCRIPT_COMPAT = $(if $(shell $(TARGET_ARCH)-ld --verbose | grep __TEXT_REGION_LENGTH__),,\ From 9720d9c51cb0c7f8c1533872b2424872ed75c261 Mon Sep 17 00:00:00 2001 From: cladmi Date: Tue, 21 Aug 2018 14:21:40 +0200 Subject: [PATCH 18/24] cpu/atmega_common: Allow specifying a reserved space in ROM It is defined using the `ROM_RESERVED` variable. This should allow supporting arduino bootloader that is stored at the end of the ROM. --- cpu/atmega_common/Makefile.include | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpu/atmega_common/Makefile.include b/cpu/atmega_common/Makefile.include index b7edf39398..5624d68a07 100644 --- a/cpu/atmega_common/Makefile.include +++ b/cpu/atmega_common/Makefile.include @@ -30,7 +30,7 @@ endif # Use ROM_LEN and RAM_LEN during link $(if $(ROM_LEN),,$(error ROM_LEN is not defined)) $(if $(RAM_LEN),,$(error RAM_LEN is not defined)) -LINKFLAGS += $(LINKFLAGPREFIX)--defsym=__TEXT_REGION_LENGTH__=$(ROM_LEN) +LINKFLAGS += $(LINKFLAGPREFIX)--defsym=__TEXT_REGION_LENGTH__=$(ROM_LEN)$(if $(ROM_RESERVED),-$(ROM_RESERVED)) LINKFLAGS += $(LINKFLAGPREFIX)--defsym=__DATA_REGION_LENGTH__=$(RAM_LEN) # Use newer linker script to have ROM/RAM configuration symbols in binutils<2.26 From 2c1344fc9fcb14deb7809342a338fd33ac87de12 Mon Sep 17 00:00:00 2001 From: cladmi Date: Thu, 16 Aug 2018 19:15:05 +0200 Subject: [PATCH 19/24] arduino-duemilanove: configure BOOTLOADER_SIZE Taken from https://www.arduino.cc/en/Main/ArduinoBoardDuemilanove --- boards/arduino-duemilanove/Makefile.include | 3 +++ 1 file changed, 3 insertions(+) diff --git a/boards/arduino-duemilanove/Makefile.include b/boards/arduino-duemilanove/Makefile.include index e2fce678d4..dd282db94f 100644 --- a/boards/arduino-duemilanove/Makefile.include +++ b/boards/arduino-duemilanove/Makefile.include @@ -14,4 +14,7 @@ export FFLAGS += -p m328p # overridden for debugging (which requires changes that require to use an ISP) export PROGRAMMER ?= arduino +BOOTLOADER_SIZE ?= 2K +ROM_RESERVED ?= $(BOOTLOADER_SIZE) + include $(RIOTBOARD)/common/arduino-atmega/Makefile.include From 6a96042b4ae8091e396b668dfd18debb87ea9234 Mon Sep 17 00:00:00 2001 From: cladmi Date: Thu, 16 Aug 2018 19:15:05 +0200 Subject: [PATCH 20/24] arduino-mega2560: configure BOOTLOADER_SIZE Taken from https://store.arduino.cc/arduino-mega-2560-rev3 --- boards/arduino-mega2560/Makefile.include | 3 +++ 1 file changed, 3 insertions(+) diff --git a/boards/arduino-mega2560/Makefile.include b/boards/arduino-mega2560/Makefile.include index 074a9e2887..3a7a4aafd8 100644 --- a/boards/arduino-mega2560/Makefile.include +++ b/boards/arduino-mega2560/Makefile.include @@ -14,4 +14,7 @@ export FFLAGS += -p m2560 # overridden for debugging (which requires changes that require to use an ISP) export PROGRAMMER ?= stk500v2 +BOOTLOADER_SIZE ?= 8K +ROM_RESERVED ?= $(BOOTLOADER_SIZE) + include $(RIOTBOARD)/common/arduino-atmega/Makefile.include From 8982a088865866fdb7dc2da8d8aed60855e52b33 Mon Sep 17 00:00:00 2001 From: cladmi Date: Thu, 16 Aug 2018 19:15:05 +0200 Subject: [PATCH 21/24] arduino-uno: configure BOOTLOADER_SIZE Taken from https://store.arduino.cc/arduino-uno-rev3 --- boards/arduino-uno/Makefile.include | 3 +++ 1 file changed, 3 insertions(+) diff --git a/boards/arduino-uno/Makefile.include b/boards/arduino-uno/Makefile.include index c05afa46e8..049373784c 100644 --- a/boards/arduino-uno/Makefile.include +++ b/boards/arduino-uno/Makefile.include @@ -14,4 +14,7 @@ export FFLAGS += -p m328p # overridden for debugging (which requires changes that require to use an ISP) export PROGRAMMER ?= arduino +BOOTLOADER_SIZE ?= 512 +ROM_RESERVED ?= $(BOOTLOADER_SIZE) + include $(RIOTBOARD)/common/arduino-atmega/Makefile.include From f59c1c5c2d7a1649826b2bf3cd74f7e9081b56d7 Mon Sep 17 00:00:00 2001 From: cladmi Date: Thu, 16 Aug 2018 19:15:05 +0200 Subject: [PATCH 22/24] jiminy-mega256rfr2: configure BOOTLOADER_SIZE Value comes the maintainer. --- boards/jiminy-mega256rfr2/Makefile.include | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/boards/jiminy-mega256rfr2/Makefile.include b/boards/jiminy-mega256rfr2/Makefile.include index a0fc16954e..e3def21be4 100644 --- a/boards/jiminy-mega256rfr2/Makefile.include +++ b/boards/jiminy-mega256rfr2/Makefile.include @@ -21,4 +21,8 @@ export BAUD = 38400 # overridden for debugging (which requires changes that require to use an ISP) export PROGRAMMER ?= wiring +# From current fuse configuration +BOOTLOADER_SIZE ?= 4K +ROM_RESERVED ?= $(BOOTLOADER_SIZE) + include $(RIOTBOARD)/common/arduino-atmega/Makefile.include From 109467d881289029c6adcc282cf878b1cb8c5d49 Mon Sep 17 00:00:00 2001 From: cladmi Date: Thu, 16 Aug 2018 19:15:05 +0200 Subject: [PATCH 23/24] mega-xplained: configure BOOTLOADER_SIZE Value found by checking fuse settings --- boards/mega-xplained/Makefile.include | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/boards/mega-xplained/Makefile.include b/boards/mega-xplained/Makefile.include index 63c2961f0f..9a8d7e5f4f 100644 --- a/boards/mega-xplained/Makefile.include +++ b/boards/mega-xplained/Makefile.include @@ -1,6 +1,11 @@ # define the cpu used by the Mega Xplained board export CPU = atmega1284p +# Found by checking fuse settings (2048 words so 4KB) +# https://www.microchip.com/DevelopmentTools/ProductDetails/atmega1284p-xpld +BOOTLOADER_SIZE ?= 4K +ROM_RESERVED ?= $(BOOTLOADER_SIZE) + # configure the terminal program export PORT_LINUX ?= /dev/ttyACM0 export PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbserial*))) From 3bf71959d726162cc7c4213cfbc178ee7e405c85 Mon Sep 17 00:00:00 2001 From: cladmi Date: Thu, 16 Aug 2018 19:15:05 +0200 Subject: [PATCH 24/24] waspmote-pro: configure BOOTLOADER_SIZE Size is from Francisco knowledge on stk500v1. --- boards/waspmote-pro/Makefile.include | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/boards/waspmote-pro/Makefile.include b/boards/waspmote-pro/Makefile.include index 2991c77adc..a2cd81ebc2 100644 --- a/boards/waspmote-pro/Makefile.include +++ b/boards/waspmote-pro/Makefile.include @@ -1,6 +1,12 @@ # define the cpu used by the waspmote pro board export CPU = atmega1281 +# Bootloader uses stk500v1 protocol, which usually is implemented in +# bootloaders of 2K size. +# http://www.libelium.com/products/waspmote/hardware/ +BOOTLOADER_SIZE ?= 2K +ROM_RESERVED ?= $(BOOTLOADER_SIZE) + # configure the terminal program PORT_LINUX ?= /dev/ttyACM0 PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbserial*)))