diff --git a/.gitignore b/.gitignore index f0d313c..7c94371 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ /firmware/Release/ /bootloader/Debug/ /bootloader/Release/ +*debug* diff --git a/firmware/.idea/.gitignore b/firmware/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/firmware/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/firmware/.idea/.name b/firmware/.idea/.name new file mode 100644 index 0000000..66d4b7e --- /dev/null +++ b/firmware/.idea/.name @@ -0,0 +1 @@ +BMS_v3 \ No newline at end of file diff --git a/firmware/.idea/firmware.iml b/firmware/.idea/firmware.iml new file mode 100644 index 0000000..f08604b --- /dev/null +++ b/firmware/.idea/firmware.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/firmware/.idea/misc.xml b/firmware/.idea/misc.xml new file mode 100644 index 0000000..b06c61e --- /dev/null +++ b/firmware/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/firmware/.idea/modules.xml b/firmware/.idea/modules.xml new file mode 100644 index 0000000..cb860b6 --- /dev/null +++ b/firmware/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/firmware/.idea/vcs.xml b/firmware/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/firmware/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/firmware/CMakeLists.txt b/firmware/CMakeLists.txt new file mode 100644 index 0000000..11435d7 --- /dev/null +++ b/firmware/CMakeLists.txt @@ -0,0 +1,99 @@ +#THIS FILE IS AUTO GENERATED FROM THE TEMPLATE! DO NOT CHANGE! +set(CMAKE_SYSTEM_NAME Generic) +set(CMAKE_SYSTEM_VERSION 1) +cmake_minimum_required(VERSION 3.24) + +# specify cross-compilers and tools +set(CMAKE_C_COMPILER arm-none-eabi-gcc) +set(CMAKE_CXX_COMPILER arm-none-eabi-g++) +set(CMAKE_ASM_COMPILER arm-none-eabi-gcc) +set(CMAKE_AR arm-none-eabi-ar) +set(CMAKE_OBJCOPY arm-none-eabi-objcopy) +set(CMAKE_OBJDUMP arm-none-eabi-objdump) +set(SIZE arm-none-eabi-size) +set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) + +# project settings +project(BMS_v3 C CXX ASM) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_C_STANDARD 11) + +#Uncomment for hardware floating point +#add_compile_definitions(ARM_MATH_CM4;ARM_MATH_MATRIX_CHECK;ARM_MATH_ROUNDING) +#add_compile_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16) +#add_link_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16) + +#Uncomment for software floating point +#add_compile_options(-mfloat-abi=soft) +# +#add_compile_options(-mcpu=cortex-m4 -mthumb -mthumb-interwork) +#add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0) + +add_compile_options(-mcpu=cortex-m3 -mthumb -mthumb-interwork) +add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0) +add_compile_options(-fcommon) + +# uncomment to mitigate c++17 absolute addresses warnings +#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-register") + +# Enable assembler files preprocessing +add_compile_options($<$:-x$assembler-with-cpp>) + +if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release") + message(STATUS "Maximum optimization for speed") + add_compile_options(-Ofast) +elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") + message(STATUS "Maximum optimization for speed, debug info included") + add_compile_options(-Ofast -g) +elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel") + message(STATUS "Maximum optimization for size") + add_compile_options(-Os) +else () + message(STATUS "Minimal optimization, debug info included") + add_compile_options(-Og -g) +endif () + +include_directories( + Core/Inc + + Drivers/CMSIS/Device/ST/STM32F1xx/Include + Drivers/CMSIS/Include + + Drivers/STM32F1xx_HAL_Driver/Inc + Drivers/STM32F1xx_HAL_Driver/Inc/Legacy + + Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc + Middlewares/ST/STM32_USB_Device_Library/Core/Inc + + Middlewares/Third_Party/FatFs/src + + USB_DEVICE/App + USB_DEVICE/Target +) + +add_definitions(-DDEBUG -DUSE_HAL_DRIVER -DSTM32F107xC) + +file(GLOB_RECURSE SOURCES "startup/*.*" "USB_DEVICE/*.*" "Middlewares/*.*" "Drivers/*.*" "Core/*.*") + +#set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/) +# +#add_link_options(-Wl,-gc-sections,--print-memory-usage,-Map=${PROJECT_BINARY_DIR}/${PROJECT_NAME}.map) +#add_link_options(-mcpu=cortex-m4 -mthumb -mthumb-interwork) +#add_link_options(-T ${LINKER_SCRIPT}) + +set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/STM32F107VCTx_FLASH.ld) + +add_link_options(-Wl,-gc-sections,--print-memory-usage,-Map=${PROJECT_BINARY_DIR}/${PROJECT_NAME}.map) +add_link_options(-mcpu=cortex-m3 -mthumb -mthumb-interwork) +add_link_options(-T ${LINKER_SCRIPT}) + +add_executable(${PROJECT_NAME}.elf ${SOURCES} ${LINKER_SCRIPT}) + +set(HEX_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.hex) +set(BIN_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.bin) + +add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD + COMMAND ${CMAKE_OBJCOPY} -Oihex $ ${HEX_FILE} + COMMAND ${CMAKE_OBJCOPY} -Obinary $ ${BIN_FILE} + COMMENT "Building ${HEX_FILE} +Building ${BIN_FILE}") diff --git a/firmware/CMakeLists_template.txt b/firmware/CMakeLists_template.txt new file mode 100644 index 0000000..84e7b6f --- /dev/null +++ b/firmware/CMakeLists_template.txt @@ -0,0 +1,101 @@ +#${templateWarning} +set(CMAKE_SYSTEM_NAME Generic) +set(CMAKE_SYSTEM_VERSION 1) +${cmakeRequiredVersion} +# specify cross-compilers and tools +set(CMAKE_C_COMPILER arm-none-eabi-gcc) +set(CMAKE_CXX_COMPILER arm-none-eabi-g++) +set(CMAKE_ASM_COMPILER arm-none-eabi-gcc) +set(CMAKE_AR arm-none-eabi-ar) +set(CMAKE_OBJCOPY arm-none-eabi-objcopy) +set(CMAKE_OBJDUMP arm-none-eabi-objdump) +set(SIZE arm-none-eabi-size) +set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) + +# project settings +project(${projectName} C CXX ASM) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_C_STANDARD 11) + +#Uncomment for hardware floating point +#add_compile_definitions(ARM_MATH_CM4;ARM_MATH_MATRIX_CHECK;ARM_MATH_ROUNDING) +#add_compile_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16) +#add_link_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16) + +#Uncomment for software floating point +#add_compile_options(-mfloat-abi=soft) + +#add_compile_options(-mcpu=${mcpu} -mthumb -mthumb-interwork) +#add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0) + +add_compile_options(-mcpu=cortex-m3 -mthumb -mthumb-interwork) +add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0) +add_compile_options(-fcommon) + +# uncomment to mitigate c++17 absolute addresses warnings +#set(CMAKE_CXX_FLAGS "$${CMAKE_CXX_FLAGS} -Wno-register") + +# Enable assembler files preprocessing +add_compile_options($<$:-x$assembler-with-cpp>) + +if ("$${CMAKE_BUILD_TYPE}" STREQUAL "Release") + message(STATUS "Maximum optimization for speed") + add_compile_options(-Ofast) +elseif ("$${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") + message(STATUS "Maximum optimization for speed, debug info included") + add_compile_options(-Ofast -g) +elseif ("$${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel") + message(STATUS "Maximum optimization for size") + add_compile_options(-Os) +else () + message(STATUS "Minimal optimization, debug info included") + add_compile_options(-Og -g) +endif () + +#include_directories(${includes}) +include_directories( + Core/Inc + + Drivers/CMSIS/Device/ST/STM32F1xx/Include + Drivers/CMSIS/Include + + Drivers/STM32F1xx_HAL_Driver/Inc + Drivers/STM32F1xx_HAL_Driver/Inc/Legacy + + Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc + Middlewares/ST/STM32_USB_Device_Library/Core/Inc + + Middlewares/Third_Party/FatFs/src + + USB_DEVICE/App + USB_DEVICE/Target +) + +#add_definitions(${defines}) +add_definitions(-DDEBUG -DUSE_HAL_DRIVER -DSTM32F107xC) + + +file(GLOB_RECURSE SOURCES ${sources}) + +#set(LINKER_SCRIPT $${CMAKE_SOURCE_DIR}/${linkerScript}) + +#add_link_options(-Wl,-gc-sections,--print-memory-usage,-Map=$${PROJECT_BINARY_DIR}/$${PROJECT_NAME}.map) +#add_link_options(-mcpu=${mcpu} -mthumb -mthumb-interwork) +#add_link_options(-T $${LINKER_SCRIPT}) + +set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/STM32F107VCTX_FLASH.ld) + +add_link_options(-Wl,-gc-sections,--print-memory-usage,-Map=${PROJECT_BINARY_DIR}/${PROJECT_NAME}.map) +add_link_options(-mcpu=cortex-m3 -mthumb -mthumb-interwork) +add_link_options(-T ${LINKER_SCRIPT}) + +add_executable($${PROJECT_NAME}.elf $${SOURCES} $${LINKER_SCRIPT}) + +set(HEX_FILE $${PROJECT_BINARY_DIR}/$${PROJECT_NAME}.hex) +set(BIN_FILE $${PROJECT_BINARY_DIR}/$${PROJECT_NAME}.bin) + +add_custom_command(TARGET $${PROJECT_NAME}.elf POST_BUILD + COMMAND $${CMAKE_OBJCOPY} -Oihex $ $${HEX_FILE} + COMMAND $${CMAKE_OBJCOPY} -Obinary $ $${BIN_FILE} + COMMENT "Building $${HEX_FILE} +Building $${BIN_FILE}") diff --git a/firmware/Core/Inc/GSM.h b/firmware/Core/Inc/GSM.h index 06b84aa..dcb3625 100644 --- a/firmware/Core/Inc/GSM.h +++ b/firmware/Core/Inc/GSM.h @@ -30,7 +30,7 @@ #define __GSMMODULE_H #include "main.h" -#include "modconfig.h" +#include "modConfig.h" //#include "string.h" //#include "stdlib.h" diff --git a/firmware/Core/Inc/driverSWUART2.h b/firmware/Core/Inc/driverSWUART2.h index 8251119..fc42d4e 100644 --- a/firmware/Core/Inc/driverSWUART2.h +++ b/firmware/Core/Inc/driverSWUART2.h @@ -3,7 +3,7 @@ #include #include #include "driverHWUART2.h" -#include "libRingBuffer.h" +#include "libRingbuffer.h" #define RINGBUFFERSIZE 1024