From 3c8ded4743c09a7b0c7737392d4e4c15e6959852 Mon Sep 17 00:00:00 2001 From: Gregwar Date: Wed, 23 Apr 2014 16:45:23 +0200 Subject: Adding BOOTLOADER option to support Robotis bootloader different ROM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Grégoire Passault --- Makefile | 6 +++++- support/ld/stm32/mem/sram_20k_flash_128k_robotis/mem-flash.inc | 5 +++++ support/ld/stm32/mem/sram_20k_flash_128k_robotis/mem-jtag.inc | 5 +++++ support/ld/stm32/mem/sram_20k_flash_128k_robotis/mem-ram.inc | 5 +++++ support/make/board-includes/cm900.mk | 5 +++++ support/make/board-includes/opencm904.mk | 5 +++++ wirish/boards.cpp | 4 ++++ 7 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 support/ld/stm32/mem/sram_20k_flash_128k_robotis/mem-flash.inc create mode 100644 support/ld/stm32/mem/sram_20k_flash_128k_robotis/mem-jtag.inc create mode 100644 support/ld/stm32/mem/sram_20k_flash_128k_robotis/mem-ram.inc diff --git a/Makefile b/Makefile index 1f19f37..80653a7 100644 --- a/Makefile +++ b/Makefile @@ -32,6 +32,9 @@ BOARD_INCLUDE_DIR := $(MAKEDIR)/board-includes BOARD ?= maple MEMORY_TARGET ?= flash +# Chooses the bootloader, available: maple and robotis +BOOTLOADER ?= maple + # $(BOARD)- and $(MEMORY_TARGET)-specific configuration include $(MAKEDIR)/target-config.mk @@ -56,7 +59,8 @@ TARGET_FLAGS += -I$(LIBMAPLE_PATH)/include/libmaple \ TARGET_FLAGS += -I$(LIBRARIES_PATH) # for internal lib. includes, e.g. GLOBAL_CFLAGS := -Os -g3 -gdwarf-2 -nostdlib \ -ffunction-sections -fdata-sections \ - -Wl,--gc-sections $(TARGET_FLAGS) + -Wl,--gc-sections $(TARGET_FLAGS) \ + -DBOOTLOADER_$(BOOTLOADER) GLOBAL_CXXFLAGS := -fno-rtti -fno-exceptions -Wall $(TARGET_FLAGS) GLOBAL_ASFLAGS := -x assembler-with-cpp $(TARGET_FLAGS) LDFLAGS = $(TARGET_LDFLAGS) $(TOOLCHAIN_LDFLAGS) -mcpu=cortex-m3 -mthumb \ diff --git a/support/ld/stm32/mem/sram_20k_flash_128k_robotis/mem-flash.inc b/support/ld/stm32/mem/sram_20k_flash_128k_robotis/mem-flash.inc new file mode 100644 index 0000000..2c03ea9 --- /dev/null +++ b/support/ld/stm32/mem/sram_20k_flash_128k_robotis/mem-flash.inc @@ -0,0 +1,5 @@ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K + rom (rx) : ORIGIN = 0x08003000, LENGTH = 108K +} diff --git a/support/ld/stm32/mem/sram_20k_flash_128k_robotis/mem-jtag.inc b/support/ld/stm32/mem/sram_20k_flash_128k_robotis/mem-jtag.inc new file mode 100644 index 0000000..20fbec0 --- /dev/null +++ b/support/ld/stm32/mem/sram_20k_flash_128k_robotis/mem-jtag.inc @@ -0,0 +1,5 @@ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K + rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K +} diff --git a/support/ld/stm32/mem/sram_20k_flash_128k_robotis/mem-ram.inc b/support/ld/stm32/mem/sram_20k_flash_128k_robotis/mem-ram.inc new file mode 100644 index 0000000..f02453b --- /dev/null +++ b/support/ld/stm32/mem/sram_20k_flash_128k_robotis/mem-ram.inc @@ -0,0 +1,5 @@ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K + rom (rx) : ORIGIN = 0x08005000, LENGTH = 0K +} diff --git a/support/make/board-includes/cm900.mk b/support/make/board-includes/cm900.mk index f9a09ac..9f70a1b 100644 --- a/support/make/board-includes/cm900.mk +++ b/support/make/board-includes/cm900.mk @@ -7,4 +7,9 @@ MCU_F1_LINE := performance # This crap is due to ld-script limitations. If you know of a better # way to go about this (like some magic ld switches to specify MEMORY # at the command line), please tell us! +ifeq ($(BOOTLOADER),maple) LD_MEM_DIR := sram_20k_flash_128k +endif +ifeq ($(BOOTLOADER),robotis) +LD_MEM_DIR := sram_20k_flash_128k_robotis +endif diff --git a/support/make/board-includes/opencm904.mk b/support/make/board-includes/opencm904.mk index f3a4aa7..64d3351 100644 --- a/support/make/board-includes/opencm904.mk +++ b/support/make/board-includes/opencm904.mk @@ -7,4 +7,9 @@ MCU_F1_LINE := performance # This crap is due to ld-script limitations. If you know of a better # way to go about this (like some magic ld switches to specify MEMORY # at the command line), please tell us! +ifeq ($(BOOTLOADER),maple) LD_MEM_DIR := sram_20k_flash_128k +endif +ifeq ($(BOOTLOADER),robotis) +LD_MEM_DIR := sram_20k_flash_128k_robotis +endif diff --git a/wirish/boards.cpp b/wirish/boards.cpp index a693fa6..77a05de 100644 --- a/wirish/boards.cpp +++ b/wirish/boards.cpp @@ -144,7 +144,11 @@ static void setup_clocks(void) { * present. If no bootloader is present, the user NVIC usually starts * at the Flash base address, 0x08000000. */ +#if defined(BOOTLOADER_maple) #define USER_ADDR_ROM 0x08005000 +#elif defined(BOOTLOADER_robotis) +#define USER_ADDR_ROM 0x08003000 +#endif #define USER_ADDR_RAM 0x20000C00 extern char __text_start__; -- cgit v1.2.3