cancel
Showing results for 
Search instead for 
Did you mean: 

STM32Cube development system IDE, Workspace, Cube Repository, Project Explorer, Backup...

B.Michele
Associate III

Hi,

I'm start to Develop a New Project system with eLearning programs. I would like to mainly use a single development tool: STM32 CubeIDE with an .ioc configure and C Firmware Source and Include code...

1) Is it possible to use only the CubeIDE almost exclusively, to create a project, add firmware, debug and program the board to micro STM32 ?? (Eventually use the Cube MX only to retrieve a project from a NUCLEO BOARD ??)

2) Personal Workspace: is it recommended or possible to have a single Workspace, or to have Many, one for each project/board ?? (I would like to keep all my projects and firmware of my electronic Boards separate!)

3) The "Repository" directory is unique ?? and is it outside from my main project ??

this folder not need backup ?? can it be recreated if i lost my PC ??

4) To Save and backup my projects, is it enough to save all the root Project Explorer, or do

I have to keep and save also the entire Workspace??

Thank you very much

Michele

1 ACCEPTED SOLUTION

Accepted Solutions

Now I understand the background of your question. In principle, the specifications of the STM32CubeIDE are only suggestions, how you handle your projects is ultimately up to you.

CubeIDE therefore suggests having a workspace into which you import your projects, but which remain there after you close it (without deleting it).

If you are now working on a project, it may well consist of several sub-projects, which can all be loaded into CubeIDE at the same time. You can then compile each one separately, for example, or all of them at the same time.

When starting CubeIDE, you can select the workspace to be used, which is based on the version number of CubeIDE by default. Of course, you also have the option of using a separate (CubeIDE) workspace for each project (be it one with one or more subprojects).

The only catch is that the CubeIDE preferences and development artifacts are also stored in the workspace as defined by STM32CubeIDE, so it can happen that CubeIDE behaves differently depending on the workspace selected.

However, you could also set up the file structure within the (CubeIDE) workspace in such a way that you first create your personal (sub-) workspaces as folders there, in which the respective sub-projects (one or more) are then located. This would have the advantage of keeping the above settings in the same (CubeIDE) workspace.

There are even more ways to organise your work. The best thing to do is to familiarise yourself with the philosophy of Eclipse so that you can find your personal structure.

BTW: The project structure you listed is typical for the case:

IOC > Project Manager > Project --> Toolchain/IDE = STM32CubeIDE (Generate Under Root)

...which means .project, *.ioc etc are stored at the root of the project folder, not in the folder CubeIDE. If you create projects for other target compilers (IAR, Keil, etc) with the external tool STM32CubeMX, a named subfolder is created in the project (EWARM, MDK-ARM, etc).

You also have the folder Debug, possibly later also Release, both of which contain the respective files: generated object code, map/list files, ELF, possibly also BIN or HEX files. Everything in Debug and/or Release can be deleted or omitted without any problems during the backup, because it can be restored from the source codes at any time. If necessary, you can still save the source code for quicker access.

Regards

/Peter

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

View solution in original post

9 REPLIES 9
Peter BENSCH
ST Employee
  1. Yes, you can definitely work exclusively with STM32CubeIDE.
  2. The workspace is actually only used to save the different projects and the respective settings of the GUI. The projects themselves are typically each in their own folder, which is independent of the others and the workspace and can therefore be easily copied or moved to another workspace or computer.
  3. If by repository you mean where the firmware libraries are stored: yes, it is usually outside your project on any file system accessible from the current computer. This repository can be restored at any time, either via the built-in installation and update routines of STM32CubeIDE/CubeMX, or from Github. A backup would only take up a huge amount of space, but saves time when reinstalling, because downloading usually takes longer.
  4. See under 2. It is sufficient to back up the project directory.

Does it answer your questions?

Regards

/Peter

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

Hello and thanks for the support,

Yes it is a little bit clear, the systems are very big, I have to evaluate them carefully!:grinning_face_with_sweat:

Ok, now I'm try to do experiments..., the my principal Backup of the Firmware Board is the project directory that in the cubeIDE is about:

.settings

Core

Debug

Drivers

.cproject

.mxproject

STM32H563VITX_FLASH.ld

STM32H563VITX_RAM.ld

File_Name_example.ioc

....

One thing, I would like to insist on clarifying; in my electronic design (i.e. Altium designer) I always create a New Workspace for EACH project (for each electronic board). I can't quite understand if in the STMCubeIDE it is better for me to have a single generic Workspace, or to have a different Workspace for each Firmware/Board... ???? in the my project folder...

Thank you very much

Michele

Now I understand the background of your question. In principle, the specifications of the STM32CubeIDE are only suggestions, how you handle your projects is ultimately up to you.

