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


Can't run any program that uses floating point arithmetic in STM32F4219 (Cortex M4) (Solved)

I’m having and issue with floating point arithmetic with a Cortex-M4 CPU (STM32F429).
Starting with a clean project generated with CubeMX for STM32F429I DISC1 board, I have added to main.c a simple function to compute some sinusoidal samples:

void generate_datad(void)

{
int32_t i, cc;
float *ptr;
float phase;

ptr = &datad0;
phase = 2.0 * (float)M_PI*15e3/2e6;
i = 1024;
cc = 0;
while(i)
{
*ptr++ = sinf(phase * (float)cc++);
*ptr++ = sinf(phase * (float)cc++);
*ptr++ = sinf(phase * (float)cc++);
*ptr++ = sinf(phase * (float)cc++);
i -=4;
}

}


Also I have include “math.h” in main.c and checked “Use C math library (-lm)” option.

When debugging the program using a break-point just after calling this simple function, the CPU become freeze at all. It doesn’t respond to pause nor stop then I can’t watch results nor see where is the problem. The only way I have to take control again is to terminate the debug session, losing all information.

I have checked that MCU floating point options are right (fp hardware=fpv4-sp-d16, fp ABI=hard, instruction set=Thumb II).
My compiler flags are:

-+

-mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Dweak=”attributeweak” -Dpacked=”attributepacked” -DUSE_HAL_DRIVER -DSTM32F429xx -I../Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Drivers/CMSIS/Include -Og -g3 -Wall -fmessage-length=0 -ffunction-sections -c -fmessage-length=0

+-

and linker ones are:

-+

-mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -specs=nosys.specs -specs=nano.specs -T”../STM32F429ZITx_FLASH.ld” -Wl,-Map=output.map -Wl,--gc-sections -lm

+-

Tried with and without ARM_MATH_CM4.

Somebody has any clue where could be the problem.

Thank you.

This problem can be marked as solved.

I forgot to code SysTicck ISR. Then, as used floating point operations takes more time than a 1ms, the SysTick ISR is launched and serviced by the DefaultHandler that loops forever doing nothing.

Once I placed a breakpoint at this function, I discovered the issue.

Regards.