diff --git a/conf/Makefile.chibios b/conf/Makefile.chibios index 0956171b1b..57ebfe3fda 100644 --- a/conf/Makefile.chibios +++ b/conf/Makefile.chibios @@ -30,7 +30,7 @@ BOARD_DIR ?= $(BOARD)/chibios CHIBIOS_BOARD_DIR = $(PAPARAZZI_SRC)/sw/airborne/boards/$(BOARD_DIR) # chibos arch directory -CHIBIOS_ARCH_DIR = $(PAPARAZZI_SRC)/sw/airborne/arch/chibios +CHIBIOS_ARCH_DIR = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld # Launch with "make Q=''" to get full command display Q=@ @@ -185,7 +185,6 @@ endif # Define linker script file here LDSCRIPT= $(CHIBIOS_ARCH_DIR)/$(CHIBIOS_BOARD_LINKER) -#LDSCRIPT= $(STARTUPLD)/$(CHIBIOS_BOARD_LINKER) # C sources that can be compiled in ARM or THUMB mode depending on the global # setting. diff --git a/conf/boards/apogee_1.0_chibios.makefile b/conf/boards/apogee_1.0_chibios.makefile index 24bac874ea..7154251544 100644 --- a/conf/boards/apogee_1.0_chibios.makefile +++ b/conf/boards/apogee_1.0_chibios.makefile @@ -14,7 +14,7 @@ $(TARGET).ARCHDIR = $(ARCH) RTOS=chibios -## FPU on F4 +# FPU on F4 USE_FPU=yes HARD_FLOAT=yes @@ -28,8 +28,7 @@ PROJECT = $(TARGET) # Project specific files and paths (see Makefile.chibios for details) CHIBIOS_BOARD_PLATFORM = STM32F4xx/platform.mk -CHIBIOS_BOARD_PORT = ARMCMx/STM32F4xx/port.mk -CHIBIOS_BOARD_LINKER = STM32F407xG_ccm.ld +CHIBIOS_BOARD_LINKER = STM32F407xG.ld CHIBIOS_BOARD_STARTUP = startup_stm32f4xx.mk ############################################################################## diff --git a/conf/boards/lia_1.1_chibios.makefile b/conf/boards/lia_1.1_chibios.makefile new file mode 100644 index 0000000000..c1dd9ce48c --- /dev/null +++ b/conf/boards/lia_1.1_chibios.makefile @@ -0,0 +1,86 @@ +# Hey Emacs, this is a -*- makefile -*- +# +# Lisa_MX_2.1_chibios.makefile +# +# + +BOARD=lisa +BOARD_VERSION=2.1 +BOARD_DIR=$(BOARD)/chibios/v$(BOARD_VERSION) +BOARD_CFG=\"boards/$(BOARD_DIR)/board.h\" + +ARCH=chibios +$(TARGET).ARCHDIR = $(ARCH) + +RTOS=chibios + +# FPU not present on F1 +USE_FPU=no +HARD_FLOAT=no + +$(TARGET).CFLAGS += -DSTM32F1 -DPPRZLINK_ENABLE_FD + +############################################################################## +# Architecture or project specific options +# +# Define project name here (target) +PROJECT = $(TARGET) + +# Project specific files and paths (see Makefile.chibios for details) +CHIBIOS_BOARD_PLATFORM = STM32F1xx/platform.mk +CHIBIOS_BOARD_LINKER = STM32F107xC.ld +CHIBIOS_BOARD_STARTUP = startup_stm32f1xx.mk + +############################################################################## +# Compiler settings +# +MCU = cortex-m3 + +# default flash mode is via usb dfu bootloader (luftboot) +# other possibilities: DFU-UTIL, JTAG, SWD, STLINK, SERIAL +FLASH_MODE ?= DFU + +HAS_LUFTBOOT ?= 1 +ifeq (,$(findstring $(HAS_LUFTBOOT),0 FALSE)) +$(TARGET).CFLAGS+=-DLUFTBOOT +$(TARGET).LDFLAGS+=-Wl,-Ttext=0x8002000 +endif + +# +# +# some default values shared between different firmwares +# +# + +# +# default LED configuration +# +RADIO_CONTROL_LED ?= 4 +BARO_LED ?= none +AHRS_ALIGNER_LED ?= 2 +GPS_LED ?= 3 +SYS_TIME_LED ?= 1 + + +# +# default uart configuration +# +RADIO_CONTROL_SPEKTRUM_PRIMARY_PORT ?= UART1 +RADIO_CONTROL_SPEKTRUM_SECONDARY_PORT ?= UART5 + +MODEM_PORT ?= UART2 +MODEM_BAUD ?= B57600 + +GPS_PORT ?= UART3 +GPS_BAUD ?= B38400 + + +# +# default actuator configuration +# +# you can use different actuators by adding a configure option to your firmware section +# e.g. +# +ACTUATORS ?= actuators_pwm diff --git a/conf/boards/lisa_mx_2.1_chibios.makefile b/conf/boards/lisa_mx_2.1_chibios.makefile index ddacf2fa6d..720aa934d6 100644 --- a/conf/boards/lisa_mx_2.1_chibios.makefile +++ b/conf/boards/lisa_mx_2.1_chibios.makefile @@ -14,7 +14,7 @@ $(TARGET).ARCHDIR = $(ARCH) RTOS=chibios -## FPU on F4 +# FPU on F4 USE_FPU=yes HARD_FLOAT=yes @@ -28,8 +28,7 @@ PROJECT = $(TARGET) # Project specific files and paths (see Makefile.chibios for details) CHIBIOS_BOARD_PLATFORM = STM32F4xx/platform.mk -CHIBIOS_BOARD_PORT = ARMCMx/STM32F4xx/port.mk -CHIBIOS_BOARD_LINKER = STM32F407xG_ccm.ld +CHIBIOS_BOARD_LINKER = STM32F407xG.ld CHIBIOS_BOARD_STARTUP = startup_stm32f4xx.mk ############################################################################## diff --git a/sw/airborne/arch/chibios/STM32F407xG.ld b/sw/airborne/arch/chibios/STM32F407xG.ld deleted file mode 100644 index c8d6466fc8..0000000000 --- a/sw/airborne/arch/chibios/STM32F407xG.ld +++ /dev/null @@ -1,162 +0,0 @@ -/* - ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, - 2011,2012,2013 Giovanni Di Sirio. - - This file is part of ChibiOS/RT. - - ChibiOS/RT is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS/RT is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - - --- - - A special exception to the GPL can be applied should you wish to distribute - a combined work that includes ChibiOS/RT, without being obliged to provide - the source code for any proprietary components. See the file exception.txt - for full details of how and when the exception can be applied. -*/ - -/* - * ST32F407xG memory setup. - */ -__main_stack_size__ = 0x0400; -__process_stack_size__ = 0x0400; - -MEMORY -{ - flash : org = 0x08004000, len = 1M - ram : org = 0x20000000, len = 112k - ethram : org = 0x2001C000, len = 16k - ccmram : org = 0x10000000, len = 64k -} - -__ram_start__ = ORIGIN(ram); -__ram_size__ = LENGTH(ram); -__ram_end__ = __ram_start__ + __ram_size__; - -ENTRY(ResetHandler) - -SECTIONS -{ - . = 0; - _text = .; - - startup : ALIGN(16) SUBALIGN(16) - { - KEEP(*(vectors)) - } > flash - - constructors : ALIGN(4) SUBALIGN(4) - { - PROVIDE(__init_array_start = .); - KEEP(*(SORT(.init_array.*))) - KEEP(*(.init_array)) - PROVIDE(__init_array_end = .); - } > flash - - destructors : ALIGN(4) SUBALIGN(4) - { - PROVIDE(__fini_array_start = .); - KEEP(*(.fini_array)) - KEEP(*(SORT(.fini_array.*))) - PROVIDE(__fini_array_end = .); - } > flash - - .text : ALIGN(16) SUBALIGN(16) - { - *(.text.startup.*) - *(.text) - *(.text.*) - *(.rodata) - *(.rodata.*) - *(.glue_7t) - *(.glue_7) - *(.gcc*) - } > flash - - .ARM.extab : - { - *(.ARM.extab* .gnu.linkonce.armextab.*) - } > flash - - .ARM.exidx : { - PROVIDE(__exidx_start = .); - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - PROVIDE(__exidx_end = .); - } > flash - - .eh_frame_hdr : - { - *(.eh_frame_hdr) - } > flash - - .eh_frame : ONLY_IF_RO - { - *(.eh_frame) - } > flash - - .textalign : ONLY_IF_RO - { - . = ALIGN(8); - } > flash - - . = ALIGN(4); - _etext = .; - _textdata = _etext; - - .stacks : - { - . = ALIGN(8); - __main_stack_base__ = .; - . += __main_stack_size__; - . = ALIGN(8); - __main_stack_end__ = .; - __process_stack_base__ = .; - __main_thread_stack_base__ = .; - . += __process_stack_size__; - . = ALIGN(8); - __process_stack_end__ = .; - __main_thread_stack_end__ = .; - } > ram - - .data : - { - . = ALIGN(4); - PROVIDE(_data = .); - *(.data) - . = ALIGN(4); - *(.data.*) - . = ALIGN(4); - *(.ramtext) - . = ALIGN(4); - PROVIDE(_edata = .); - } > ram AT > flash - - .bss : - { - . = ALIGN(4); - PROVIDE(_bss_start = .); - *(.bss) - . = ALIGN(4); - *(.bss.*) - . = ALIGN(4); - *(COMMON) - . = ALIGN(4); - PROVIDE(_bss_end = .); - } > ram -} - -PROVIDE(end = .); -_end = .; - -__heap_base__ = _end; -__heap_end__ = __ram_end__; diff --git a/sw/airborne/arch/chibios/STM32F407xG_ccm.ld b/sw/airborne/arch/chibios/STM32F407xG_ccm.ld deleted file mode 100644 index 82815c9e66..0000000000 --- a/sw/airborne/arch/chibios/STM32F407xG_ccm.ld +++ /dev/null @@ -1,85 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/* - * STM32F407xG memory setup. - * Note: Use of ram1 and ram2 is mutually exclusive with use of ram0. - */ -MEMORY -{ - flash : org = 0x08000000, len = 1M - ram0 : org = 0x20000000, len = 128k /* SRAM1 + SRAM2 */ - ram1 : org = 0x20000000, len = 112k /* SRAM1 */ - ram2 : org = 0x2001C000, len = 16k /* SRAM2 */ - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x10000000, len = 64k /* CCM SRAM */ - ccmram : org = 0x10000000, len = 64k /* CCM SRAM */ - ram5 : org = 0x40024000, len = 4k /* BCKP SRAM */ - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -__ccmram_start__ = ORIGIN(ccmram); -__ccmram_size__ = LENGTH(ccmram); -__ccmram_end__ = __ccmram_start__ + __ccmram_size__; - -SECTIONS -{ - .ccmram_init : ALIGN(4) - { - . = ALIGN(4); - __ccmram_init_text__ = LOADADDR(.ccmram_init); - __ccmram_init__ = .; - *(.ccmram_init) - *(.ccmram_init.*) - . = ALIGN(4); - } > ccmram AT > flash - - .ccmram (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ccmram_clear__ = .; - *(.ccmram_clear) - *(.ccmram_clear.*) - . = ALIGN(4); - __ccmram_noinit__ = .; - *(.ccmram) - *(.ccmram.*) - . = ALIGN(4); - __ccmram_free__ = .; - } > ccmram - -} - -INCLUDE rules.ld