CubeIDE therefore suggests having a workspace into which you import your projects, but which remain there after you close it (without deleting it).

If you are now working on a project, it may well consist of several sub-projects, which can all be loaded into CubeIDE at the same time. You can then compile each one separately, for example, or all of them at the same time.

When starting CubeIDE, you can select the workspace to be used, which is based on the version number of CubeIDE by default. Of course, you also have the option of using a separate (CubeIDE) workspace for each project (be it one with one or more subprojects).

The only catch is that the CubeIDE preferences and development artifacts are also stored in the workspace as defined by STM32CubeIDE, so it can happen that CubeIDE behaves differently depending on the workspace selected.

However, you could also set up the file structure within the (CubeIDE) workspace in such a way that you first create your personal (sub-) workspaces as folders there, in which the respective sub-projects (one or more) are then located. This would have the advantage of keeping the above settings in the same (CubeIDE) workspace.

There are even more ways to organise your work. The best thing to do is to familiarise yourself with the philosophy of Eclipse so that you can find your personal structure.

BTW: The project structure you listed is typical for the case:

IOC > Project Manager > Project --> Toolchain/IDE = STM32CubeIDE (Generate Under Root)

...which means .project, *.ioc etc are stored at the root of the project folder, not in the folder CubeIDE. If you create projects for other target compilers (IAR, Keil, etc) with the external tool STM32CubeMX, a named subfolder is created in the project (EWARM, MDK-ARM, etc).

You also have the folder Debug, possibly later also Release, both of which contain the respective files: generated object code, map/list files, ELF, possibly also BIN or HEX files. Everything in Debug and/or Release can be deleted or omitted without any problems during the backup, because it can be restored from the source codes at any time. If necessary, you can still save the source code for quicker access.

Regards

/Peter

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

Thank you very much for your clear explanations.

Now I have to start developing everything calmly;

Let me start as simple as possible, With STM32CubeIDE - IDE based on Eclipse and GCC, freeware compiler (I dont' use others compiler, NO third-party programs...)

May be i use STM32CubeMX and choose the nucleo-h563zi Board project, for the Firmware Startup... and configure the 1° project, then I finish the development with the STM32CubeIDE.

I Use STLINK-V3SET For Debug and program the STM32H563 Micro

May be in future that i Develop on a new project the freeware RTOS (I Think Atollic FreeRTOS)

STM32CubeMX  --> New Project -> He Ask to me "TrustZone activated" ??.

Now i don't need "Trust mode" then i choose "Without". If i need it in the future the TrustZone activated I have to redo the whole project ??

Thank you very much

Michele

STM32CubeMX does not ask for the use of TrustZone at the beginning of programme creation without reason, because a number of other settings depend on it.

Yes, if you have generated a project without TrustZone and want to add it later, you have to go through the whole process again, which also generates a significantly different project structure with additional folders (NonSecure, Secure, etc). 

If necessary, one could save the previous programme, create the new one with TrustZone and then transfer one's own programme parts from the previous one. However, this seems to be quite time-consuming, so it is better to know from the beginning whether TrustZone will be used or not.

Regards

/Peter

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

Hi Peter, I'm sorry, I have one last question:

For Develop, Debug and Program the micro I Have NOW the STLINK-V3SET

In the past I've always used the simple little SWD interface, with few Pin;

SWDIO # SWCLK # NRST # Boot # +3V3 # GND

Now with these "big" micros and complex functions like Ethernet and much more.. it's better to use the more complete JTAG interface Pin; ???

T_JTMS # T_JCLK # T_JTDO # T_JTDI # T_NRST # +3V3 # GND

Should I just use the full JTAG, it is; faster ??, more reliable ?? more complete ??

(I have 100 pins available so I don't have to save resources...)

Thank you very much

Michele

Well, you can also debug Ethernet and other bigger applications via SWD interface. The STLINK-V3SET even helps with its significantly higher SWD speed.

Depending on the JTAG debugger used, debugging via JTAG has some additional functions that also make it interesting - but it is not a mandatory requirement.

Regards

/Peter

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

Good!

Oh finally, I have Only One type of Debugger: I Have Only STLINK-V3SET (& Only Cube IDE or MX --> No others third-party....)

Now i must choose whether to integrate in my board a connector for SWD (5 wire) or for JTAG (7 wire)

are they similar in difficulty? if i don't have problems to saving pins, is it better to use the full JTAG??

Thank you very much

Michele

If you don't provide a JTAG port, which requires a JTAG debugger to use anyway, then you may well be annoyed later. But as I said, JTAG is not a mandatory requirement, ultimately it's your decision.

If the problem is solved, please mark this thread as answered by selecting Select as best, as also explained here. This will help other users find that answer faster.

Good luck!

/Peter

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.