I am trying to run the latest demo project CORTEX_STM32F107_GCC_Rowley on my existing hardware(olimex stm32p107 rev b)-software setup using the latest stm32f10xSPL library and the olimex startup code. The setup is working with various applications outside of FreeRTOS.
My environment is Eclipse using GCC and OpenOCD.
I have a quite similar problem to this topic:http://www.freertos.org/FreeRTOS_Support_Forum_Archive/September_2011/freertos_Simple_test_is_ending_up_in_WWDG_IRQHandler_4720889.html
In fact I can track the execution into startFirstTask() where somehow the WWDG interrupt causes my application to hang:
The difference to the given topic is that in my case the WWDG is not set as default handler in the startup code and the required handler defines in freertosconfig.h are already existing:
.section .text.Default_Handler,"ax",%progbits Default_Handler: Infinite_Loop: b Infinite_Loop .size Default_Handler, .-Default_Handler
#define vPortSVCHandler SVC_Handler #define xPortPendSVHandler PendSV_Handler #define xPortSysTickHandler SysTick_Handler #define __NVIC_PRIO_BITS=4; /* Define configASSERT() to call vAssertCalled() if the assertion fails. The assertion has failed if the value of the parameter passed into configASSERT() equals zero. */ #define configASSERT(x) if(x == 0 ) vAssertCalled( __FILE__, __LINE__ ) /* This is the raw value as per the Cortex-M3 NVIC. Values can be 255 (lowest) to 0 (1?) (highest). */ #define configKERNEL_INTERRUPT_PRIORITY 255 /* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ #define configMAX_SYSCALL_INTERRUPT_PRIORITY 191 /* equivalent to 0xb0, or priority 11. */ /* This is the value being used as per the ST library which permits 16 priority values, 0 to 15. This must correspond to the configKERNEL_INTERRUPT_PRIORITY setting. Here 15 corresponds to the lowest NVIC value of 255. */ #define configLIBRARY_KERNEL_INTERRUPT_PRIORITY 15
I have to admit that my knowledge about FreeRTOS is quite limited as this is my first project.
As far as I understand, for some reason the WWDG is called instead of SVC_Handler but i honestly have no clue where it might be triggered from.
I would be very happy if i could get a hint, where to look at to get the scheduler running.
Thx in advance!