FreeRTOS ARM CM0 upgrade problem

We’ve recently attempted to upgrade our projects from FreeRTOS version 11.0.1 to 11.3.0 from the FreeRTOS-LTS Github repository. Our ARM CM7 and ARM CM4F projects are working, but our ARM CM0 projects (using SAMC21 MCU) hang on startup. Are there any notes on what needs to be changed when upgrading between FreeRTOS versions, for example any changes that may be needed to FreeRTOSConfig.h or to the application?

I found the problem. This assertion in xPortStartScheduler was failing:

     \* Validate that the application has correctly installed the FreeRTOS

     \* handlers for SVCall and PendSV interrupts. We do not check the

     \* installation of the SysTick handler because the application may

     \* choose to drive the RTOS tick using a timer other than the SysTick

     \* timer by overriding the weak function vPortSetupTimerInterrupt().

     \*

     \* Assertion failures here indicate incorrect installation of the

     \* FreeRTOS handlers. For help installing the FreeRTOS handlers, see

     \* https://www.freertos.org/Why-FreeRTOS/FAQs .

     \*

     \* Systems with a configurable address for the interrupt vector table

     \* can also encounter assertion failures or even system faults here if

     \* VTOR is not set correctly to point to the application's vector table. \*/

    configASSERT( pxVectorTable\[ portVECTOR_INDEX_SVC \] == SVC_Handler );

Our vector table source file (derived from the sample code from Atmel/Microchip) called that function SVCall_Handler instead of SVC_Handler and provided a weak definition of it. I guess the old version of FreeRTOS didn’t use the SVC instruction.

Right - the old version didn’t use SVC. Glad the assertions guided you to a quick solution. Hopefully most users doing this upgrade have CMSIS compliant names in their vector table, so they won’t run into this issue. But I have seen other legacy code that also uses the “SVCall_Handler” naming, so this could come up for other users in the future.