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


STM32F303 hardware floating point compiler settings

I am not certain what the proper toolchain settings are to enable use of hardware floating point on those STM32’s that use a M3 or M4 core.

My current project uses a STM32F303RE MCU, and will (probably) require the use of floating point math and DSP functions. If I want to make use of the M4 core’s FPU, what are the appropriate project settings under Project->Properties->Tool Settings (tab)->MCU settings for “Floating point hardware” and “Floating-point ABI” ?

I figure that “Floating-point ABI” should be set to “hard” (or maybe “softfp” ?) but I’m not certain what to select for “Floating point hardware”. There are over a dozen different choices (e.g. “vfp”, “vfp3”, “vfp3-fp16”, etc.) and it is not at all clear which is the appropriate one for a M4 core device like the STM32F303.

Can anyone suggest which FP hardware setting is appropriate for the -F303? And, for that matter, what should it be for the F1xx/L1xx, F2xx/L2xx, F4xx and F7xx series devices?

Is there anything else that needs to be done (e.g. symbols #define’d, other compiler or linker options specified, etc.) to enable use of hardware floating point?

Assume for the sake of this discussion that no HAL or other external code other than the CMSIS headers is being used in this application.

I have a (possible) answer to my own question, although I’d still welcome some discussion and confirmation of my findings.

At the start of section 4.6 in ST document PM0214, “STM32F3 and STM32F4 Series Cortex-M4 Programming Manual” it states:

“The Cortex-M4F FPU implements the FPv4-SP floating-point extension”

The closest entry in the floating point hardware list to this is “fpv4-sp-16”, so I selected this along with the “hard” selection for the floating point ABI.

After setting this up, I forced a full rebuild of my application. It built and ran successfully.

I confirmed that there is a significant (positive) performance difference between using hardware vs. software FP. I wrote a simple test application that performed a single FP addition and FP multiply within a loop that was set to execute for exactly 1 second. The hardware FP test ran a bit over 3x the number of iterations per second that the software FP one ran.


Sorry, new here and pretty sure off-toppic but did not find any forum to post my issue. I’m trying to write the option bytes for wrp to an STM32F303CBT7 via a monitor-program created with the stm cubeMX tool. And sorry i am little new to this but I am only able to write to WRP0 and WRP1 option bytes, but not WRP2 and WRP3. Do anyone have an Idea what I am doing wrong?