I am working on freeRTOS V9.0 on Cortex M3. I have two application threads and 2 interrupts. Both the threads blocks on event which are posted by interrupts (I am using API ending with ISR from interrupts). Evevryting works fine if I have multiple thread and a single interrupt.
Have multiple randomobservation on my setup on each boot. Case-1: System hangs after starting RTOS. Both threads and Interrupts not working Case-2: Threads are not running but both the interrupts working ! Case-3: Threasds start running automatically after some time (about 60 seconds) after 10/20 interrupt processing Case-4: Everything works fine without any problem
240 is actually using 4 bits, but that shouldn’t matter because the
unimplemented bit will be ignored anyway.
Can you please say which chip you are using - if it is an STM32 then you
also have to explicitly tell it not to sub-divide the priorities. Are
you 100% sure it has three priority bits defined? We have had incidents
where documentation on this has been wrong, which is why the head
revision Cortex-M code in SVN has additional asserts() to actually
measure this to determine if the configuration file settings are correct.
Try setting configKERNEL_INTERRUPT_PRIORITY to 224, and if that does not
help, update to the latest version of port.c, which contains more
configASSERT() statements. Link assumes GCC, and the new asserts assume
either __NVIC_PRIO_BITS or configPRIO_BITS is set to 3 in
FreeRTOSConfig.h: https://sourceforge.net/p/freertos/code/HEAD/tree/trunk/FreeRTOS/Source/portable/GCC/ARM_CM3/