Consider a CubeMX project where you have configured the STM32F103 microcontroller and have chosen EWARM as the main IDE/Toolchain. When generating code, if you select the Application Structure to advance, you may encounter the following directory structure:
YourPrjName:
|--Core
|--Driver
|--EWARM
|CubePrj.ioc
|.mxproject
Now, let's say you want to place both the Core and Driver folders inside another folder named BSW, and generate the Cube project related files in a different location. The updated directory structure would look like this:
YourPrjName:
|--BSW
| |__Core
| |--Driver
|--EWARM
|--CubePrj
| |--CubePrj.ioc
| |--.mxproject
In this revised structure, the Core and Driver folders are located within the BSW folder, and the Cube project files placed under the CubePrj directory.
How this is possible?
STM32CubeMX might not give you the flexibility you need for you to customize your project tree layout. The only option offered for the Code Generator is "Generate peripheral initialization as a pair of '.c/.h' files per peripheral" and that is it.
IAR provides a small utility named EWPtool which can not only (re)populate an existing project based on a folder selection with its sources but also can update references in the preprocessor paths to the header files accordingly.
It is possible to use the utility from the command line with this parameter syntax:
But for that you need to make sure you have the file
EWARM\settings\YourPrjName.cfgwith the following:And then, after moving folders around, you run
EWPtoolfrom the project'sEWARMfolder:Their official repository contains extra use case examples which might be useful.