#!/bin/sh # # This script helps with importing framework source files from an STM32CubeMX # code generation dump. It does not prepare the complete project, and is # mainly intended for use in tracking framework code changes. # # Files copied by this script may overwrite local changes within the project, # so changed files should be carefully inspected before checking them in. # # This script can also be used as documentation on how the STM32CubeMX code # dump is translated into the project directory structure. # # # Validate arguments to get input and output paths # if [[ -f "$1/.mxproject" ]]; then CUBEDIR=$1 else echo "Need a valid CubeMX output path" exit 1 fi if [[ -z "$2" ]]; then if [[ -f ".project" ]]; then PROJDIR="`readlink -f .`" elif [[ -f "../.project" ]]; then PROJDIR="`readlink -f ..`" fi elif [[ -f "$2/.project" ]]; then PROJDIR=`readlink -f $2` fi if [[ ! -f "$PROJDIR/.project" ]]; then echo "Need a valid project path" exit 1 fi echo "CubeMX path: $CUBEDIR" echo "Project path: $PROJDIR" # # Linker configuration files # cp "${CUBEDIR}/"*.ld "${PROJDIR}/" # # Project core sources # mkdir -p "${PROJDIR}/src/system" cp "${CUBEDIR}/Core/Startup/"startup_stm32f411retx.s "${PROJDIR}/src/system/" cp "${CUBEDIR}/Core/Inc/"stm32f4xx*.h "${PROJDIR}/src/system/" cp "${CUBEDIR}/Core/Src/"stm32f4xx*.c "${PROJDIR}/src/system/" cp "${CUBEDIR}/Core/Src/"sys*.c "${PROJDIR}/src/system/" # # External driver code # mkdir -p "${PROJDIR}/external/drivers/stm32f4xx/src" cp -r "${CUBEDIR}/Drivers/STM32F4xx_HAL_Driver/Src/"* "${PROJDIR}/external/drivers/stm32f4xx/src/" mkdir -p "${PROJDIR}/external/drivers/stm32f4xx/include" cp -r "${CUBEDIR}/Drivers/STM32F4xx_HAL_Driver/Inc/"* "${PROJDIR}/external/drivers/stm32f4xx/include/" mkdir -p "${PROJDIR}/external/drivers/cmsis/include" cp -r "${CUBEDIR}/Drivers/CMSIS/Device/ST/STM32F4xx/Include/"* "${PROJDIR}/external/drivers/cmsis/include/" cp -r "${CUBEDIR}/Drivers/CMSIS/Include/"* "${PROJDIR}/external/drivers/cmsis/include/" # # External USB support code # mkdir -p "${PROJDIR}/external/usb/core/src" cp -r "${CUBEDIR}/Middlewares/ST/STM32_USB_Host_Library/Core/Src/"* "${PROJDIR}/external/usb/core/src/" mkdir -p "${PROJDIR}/external/usb/core/include" cp -r "${CUBEDIR}/Middlewares/ST/STM32_USB_Host_Library/Core/Inc/"* "${PROJDIR}/external/usb/core/include/" mkdir -p "${PROJDIR}/external/usb/class/src" cp -r "${CUBEDIR}/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/"* "${PROJDIR}/external/usb/class/src/" cp -r "${CUBEDIR}/Middlewares/ST/STM32_USB_Host_Library/Class/HID/Src/"* "${PROJDIR}/external/usb/class/src/" cp -r "${CUBEDIR}/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/"* "${PROJDIR}/external/usb/class/src/" mkdir -p "${PROJDIR}/external/usb/class/include" cp -r "${CUBEDIR}/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc/"* "${PROJDIR}/external/usb/class/include/" cp -r "${CUBEDIR}/Middlewares/ST/STM32_USB_Host_Library/Class/HID/Inc/"* "${PROJDIR}/external/usb/class/include/" cp -r "${CUBEDIR}/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc/"* "${PROJDIR}/external/usb/class/include/" mkdir -p "${PROJDIR}/external/usb/target" cp -r "${CUBEDIR}/USB_HOST/Target/"* "${PROJDIR}/external/usb/target/" # # External FATFS support code # mkdir -p "${PROJDIR}/external/fatfs/src" cp -r "${CUBEDIR}/Middlewares/Third_Party/FatFs/src/"* "${PROJDIR}/external/fatfs/src/" mkdir -p "${PROJDIR}/external/fatfs/target" cp -r "${CUBEDIR}/FATFS/Target/"* "${PROJDIR}/external/fatfs/target/" # # External FreeRTOS code # mkdir -p "${PROJDIR}/external/freertos" cp -r "${CUBEDIR}/Middlewares/Third_Party/FreeRTOS/Source/"* "${PROJDIR}/external/freertos/"