wrong behaviour of *pxPortInitialiseStack()

markuskrug wrote on Wednesday, December 29, 2010:


I found a problem with the initialization of the initial values for each Task in the *pxPortInitialiseStack() function.
The problem occured on a HCS12 Board that had a hard wired high value on the XIRQ (external interrupt) pin.
The above mentioned function sets the CCR register for every task to a value that will unmask the external interrupt as soon as the task becomes running. Because of the special hardware setup of my board that setting of the CCR register in the *pxPortInitialiseStack() leads immidiately to jump to the ISR of the XIRQ and no chance to get out of this anymore. Even worse the corresponding X-Bit in the CCR Register can not be set again after it had cleared once during runtime.
I wonder if the behaviour of *pxPortInitialiseStack() should be generally changed so that the X of the HCS12 will not be cleared by FreeRTOS. Probably other microcontrollers will have a similiar behaviour.
Any thoughts ?

Best Regards

davedoors wrote on Wednesday, December 29, 2010:

I think there is something about this in the bug tracker.