Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Real time embedded FreeRTOS mailing list 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem TCP & FAT Training


STM32F2 hard fault

Posted by Gustaf Lindström on February 13, 2012

I'm trying to get FreeRTOS running on a STM32F205 but have not succeeded so far. I'm using version 7.10 and the portable for the ARM_CM3.

The code seems to run fine until vPortStartFirstTask. Stepping through the assembler instructions I get to "svc 0" after which a hard fault occurs.

void vPortStartFirstTask( void )
__asm volatile(
" ldr r0, =0xE000ED08 \n" /* Use the NVIC offset register to locate the stack. */
" ldr r0, [r0] \n"
" ldr r0, [r0] \n"
" msr msp, r0\n" /* Set the msp back to the start of the stack. */
" cpsie i\n" /* Globally enable interrupts. */
" svc 0\n" /* System call to start first task. */
" nop\n"

Is the current portable as of version 7.10 considered working on STM32F2:s or is there anything I have to modify to get it running?

Gustaf Lindström

RE: STM32F2 hard fault

Posted by Gustaf Lindström on February 13, 2012
EDIT: 7.10 should have been 7.1.0 of course.

RE: STM32F2 hard fault

Posted by Dave on February 13, 2012
The same FreeRTOS portable layer runs well on all cortex m3 parts from all manufactures.

Have you installed the interrupts in the vector table either directly or by #defining the FreeRTOS handler names to their CMSIS versions?

Have you configured the hardware to set all the hardware interrupt priority bits to be preemption bits and not subpriority bits?

That last point is particularly important on STM32 as most other manufacturers do that by default anyway.

RE: STM32F2 hard fault

Posted by Gustaf Lindström on February 13, 2012
Thanks for your reply!

I've modified stm32f2x_it.c as follows.

void SVC_Handler(void)

void PendSV_Handler(void)

void SysTick_Handler(void)



And regarding the interrupt priority bits I've done;

NVIC_SetVectorTable( NVIC_VectTab_FLASH, 0x0 );
NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 );

RE: STM32F2 hard fault

Posted by Dave on February 13, 2012
That might work for the SVC handler and the tick handler, but I think it won't work for the PendSV handler.

I suggest backing those changes out and instead adding the following lines to FreeRTOSConfig.h

#define vPortSVCHandler SVC_Handler
#define xPortPendSVHandler PendSV_Handler
#define xPortSysTickHandler SysTick_Handler

RE: STM32F2 hard fault

Posted by Gustaf Lindström on February 13, 2012
Thanks! That seems to have resolved the problem. I'm getting past the part giving the hard fault and am able to get a simple task running.

Gustaf Lindström

[ Back to the top ]    [ About FreeRTOS ]    [ Sitemap ]    [ ]

Copyright (C) 2004-2010 Richard Barry. Copyright (C) 2010-2016 Real Time Engineers Ltd.
Any and all data, files, source code, html content and documentation included in the FreeRTOSTM distribution or available on this site are the exclusive property of Real Time Engineers Ltd.. See the files license.txt (included in the distribution) and this copyright notice for more information. FreeRTOSTM and FreeRTOS.orgTM are trade marks of Real Time Engineers Ltd.

Latest News:

FreeRTOS V9.0.0 is now available for download.

Free TCP/IP and file system demos for the RTOS

Sponsored Links

⇓ Now With No Code Size Limit! ⇓
⇑ Free Download Without Registering ⇑

FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

Renesas Electronics Gold Alliance RTOS Partner.jpg

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers

Atmel RTOS partner supporting ARM Cortex-M3 and AVR32 microcontrollers

STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0

Xilinx Microblaze and Zynq partner

Silicon Labs low power RTOS partner

Altera RTOS partner for Nios II and Cortex-A9 SoC

Freescale Alliance RTOS Member supporting ARM and ColdFire microcontrollers

Infineon ARM Cortex-M microcontrollers

Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers

Cypress RTOS partner supporting ARM Cortex-M3

Fujitsu RTOS partner supporting ARM Cortex-M3 and FM3

Microsemi (previously Actel) RTOS partner supporting ARM Cortex-M3

Atollic Partner

IAR Partner

Keil ARM Partner

Embedded Artists