Hi,
I have been tasked with migrating to FreeRTOS 10.0.0 on my Atmel SAM4E8C(A) chip which was originally running the 7.3.0 kernel. It has not been as out-of-box replacement as my initial research impressed on me, but bear with me, as I am new to RTOS. I have updated the Atmel Software Framework (ASF) to 3.40 (from 3.34) to upgrade to FreeRTOS 10.0.0 (it does not seem like the ASF supports 10.2.1 yet, otherwise I would have gone for that, though the release notes do not indicate I am missing out for my MCU core). Atmel Studio 7 is my IDE, and I am using the standard Atmel ICE for debugging.
- Issue: The localuarthandler() has a xSemaphoreGiveFromISR macro that used to be defined as xQueueGenericSendFromISR (7.3.0) and is now xQueueGiveFromISR. While I think this makes sense, the following ASSERT condition is failing.
~~~
configASSERT( !( ( pxQueue->uxQueueType == queueQUEUEISMUTEX ) && ( pxQueue->pxMutexHolder != NULL ) ) );
~~~
Both the checks evaluate to TRUE, and hence the ASSERT fails. What am I supposed to do here, as these are 3rd party files that I really don’t want to hack around?
- Issue: I am also failing the Assert condition in the use of vPortEnterCritical().
~~~
configASSERT( ( portNVIC
INTCTRL
REG & portVECTACTIVEMASK ) == 0 );
~~~
What extra items need to be in place for this to pass in 10.0 that were not required in 7.3.0?
Side note:
I don’t feel this is relevant, but recognising gaps in my understanding: I found the ASF update did not acquire the correct type folder in …envatmelsrcASFthirdpartyfreertosfreertos-10.0.0SourceportableGCC. The original import was for ‘ARM
CM3′, while this should have been ‘ARMCM4F’ (my verification being that the #ifndef
VFP_FP check triggered a fail when switched to #ifdef). I directly copied this folder in at the relevant location and pointed the library search path to this.
Any help or suggestions would be much appreciated. Thanks.
Regards,
Aditya