FreeRTOS on STM3210E-EVAL

filippospalla wrote on Tuesday, September 15, 2009:

I’m trying to port FreeRTOS on STM3210E-EVAL using STM32F10x_LIB_V3.0.1, GCC e RIDE 7.

It is the usual LED blinking task but I’ve got a crash within the vPortSVCHandler(). Instead run the Task I’m in HardFault_Handler().

Am I missing something??

I created the demo starting from CORTEX_STM32F103_IAR and I’m using port.c and portmacro.h as specified in FreeRTOS\Source\portable\GCC\ARM_CM3.
Then I have modified stm32f10x_it.c adding:

extern void xPortPendSVHandler( void ) __attribute__ (( naked ));
extern void xPortSysTickHandler( void );
extern void vPortSVCHandler( void ) __attribute__ (( naked ));

void SVC_Handler(void)
{
   vPortSVCHandler();
}

void PendSV_Handler(void)
{
   xPortPendSVHandler();
}

void SysTick_Handler(void)
{
   xPortSysTickHandler();
}

in order to connect the Interrupt handlers with the specific freeRTOS port handlers.

Thanks in adavance

edwards3 wrote on Tuesday, September 15, 2009:

Cortex ports do not need the naked attribute to be used so I suspect that is your problem. It would also be more efficient to either change the names of the handlers in port.c to match the names expected in the vector table (the functions are normally declared weak, so if you define a function with the same name it will get used) or populate the vector table with the names as they appear in the port.c file.