diff --git a/firmware/hw_layer/openblt/blt_conf.h b/firmware/hw_layer/openblt/blt_conf.h index 94b9473b2a..97883a72c6 100644 --- a/firmware/hw_layer/openblt/blt_conf.h +++ b/firmware/hw_layer/openblt/blt_conf.h @@ -44,6 +44,10 @@ * de-initialize application specific parts, for example to stop blinking an LED, etc. */ +/** \brief Frequency of the external crystal oscillator. */ +#define BOOT_CPU_XTAL_SPEED_KHZ (1000) +/** \brief Desired system speed. */ +#define BOOT_CPU_SYSTEM_SPEED_KHZ (1000) /** \brief Motorola or Intel style byte ordering. */ #define BOOT_CPU_BYTE_ORDER_MOTOROLA (0) /** \brief Enable/disable hook function call right before user program start. */ @@ -67,7 +71,7 @@ * */ /** \brief Enable/disable CAN transport layer. */ -#define BOOT_COM_CAN_ENABLE (1) +#define BOOT_COM_CAN_ENABLE (0) /** \brief Configure the desired CAN baudrate. */ #define BOOT_COM_CAN_BAUDRATE (500000) /** \brief Configure CAN message ID target->host. */ @@ -92,9 +96,12 @@ /** \brief Configure the desired communication speed. */ #define BOOT_COM_RS232_BAUDRATE (115200) /** \brief Configure number of bytes in the target->host data packet. */ -#define BOOT_COM_RS232_TX_MAX_DATA (64) +#define BOOT_COM_RS232_TX_MAX_DATA (200) /** \brief Configure number of bytes in the host->target data packet. */ -#define BOOT_COM_RS232_RX_MAX_DATA (64) +#define BOOT_COM_RS232_RX_MAX_DATA (200) + +/** only USB supported, this is ignored but required */ +#define BOOT_COM_RS232_CHANNEL_INDEX 0 /**************************************************************************************** diff --git a/firmware/hw_layer/openblt/flash_layout.c b/firmware/hw_layer/openblt/flash_layout.c deleted file mode 100644 index ac0ea2b226..0000000000 --- a/firmware/hw_layer/openblt/flash_layout.c +++ /dev/null @@ -1,29 +0,0 @@ - -/* Define STM32F4, STM32F7 or STM32F765 flash layout in dual bank mode. Only first bank is defined */ - -/* This file is included in another .c file. So it is ok to have static and no users here */ -static const tFlashSector flashLayout[] = -{ - /* space is reserved for a bootloader configuration with all supported communication - * interfaces enabled. when for example only UART is needed, then the space required - * for the bootloader can be made a lot smaller here. - */ -/*{ 0x08000000, 16 * 1024, 0 }, flash sector 0 - 16kb - reserved for OpenBLT */ -/*{ 0x08004000, 16 * 1024, 1 }, flash sector 1 - 16kb - reserved for OpenBLT */ - { 0x08008000, 16 * 1024, 2 }, /* flash sector 2 - 16kb */ - { 0x0800c000, 16 * 1024, 3 }, /* flash sector 3 - 16kb */ - { 0x08010000, 64 * 1024, 4 }, /* flash sector 4 - 64kb */ - { 0x08020000, 128 * 1024, 5 }, /* flash sector 5 - 128kb */ - { 0x08040000, 128 * 1024, 6 }, /* flash sector 6 - 128kb */ - { 0x08060000, 128 * 1024, 7 }, /* flash sector 7 - 128kb */ -#if (BOOT_NVM_SIZE_KB > 512) - { 0x08080000, 128 * 1024, 8 }, /* flash sector 8 - 128kb */ - { 0x080a0000, 128 * 1024, 9 }, /* flash sector 9 - 128kb */ - { 0x080c0000, 128 * 1024, 10}, /* flash sector 10 - 128kb */ - { 0x080e0000, 128 * 1024, 11}, /* flash sector 11 - 128kb */ -#endif - /* Bank #2 is not defined */ -#if (BOOT_NVM_SIZE_KB > 2048) -#error "BOOT_NVM_SIZE_KB > 2048 is currently not supported." -#endif -}; \ No newline at end of file diff --git a/firmware/hw_layer/openblt/main_internal_osc.c b/firmware/hw_layer/openblt/main_internal_osc.c deleted file mode 100644 index abb58d2867..0000000000 --- a/firmware/hw_layer/openblt/main_internal_osc.c +++ /dev/null @@ -1,299 +0,0 @@ -/************************************************************************************//** -* \file Demo/ARMCM4_STM32F4_Nucleo_F429ZI_GCC/Boot/main.c -* \brief Bootloader application source file. -* \ingroup Boot_ARMCM4_STM32F4_Nucleo_F429ZI_GCC -* \internal -*---------------------------------------------------------------------------------------- -* C O P Y R I G H T -*---------------------------------------------------------------------------------------- -* Copyright (c) 2021 by Feaser http://www.feaser.com All rights reserved -* -*---------------------------------------------------------------------------------------- -* L I C E N S E -*---------------------------------------------------------------------------------------- -* This file is part of OpenBLT. OpenBLT 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. -* -* OpenBLT 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 have received a copy of the GNU General Public License along with OpenBLT. It -* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy. -* -* \endinternal -****************************************************************************************/ - -/**************************************************************************************** -* Include files -****************************************************************************************/ -#include "boot.h" /* bootloader generic header */ -#include "shared_params.h" /* Shared parameters header */ -#ifdef STM32F429xx -#include "stm32f4xx.h" /* STM32 CPU and HAL header */ -#endif -#ifdef STM32F767xx -#include "stm32f7xx.h" /* STM32 CPU and HAL header */ -#endif -#ifdef STM32H743xx -#include "stm32h7xx.h" /* STM32 CPU and HAL header */ -#endif - - -/**************************************************************************************** -* Function prototypes -****************************************************************************************/ -static void Init(void); -static void SystemClock_Config(void); - - -/************************************************************************************//** -** \brief This is the entry point for the bootloader application and is called -** by the reset interrupt vector after the C-startup routines executed. -** \return Program return code. -** -****************************************************************************************/ -int main(void) -{ - /* initialize the microcontroller */ - Init(); - /* initialize the shared parameters module */ - SharedParamsInit(); - /* initialize the bootloader */ - BootInit(); - - /* start the infinite program loop */ - while (1) - { - /* run the bootloader task */ - BootTask(); - } - - /* program should never get here */ - return 0; -} /*** end of main ***/ - -/************************************************************************************//** -** \brief Interrupt service routine of the timer. -** \return none. -** -****************************************************************************************/ -void SysTick_Handler(void) -{ - /* Increment the tick counter. */ - HAL_IncTick(); - /* Invoke the system tick handler. */ - HAL_SYSTICK_IRQHandler(); -} /*** end of TimerISRHandler ***/ - -/************************************************************************************//** -** \brief Initializes the microcontroller. -** \return none. -** -****************************************************************************************/ -static void Init(void) -{ - /* HAL library initialization */ - HAL_Init(); - /* configure system clock */ - SystemClock_Config(); -} /*** end of Init ***/ - - -/************************************************************************************//** -** \brief System Clock Configuration. This code was created by CubeMX and configures -** the system clock to match the configuration in the bootloader's -** configuration (blt_conf.h), specifically the macros: -** BOOT_CPU_SYSTEM_SPEED_KHZ and BOOT_CPU_XTAL_SPEED_KHZ. -** Note that the Lower Layer drivers were selected in CubeMX for the RCC -** subsystem. -** \return none. -** -****************************************************************************************/ -static void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - - /* Configure the main internal regulator output voltage. */ - __HAL_RCC_PWR_CLK_ENABLE(); - __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); - - /* Initializes the RCC Oscillators according to the specified parameters - * in the RCC_OscInitTypeDef structure. - */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; - RCC_OscInitStruct.PLL.PLLM = 16; - RCC_OscInitStruct.PLL.PLLN = 336; - RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; - RCC_OscInitStruct.PLL.PLLQ = 7; - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - { - /* Clock configuration incorrect or hardware failure. Hang the system to prevent - * damage. - */ - ASSERT_RT(BLT_FALSE); - } - - /* Initializes the CPU, AHB and APB buses clocks. */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) - { - /* Clock configuration incorrect or hardware failure. Hang the system to prevent - * damage. - */ - ASSERT_RT(BLT_FALSE); - } -} /*** end of SystemClock_Config ***/ - - -/************************************************************************************//** -** \brief Initializes the Global MSP. This function is called from HAL_Init() -** function to perform system level initialization (GPIOs, clock, DMA, -** interrupt). -** \return none. -** -****************************************************************************************/ -void HAL_MspInit(void) -{ - GPIO_InitTypeDef GPIO_InitStruct; - - /* Power and SYSCFG clock enable. */ - __HAL_RCC_PWR_CLK_ENABLE(); - __HAL_RCC_SYSCFG_CLK_ENABLE(); - /* GPIO ports clock enable. */ - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - __HAL_RCC_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOE_CLK_ENABLE(); - __HAL_RCC_GPIOH_CLK_ENABLE(); - - /* Configure PE3 pin for the LED. */ - GPIO_InitStruct.Pin = GPIO_PIN_3; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET); - -#if 0 - /* Configure GPIO pin for (optional) backdoor entry input. */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); -#endif - -#if (BOOT_COM_RS232_ENABLE > 0) - /* UART TX and RX GPIO pin configuration. */ - GPIO_InitStruct.Pin = GPIO_PIN_5 | GPIO_PIN_6; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStruct.Alternate = GPIO_AF7_USART2; - HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - - /* UART clock enable. */ - __HAL_RCC_USART2_CLK_ENABLE(); -#endif - -#if (BOOT_COM_CAN_ENABLE > 0) - /* CAN TX and RX GPIO pin configuration. */ - GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStruct.Alternate = GPIO_AF9_CAN1; - HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - - /* CAN clock enable. */ - __HAL_RCC_CAN1_CLK_ENABLE(); -#endif - -#if (BOOT_COM_USB_ENABLE > 0) - /* USB pin configuration. */ - GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - /* USB clock enable. */ - __HAL_RCC_USB_OTG_FS_CLK_ENABLE(); -#endif -} /*** end of HAL_MspInit ***/ - - -/************************************************************************************//** -** \brief DeInitializes the Global MSP. This function is called from HAL_DeInit() -** function to perform system level de-initialization (GPIOs, clock, DMA, -** interrupt). -** \return none. -** -****************************************************************************************/ -void HAL_MspDeInit(void) -{ - /* Reset the RCC clock configuration to the default reset state. */ - HAL_RCC_DeInit(); - - /* Reset GPIO pin for the LED to turn it off. */ - HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET); - - /* Deinit used GPIOs. */ - HAL_GPIO_DeInit(GPIOE, GPIO_PIN_3); - -#if 0 - HAL_GPIO_DeInit(GPIOC, GPIO_PIN_13); -#endif - -#if (BOOT_COM_USB_ENABLE > 0) - /* Deinit used GPIOs. */ - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11); - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_12); - /* USB clock disable. */ - __HAL_RCC_USB_OTG_FS_CLK_DISABLE(); -#endif - -#if (BOOT_COM_CAN_ENABLE > 0) - /* Deinit used GPIOs. */ - HAL_GPIO_DeInit(GPIOD, GPIO_PIN_0); - HAL_GPIO_DeInit(GPIOD, GPIO_PIN_1); - /* CAN clock disable. */ - __HAL_RCC_CAN1_CLK_DISABLE(); -#endif - -#if (BOOT_COM_RS232_ENABLE > 0) - /* Deinit used GPIOs. */ - HAL_GPIO_DeInit(GPIOD, GPIO_PIN_5); - HAL_GPIO_DeInit(GPIOD, GPIO_PIN_6); - /* UART clock disable. */ - __HAL_RCC_USART2_CLK_DISABLE(); -#endif - - /* GPIO ports clock disable. */ - __HAL_RCC_GPIOH_CLK_DISABLE(); - __HAL_RCC_GPIOE_CLK_DISABLE(); - __HAL_RCC_GPIOD_CLK_DISABLE(); - __HAL_RCC_GPIOC_CLK_DISABLE(); - __HAL_RCC_GPIOB_CLK_DISABLE(); - __HAL_RCC_GPIOA_CLK_DISABLE(); - - /* SYSCFG and PWR clock disable. */ - __HAL_RCC_PWR_CLK_DISABLE(); - __HAL_RCC_SYSCFG_CLK_DISABLE(); -} /*** end of HAL_MspDeInit ***/ - - -/*********************************** end of main.c *************************************/ diff --git a/firmware/hw_layer/openblt/openblt.mk b/firmware/hw_layer/openblt/openblt.mk deleted file mode 100644 index 620ef6a13a..0000000000 --- a/firmware/hw_layer/openblt/openblt.mk +++ /dev/null @@ -1,230 +0,0 @@ -#**************************************************************************************** -#| Description: Makefile for GNU ARM Embedded toolchain. -#| File Name: makefile -#| -#|--------------------------------------------------------------------------------------- -#| C O P Y R I G H T -#|--------------------------------------------------------------------------------------- -#| Copyright (c) 2021 by Feaser http://www.feaser.com All rights reserved -#| -#|--------------------------------------------------------------------------------------- -#| L I C E N S E -#|--------------------------------------------------------------------------------------- -#| This file is part of OpenBLT. OpenBLT 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. -#| -#| OpenBLT 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 have received a copy of the GNU General Public License along with OpenBLT. It -#| should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy. -#| -#**************************************************************************************** -SHELL = sh - -#|--------------------------------------------------------------------------------------| -#| Configure project name | -#|--------------------------------------------------------------------------------------| -PROJ_NAME=openblt_$(PROJECT_BOARD) - -#|--------------------------------------------------------------------------------------| -#| Configure tool path | -#|--------------------------------------------------------------------------------------| -# Configure the path to where the arm-none-eabi-gcc program is located. If the program -# is available on the path, then the TOOL_PATH variable can be left empty. -# Make sure to add a fordward slash at the end. Note that on Windows it should be in the -# 8.3 short pathname format with forward slashes. To obtain the pathname in the 8.3 -# format, open the directory in the Windows command prompt and run the following command: -# cmd /c for %A in ("%cd%") do @echo %~sA -TOOL_PATH=$(TRGT) - -#|--------------------------------------------------------------------------------------| -#| Configure sources paths | -#|--------------------------------------------------------------------------------------| -PROJECT_DIR=. -OPENBLT_TRGT_DIR=$(PROJECT_DIR)/ext/openblt/Target -OPENBLT_BOARD_DIR=$(BOARD_DIR)/openblt -ifeq ($(PROJECT_CPU),ARCH_STM32F4) - OPENBLT_PORT_DIR=$(PROJECT_DIR)/hw_layer/ports/stm32/stm32f4/openblt -else ifeq ($(PROJECT_CPU),ARCH_STM32F7) - OPENBLT_PORT_DIR=$(PROJECT_DIR)/hw_layer/ports/stm32/stm32f7/openblt -else ifeq ($(PROJECT_CPU),ARCH_STM32H7) - OPENBLT_PORT_DIR=$(PROJECT_DIR)/hw_layer/ports/stm32/stm32h7/openblt -endif - -#|--------------------------------------------------------------------------------------| -#| Collect helpers | -#|--------------------------------------------------------------------------------------| -# Recursive wildcard function implementation. Example usages: -# $(call rwildcard, , *.c *.h) -# --> Returns all *.c and *.h files in the current directory and below -# $(call rwildcard, /lib/, *.c) -# --> Returns all *.c files in the /lib directory and below -rwildcard = $(strip $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))) - -#|--------------------------------------------------------------------------------------| -#| Include port and board files | -#|--------------------------------------------------------------------------------------| -PROJ_FILES= -include $(OPENBLT_PORT_DIR)/port.mk -include $(OPENBLT_BOARD_DIR)/oblt_board.mk - -#|--------------------------------------------------------------------------------------| -#| Collect bootloader core files | -#|--------------------------------------------------------------------------------------| -PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/*.c) -PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/*.h) - -PROJ_FILES += $(PROJECT_DIR)/hw_layer/openblt/blt_conf.h -PROJ_FILES += $(PROJECT_DIR)/hw_layer/openblt/hooks.c -PROJ_FILES += $(PROJECT_DIR)/hw_layer/openblt/led.c -PROJ_FILES += $(PROJECT_DIR)/hw_layer/openblt/led.h -PROJ_FILES += $(PROJECT_DIR)/hw_layer/openblt/shared_params.c -PROJ_FILES += $(PROJECT_DIR)/hw_layer/openblt/shared_params.h - -# CPU-dependent sources -ifeq ($(PROJECT_CPU),ARCH_STM32F4) - # Collect bootloader port files - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM4_STM32F4/*.c) - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM4_STM32F4/*.h) - # Collect bootloader port compiler specific files - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM4_STM32F4/GCC/*.c) - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM4_STM32F4/GCC/*.h) - # LD file - LFLAGS = -Wl,-script="$(PROJECT_DIR)/hw_layer/ports/stm32/stm32f4/openblt/STM32F4xx.ld" - # Port specific options - PORTFLAGS += -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -else ifeq ($(PROJECT_CPU),ARCH_STM32F7) - # Collect bootloader port files - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM7_STM32F7/*.c) - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM7_STM32F7/*.h) - # Collect bootloader port compiler specific files - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM7_STM32F7/GCC/*.c) - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM7_STM32F7/GCC/*.h) - # LD file - LFLAGS += -Wl,-script="$(PROJECT_DIR)/hw_layer/ports/stm32/stm32f7/openblt/STM32F7xx.ld" - # Port specific options - PORTFLAGS = -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-sp-d16 -else ifeq ($(PROJECT_CPU),ARCH_STM32H7) - # Collect bootloader port files - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM7_STM32H7/*.c) - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM7_STM32H7/*.h) - # Collect bootloader port compiler specific files - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM7_STM32H7/GCC/*.c) - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM7_STM32H7/GCC/*.h) - # LD file - LFLAGS = -Wl,-script="$(PROJECT_DIR)/hw_layer/ports/stm32/stm32h7/openblt/STM32H7xx.ld" - # Port specific options - PORTFLAGS += -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-d16 -endif - -OPTFLAGS = -Os -STDFLAGS = -fno-strict-aliasing -STDFLAGS += -fdata-sections -ffunction-sections -Wall -g3 -CFLAGS = $(PORTFLAGS) $(BRDFLAGS) $(STDFLAGS) $(OPTFLAGS) -CFLAGS += -DUSE_FULL_LL_DRIVER -DUSE_HAL_DRIVER -CFLAGS += $(INC_PATH) -AFLAGS = $(CFLAGS) -LFLAGS += $(PORTFLAGS) $(BRDFLAGS) $(STDFLAGS) $(OPTFLAGS) - -#|--------------------------------------------------------------------------------------| -#| Common options for toolchain binaries | -#|--------------------------------------------------------------------------------------| -LFLAGS += -Wl,-Map=$(BIN_PATH)/$(PROJ_NAME).map -LFLAGS += -specs=nano.specs -Wl,--gc-sections $(LIB_PATH) -OFLAGS = -O srec -ODFLAGS = -x -SZFLAGS = -B -d -RMFLAGS = -f - -#|--------------------------------------------------------------------------------------| -#| Toolchain binaries | -#|--------------------------------------------------------------------------------------| -RM = rm -CC = $(TOOL_PATH)arm-none-eabi-gcc -LN = $(TOOL_PATH)arm-none-eabi-gcc -OC = $(TOOL_PATH)arm-none-eabi-objcopy -OD = $(TOOL_PATH)arm-none-eabi-objdump -AS = $(TOOL_PATH)arm-none-eabi-gcc -SZ = $(TOOL_PATH)arm-none-eabi-size - -#|--------------------------------------------------------------------------------------| -#| Filter project files -#|--------------------------------------------------------------------------------------| -PROJ_ASRCS = $(filter %.s,$(foreach file,$(PROJ_FILES),$(notdir $(file)))) -PROJ_CSRCS = $(filter %.c,$(foreach file,$(PROJ_FILES),$(notdir $(file)))) -PROJ_CHDRS = $(filter %.h,$(foreach file,$(PROJ_FILES),$(notdir $(file)))) - -#|--------------------------------------------------------------------------------------| -#| Set important path variables | -#|--------------------------------------------------------------------------------------| -VPATH = $(foreach path,$(sort $(foreach file,$(PROJ_FILES),$(dir $(file)))) $(subst \,/,$(OBJ_PATH)),$(path) :) -OBJ_PATH = $(PROJECT_DIR)/build-openblt/obj-$(PROJECT_BOARD)/ -BIN_PATH = $(PROJECT_DIR)/build-openblt -INC_PATH = $(patsubst %/,%,$(patsubst %,-I%,$(sort $(foreach file,$(filter %.h,$(PROJ_FILES)),$(dir $(file)))))) -LIB_PATH = - -#|--------------------------------------------------------------------------------------| -#| Define targets | -#|--------------------------------------------------------------------------------------| -AOBJS := $(patsubst %.s,%.o,$(PROJ_ASRCS)) -AOBJS := $(addprefix $(OBJ_PATH),$(AOBJS)) -COBJS := $(patsubst %.c,%.o,$(PROJ_CSRCS)) -COBJS := $(addprefix $(OBJ_PATH),$(COBJS)) - -#|--------------------------------------------------------------------------------------| -#| Make ALL | -#|--------------------------------------------------------------------------------------| -.PHONY: all -all: $(BIN_PATH)/$(PROJ_NAME).srec $(BIN_PATH)/$(PROJ_NAME).hex $(BIN_PATH)/$(PROJ_NAME).bin - -$(BIN_PATH)/$(PROJ_NAME).srec : $(BIN_PATH)/$(PROJ_NAME).elf - @mkdir -p $(@D) - @$(OC) $< $(OFLAGS) $@ - @$(OD) $(ODFLAGS) $< > $(BIN_PATH)/$(PROJ_NAME).map - @echo +++ Summary of memory consumption: - @$(SZ) $(SZFLAGS) $< - @echo +++ Build complete [$(notdir $@)] - -$(BIN_PATH)/$(PROJ_NAME).hex : $(BIN_PATH)/$(PROJ_NAME).elf - @mkdir -p $(@D) - @$(OC) -O ihex $< $@ - -$(BIN_PATH)/$(PROJ_NAME).bin : $(BIN_PATH)/$(PROJ_NAME).elf - @mkdir -p $(@D) - @$(OC) -O binary $< $@ - -$(BIN_PATH)/$(PROJ_NAME).elf : $(OBJ_PATH) $(AOBJS) $(COBJS) - @mkdir -p $(@D) - @echo +++ Linking [$(notdir $@)] - @echo $(patsubst %.o,$(OBJ_PATH)%.o,$(^F)) - @$(LN) $(LFLAGS) -o $@ $(patsubst %.o,$(OBJ_PATH)%.o,$(^F)) $(LIBS) - -#|--------------------------------------------------------------------------------------| -#| Compile and assemble | -#|--------------------------------------------------------------------------------------| -$(OBJ_PATH)%.o: %.s - @echo +++ Assembling [$<] to [$@] - @$(AS) $(AFLAGS) -c $< -o $@ - -$(OBJ_PATH)%.o: %.c - @echo +++ Compiling [$<] to [$@] - @$(CC) $(CFLAGS) -c $< -o $@ - -$(OBJ_PATH): - @echo AOBJS = $(AOBJS) - @echo COBJS = $(COBJS) - @mkdir -p $(OBJ_PATH) - -#|--------------------------------------------------------------------------------------| -#| Make CLEAN | -#|--------------------------------------------------------------------------------------| -.PHONY: clean -clean: - @echo +++ Cleaning build environment - @$(RM) $(RMFLAGS) -r $(OBJ_PATH) - @$(RM) $(RMFLAGS) -r $(BIN_PATH) - @echo +++ Clean complete \ No newline at end of file diff --git a/firmware/hw_layer/ports/stm32/stm32f4/STM32F4.ld b/firmware/hw_layer/ports/stm32/stm32f4/STM32F4.ld index 7fc0477a83..f9f76bed85 100644 --- a/firmware/hw_layer/ports/stm32/stm32f4/STM32F4.ld +++ b/firmware/hw_layer/ports/stm32/stm32f4/STM32F4.ld @@ -30,7 +30,7 @@ RAM3_SIZE = DEFINED(STM32F4_HAS_SRAM3) ? 64k : 0; SDRAM_SIZE = DEFINED(STM32_HAS_SDRAM) ? 8M : 0; /* OpenBLT <-> main FW shared area */ -_OpenBLT_Shared_Params_Size = DEFINED(BOOTLOADER) ? 16 : 0; +_OpenBLT_Shared_Params_Size = DEFINED(BOOTLOADER) || DEFINED(IS_BOOTLOADER) ? 16 : 0; MEMORY { diff --git a/firmware/hw_layer/ports/stm32/stm32f7/STM32F7.ld b/firmware/hw_layer/ports/stm32/stm32f7/STM32F7.ld index 39b90f9d80..fa280ac261 100644 --- a/firmware/hw_layer/ports/stm32/stm32f7/STM32F7.ld +++ b/firmware/hw_layer/ports/stm32/stm32f7/STM32F7.ld @@ -25,12 +25,10 @@ * 'bl' is related to rusefi bootloader */ - /* TODO: 512k flash limit is a mitigation for https://github.com/rusefi/rusefi/issues/3566 and https://github.com/rusefi/rusefi/issues/3775 */ -/* flash_size = DEFINED(FLASH_SIZE) ? FLASH_SIZE : 512k; */ flash_size = DEFINED(FLASH_SIZE) ? FLASH_SIZE : 768k; /* OpenBLT <-> main FW shared area */ -_OpenBLT_Shared_Params_Size = DEFINED(BOOTLOADER) ? 16 : 0; +_OpenBLT_Shared_Params_Size = DEFINED(BOOTLOADER) || DEFINED(IS_BOOTLOADER) ? 16 : 0; MEMORY {