Loading...
 

SW4STM32 and SW4Linux fully supports the STM32MP1 asymmetric multicore Cortex/A7+M4 MPUs

   With System Workbench for Linux, Embedded Linux on the STM32MP1 family of MPUs from ST was never as simple to build and maintain, even for newcomers in the Linux world. And, if you install System Workbench for Linux in System Workbench for STM32 you can seamlessly develop and debug asymmetric applications running partly on Linux, partly on the Cortex-M4.
You can get more information from the ac6-tools website and download (registration required) various documents highlighting:

System Workbench for STM32


System Workbench is losing some settings

Hi,
I have created a STM32CubeMX (V4.23) project for use with a Nulceo-L476 development board. The project is simple in that it only sets up SYS for serial wire debug, the LED and Push Button GPIO and USART2. All this works as expected.

This CubeMX project is then imported into System Workbench (V2.2) which builds and debugs as expected.

I then add to the project a directory \App containing \Inc and \Src with source code that I would like to keep separate from the \Src and \Inc directories created by CubeMX. I am able to change the properties of the \App directory with include paths as required etc. This also builds as expected.

Now I exit System Workbench then restart it, to find that the build fails with the following messages.

c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/bin/ld.exe: error: FW_0004.elf uses VFP register arguments, App/Src/AppMain.o does not

There is one message for each of the source files in my \App directory.

On checking the properties of my \App directory I see that they have changed in terms of the floating point configuration which appears to be the cause of the linker errors. I have only shown the area that has changed.

The initial settings were:
-mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 ...

But have changed to:
-mcpu=cortex-m4 -mthumb -mfloat-abi=soft ...

If I check my top level project node, FW_0004, I see that the MPU Settings select a hard FPU as expected.

The \App node correctly inherits the FPU settings initially, but after System Workbench is shutdown where is it getting the incorrect settings from and why?

Is there a way to re-inherit the correct settings for \App similarly to what happens when a new directory is created?

So far the only way that I can get the correct settings is to delete then recreate the \App directory and its contents, then apply the required settings to this node. This only lasts until the next time System Workbench is exited.

Any help would be appreciated.

Regards
FarmerJo

Hi FarmerJo,

This behavior is a known bug and it was fixed in the System Workbench V2.3.
So I suggest you to update your System Workbench or download the latest installer.

Best Regards,
vionf

Hi vionf,

Thanks for that it now keeps its configuration settings.

I have two more questions if possible.

How do you stop System Workbench from automatically building when you change from a Debug target to a Release target or vice-versa?

I have a header file with some conditional items in it based on the setting of DEBUG and RELEASE etc. The greyed out areas in the file are not changing accoring to weather or not these Preprocessor symbols are defined. They are indeed define and the code works as expected but the display does not. Any ideas?

Regards
FarmerJo

Hi,

When you refer to the “automatically building”, you mean the build of C/C++ Indexer or the build of the src project?

Concerning the greyed out area, go to the properties of your project > C/C++ General > Indexer
1) Activate the checkbox “Enable project specific settings”
2) Activate the radio button “Use active build configuration” in the group “Build configuration for the indexer”
3) Deactivate the checkbox “Reindex project on change of active build configuration” if you don’t want to rebuild the indexer each time you switch between DEBUG - RELEASE target

I think it is also possible to define this behavior in global preferences. In that case, go to window menu > preferences > C/C++ > Indexer

Regards,
vionf


United Kingdom

Hi vionf,

Sorry for the slow reply.

In automatic building I was referring to the rebuilding of the src code whenever I change from Debug to Release build or vice-versa.

I also made the changes to the indexer which now works as expected. Thanks.

Regards
FarmerJo